The problem
Every route into the product - a purchase, an admin grant, a self-serve refund, a chargeback from the Stripe dashboard - has to end at the same answer about who can see what. So access is decided at a single entitlement gate rather than checked ad hoc per endpoint, and certificate issuance is idempotent from both the lesson-completion and quiz-submission paths, so either ordering mints exactly one certificate.
The system
What I built
- Designed a 42-table PostgreSQL schema across content, commerce, assessment and audit domains, managed through 42 Alembic migrations on async SQLAlchemy 2.0 and asyncpg.
- Developed 157 REST endpoints covering public content, gated member content, Stripe commerce and a 17-module admin panel, with role-based access control and immutable audit logging on every admin mutation.
- Implemented the entitlement gate as the single access-control boundary, with Stripe Checkout and webhook-driven fulfilment creating orders and entitlements, and admin, self-serve and Stripe-dashboard refund paths all revoking access consistently.
- Built a server-side assessment engine with configurable pass marks and attempt caps, all-or-nothing scoring for single- and multi-choice questions, and correct answers never serialised into learner payloads.
- Implemented idempotent certificate issuance gated on full lesson completion plus a passing attempt on every published module assessment.
- Built a 70-page React 19 front end with lazy-loaded routes, React Query cache-key factories, token-only theming and light/dark support.
- Wrote 582 backend tests across 45 Pytest modules plus 12 Playwright end-to-end suites including accessibility checks, with per-test isolated database sessions.
Stack
Python 3.12FastAPISQLAlchemy 2.0 (async)AlembicasyncpgPostgreSQL 16Pydantic v2SupabaseStripeMuxResendJinja2fpdf2ReportLabhttpxPyJWTPytestReact 19TypeScriptViteReact Router v8TanStack Query v5ZustandTailwind CSS v4Framer MotionAxiosPlaywrightRenderVercel
Skills applied
- Relational schema design and migrations
- Async backend architecture
- Payment integration and webhook fulfilment
- Entitlement and access-control modelling
- Refund and revocation flows
- Assessment scoring integrity
- Idempotent service design
- Audit logging
- Transactional email and in-app notifications
- PDF generation
- Design-token theming
- Accessibility testing
- End-to-end and unit test automation