Legal Services Platform
Full-stack engineer on a microservices platform powering member enrollment, partner portals, and service request management for a legal services provider.
A legal technology company providing prepaid legal services and identity theft protection to individuals and businesses across North America
Project Overview
Served as a Full-Stack Engineer building and maintaining the platform that powers a legal services provider’s member enrollment, partner operations, and service request management. The system serves thousands of members seeking legal assistance and the partners who fulfill those service requests.
The Platform
The architecture consists of a microservices ecosystem orchestrated with Docker, featuring a Ruby on Rails API backend and multiple specialized Angular frontend applications:
Member-Facing Applications
- Enrollment Portal: Multi-step enrollment flow with identity verification, payment processing, and plan selection
- Account Management: Member dashboard for managing subscriptions, viewing benefits, and updating personal information
- Checkout: Streamlined purchase flow with regional variants for US and UK markets
Partner & Operations Applications
- Partner Portal: Interface for law firms and providers to manage service requests, track resolutions, and communicate with members
- Admin Dashboard: Internal tool for operations staff to manage members, review applications, and handle escalations
- Groups Management: B2B portal for managing employer-sponsored legal plans
People Management
- People Platform: Comprehensive member management with search, filtering, and detailed profile views
Technical Architecture
Backend Services
The backend is powered by a Ruby on Rails API handling core business logic:
- Framework: Rails with PostgreSQL for primary data storage
- Search: Elasticsearch 7.1 for indexing users, service requests, and searchable content
- Caching: Redis for session management and performance optimization
- Testing: RSpec for comprehensive backend test coverage
Frontend Applications
Ten Angular applications share a common architecture:
- Framework: Angular 7.2 - 8.2 with TypeScript
- Server Rendering: Express.js for SSR and middleware
- Feature Flags: LaunchDarkly for gradual rollouts and A/B testing
- Error Tracking: Raygun for production error monitoring
- Testing: Karma and Jasmine for unit tests, Protractor for E2E
Shared Data Layer
A critical contribution was the shared TypeScript library providing type-safe data access:
- 67 Model Classes: TypeScript interfaces mirroring backend API responses (User, Account, Subscription, ServiceRequest, etc.)
- 86 Repository Classes: Data access services implementing the repository pattern for consistent API communication
- 39 Enum Definitions: Type-safe constants for statuses, types, and categories
This library enabled all frontend applications to share a single source of truth for data models, reducing duplication and ensuring consistency.
Test Data Factory Library
Built a comprehensive test data generation library to accelerate development:
- Faker.js Integration: Realistic mock data generation
- Rosie Builder Pattern: Complex object graph construction
- 25+ Factory Classes: Builders for all major domain models
- Angular Module: Drop-in integration for Angular test suites
Key Contributions
Shared Library Architecture
Designed and maintained the shared data layer library that became the foundation for all frontend development:
- Repository pattern providing consistent API access across applications
- ViewModel extensions for frontend-specific computed properties
- Semantic versioning with 8+ major releases
- npm package distribution for easy consumption
Search Infrastructure
Integrated Elasticsearch to power advanced search capabilities:
- User search with filtering by status, region, and membership type
- Service request search with faceted navigation
- Real-time indexing for up-to-date search results
Multi-Application Development
Contributed features across multiple Angular applications:
- Enrollment flows with identity verification
- Partner service request management
- Admin tools for member support
- Account management features
Testing Infrastructure
Built the factory library that enabled rapid test development:
- Consistent test data across all applications
- Complex relationship building (users with accounts, subscriptions, payment methods)
- Enum coverage for all domain constants
Development Environment
Docker Compose orchestrated the entire development environment:
- All services running locally with hot reload
- PostgreSQL, Elasticsearch, and Redis containers
- Consistent environment across team members
- Single command startup for the full stack
Technologies Deep Dive
The technology choices supported a large, distributed team working on multiple applications:
- Angular provided a robust framework for building complex SPAs with strong typing
- TypeScript enabled the shared library approach with compile-time type checking
- Ruby on Rails offered a mature, convention-based backend framework
- Elasticsearch powered fast, relevant search across large datasets
- Docker Compose simplified local development of the multi-service architecture
- LaunchDarkly enabled safe feature rollouts and experimentation
Technologies
Key Highlights
- Developed multiple Angular applications for member enrollment, partner management, and account administration
- Built shared TypeScript data layer library used across all frontend applications
- Created test data factory library enabling rapid development and comprehensive testing
- Implemented Elasticsearch integration for advanced user and service request search
- Orchestrated multi-service architecture with Docker Compose for local development