Senior Capstone Project — Built for a Real Company
A production multi-tenant SaaS platform developed as my senior capstone project and actively built for an actual client launching a real product. Voice Up Athletics gives universities a centralized system to manage athletes, reporting, and administrative oversight — engineered from day one with enterprise security, Azure cloud infrastructure, and full CI/CD automation.
The backend is organized into three discrete layers to enforce separation of concerns:
| Layer | Responsibility |
|---|---|
| Core | Domain entities, business rules, interfaces |
| Infrastructure | EF Core, data access, external service integrations |
| API | Controllers, middleware, dependency injection, JWT validation |
Every entity inherits from a shared Tenant base, ensuring all data is scoped at the database level. Tenant resolution is driven by the Entra Tenant ID extracted from the validated JWT — no cross-tenant data leakage is possible by design.
Three distinct roles with scoped access at both the API middleware and data layer:
athlete-xxxx (role-specific ID scheme)WEBSITE_RUN_FROM_PACKAGE deployment modelBuilt true data isolation at the infrastructure level rather than relying on application-layer filtering. Every EF Core query is tenant-scoped, making cross-tenant data exposure impossible regardless of application code paths.
Implemented full OAuth 2.0 / OIDC flows with Microsoft Entra ID. The backend validates JWTs issued by Entra, extracts claims (including the tenant ID and role), and enforces authorization at the middleware layer before any controller logic runs.
A single ASP.NET Core Web API serves both the Next.js web client and the Expo React Native mobile app. Consistent auth, consistent data contracts — no duplicated backend logic.
Automated pipelines handle builds and deployments to Azure on every merge. This ensures the production environment is always in sync with main and eliminates manual deployment steps.
Senior Capstone Project — Actively developed for a real client | In Production on Azure