Screenshots



Background & challenge
The full purchase flow — plan selection, online payment, activation and notifications — had to run automatically, while the operator needed an admin panel for orders and customers. Payment status had to be synchronized reliably through webhooks, never trusting front-end redirects alone.
Solution
Built on Next.js App Router, Prisma and PostgreSQL: Stripe Checkout hosts the payment page so no card data touches the app, signature-verified webhooks update order status and trigger email notifications, the admin panel covers orders, fulfillment and customers, and a self-service page lets customers check their own subscription status.
Outcomes
- Complete online payment loop with Stripe Checkout and webhooks
- Admin panel covering orders, fulfillment and customer management
- Customer self-service page reduces manual support workload
- Vitest test suite and Docker Compose environment for maintainability