A full-stack Learning Management System built for a large Southeast-based property management firm operating 310+ communities across multiple states. In production since early 2010, the platform has tracked the delivery and completion of more than 73,000 online courses across a distributed on-site workforce.
The platform serves two core needs: regulatory compliance training (HUD, LIHTC, Rural Development, and related affordable-housing programs) and general employee onboarding. Content is delivered to property managers, leasing staff, and maintenance teams spread across hundreds of physical sites. Completion tracking, credentialing, and award issuance roll up to workgroup and organizational views for supervisors and compliance officers.
I designed, built, and continue to maintain the system as the solo architect and developer. The original platform (v1) has been running continuously since 2010. The current release is a ground-up re-architecture on .NET and Next.js that preserves the full feature set and historical data while modernizing the stack. It remains under active development — more than 900 commits and 170 merged pull requests to date, with an upgrade to .NET 10 LTS under way.
Platform capabilities:
- Core domain — users, workgroups, content, assignments, learning tracks, credentials, awards, and event scheduling with registration tracking
- Ask AI — learners can ask questions about a course or resource and get answers grounded in its uploaded source documents, including from inside the course player
- SCORM content delivery — interactive course modules served from Azure Blob Storage, launched from the package manifest, with attempt progress saved so learners can resume where they left off, and support for packages larger than 2 GB
- Assignment attachments — certificates and signed forms stored alongside the training records they support
- Self-service accounts — password change, plus rate-limited sign-in and password reset
- Integration API — a documented partner API secured by administrator-issued API keys, with key management in the admin UI and a full request audit log
Architecture:
- .NET 8 Web API — minimal API endpoints, clean architecture (Web.API / Application / Persistence), EF Core against Azure SQL
- Dual authentication — JWT sessions for people and hashed API keys for systems, enforced by role-aware endpoint filters
- Security hardening — allow-list request models to prevent over-posting, least-privilege data access by role, sanitized error responses with trace IDs, signed URLs for stored media, and secret scanning on every pull request
- Next.js frontend — App Router, Redux Toolkit + RTK Query, Material-UI, TanStack Table, and dynamic forms via JSONForms
- Testing — xUnit unit and integration test suites covering the API
- Infrastructure — containerized deployments to Azure App Service via Azure Container Registry, GitHub Actions CI/CD with health-checked zero-downtime deploys and preview slots
Technologies used:
- .NET 8, ASP.NET Core Web API, Entity Framework Core
- Next.js 14, React 18, TypeScript, Redux Toolkit / RTK Query
- Material-UI, TanStack Table, JSONForms, Syncfusion, SCORM
- Azure OpenAI, Microsoft.Extensions.AI
- Azure SQL Database, Azure Blob Storage, Azure App Service, Azure Container Registry
- Postmark transactional email
- Docker, Tilt, GitHub Actions CI/CD
- xUnit, NSubstitute, Shouldly
