How hasanasiabd/ecommerce works
MyShop is a Next.js storefront with customer accounts, persistent cart and wishlist, Stripe checkout, and separate admin and developer panels. The main purchase path is browsing products, maintaining a cart, creating a payment session, and receiving payment updates; account registration adds email OTP verification, while developers manage admin accounts and admins manage catalog and orders. The graph preserves these domains and the shared authentication and persistence layer. Some pages and routes were not sampled, so their internal calls and UI-to-API wiring are not asserted.
Main entry points: db.ts Application database · auth.ts Session auth · stripe.ts Stripe client · navbar.tsx Store navigation
Components 30
Storefront
- Storefront pages
src/app - Store navigation
src/components/navbar.tsx - Product catalog API
src/app/api/products/route.ts - Category API
src/app/api/categories/route.ts
Accounts
- Account pages
src/app/login/page.tsx - Login API
src/app/api/auth/login/route.ts - Registration API
src/app/api/auth/register/route.ts - OTP verification API
src/app/api/auth/verify-otp/route.ts - OTP service
src/lib/otp.ts - Session auth
src/lib/auth.ts - Resend service
src/lib/resend.ts
Commerce
- Cart API
src/app/api/cart/route.ts - Wishlist API
src/app/api/wishlist/route.ts - Checkout session API
src/app/api/checkout/session/route.ts - Checkout status API
src/app/api/checkout/status/route.ts - Checkout cancel API
src/app/api/checkout/cancel/route.ts - Customer orders API
src/app/api/orders/route.ts - Payment webhook
src/app/api/stripe/webhook/route.ts - Stripe client
src/lib/stripe.ts
Management
- Admin panel
src/app/admin - Admin catalog and orders APIs
src/app/api/admin - Developer panel
src/app/developer - Admin account API
src/app/api/developer/admins/route.ts - Image upload API
src/app/api/admin/upload/route.ts - Cloudinary client
src/lib/cloudinary.ts
Shared services
- Application database
src/lib/db.ts - Panel configuration
src/lib/env.ts
Other components
- Customer
- Stripe
- Email delivery
Connections 41
- Login API → OTP service: creates OTP
src/app/api/auth/login/route.ts - Login API → Resend service: sends code
src/app/api/auth/login/route.ts - Login API → Application database: checks account
src/app/api/auth/login/route.ts - Login API → Session auth: creates session
src/app/api/auth/login/route.ts - Registration API → OTP service: creates OTP
src/app/api/auth/register/route.ts - Registration API → Resend service: sends code
src/app/api/auth/register/route.ts - OTP verification API → OTP service: verifies code
src/app/api/auth/verify-otp/route.ts - OTP verification API → Application database: creates account
src/app/api/auth/verify-otp/route.ts - OTP verification API → Session auth: creates session
src/app/api/auth/verify-otp/route.ts - OTP service → Application database: stores codes
src/lib/otp.ts - Session auth → Application database: validates user
src/lib/auth.ts - Cart API → Session auth: checks session
src/app/api/cart/route.ts - Cart API → Application database: reads and writes
src/app/api/cart/route.ts - Wishlist API → Session auth: checks session
src/app/api/wishlist/route.ts - Wishlist API → Application database: reads and writes
src/app/api/wishlist/route.ts - Product catalog API → Application database: reads catalog
src/app/api/products/route.ts - Category API → Application database: reads categories
src/app/api/categories/route.ts - Checkout session API → Session auth: checks session
src/app/api/checkout/session/route.ts - Checkout session API → Application database: locks stock and orders
src/app/api/checkout/session/route.ts - Checkout session API → Stripe client: creates payment session
src/app/api/checkout/session/route.ts - Stripe client → Stripe: connects to
- Checkout status API → Session auth: checks session
src/app/api/checkout/status/route.ts - Checkout status API → Application database: reads order state
src/app/api/checkout/status/route.ts - Checkout status API → Stripe client: uses payment client
src/app/api/checkout/status/route.ts - Checkout cancel API → Session auth: checks session
src/app/api/checkout/cancel/route.ts - Checkout cancel API → Application database: updates order
src/app/api/checkout/cancel/route.ts - Checkout cancel API → Stripe client: uses payment client
src/app/api/checkout/cancel/route.ts - Payment webhook → Application database: updates payment records
src/app/api/stripe/webhook/route.ts - Payment webhook → Stripe client: uses payment client
src/app/api/stripe/webhook/route.ts - Customer orders API → Session auth: checks session
src/app/api/orders/route.ts - Customer orders API → Application database: reads orders
src/app/api/orders/route.ts - Admin catalog and orders APIs → Session auth: checks session
src/app/api/admin/products/route.ts - Admin catalog and orders APIs → Application database: manages records
src/app/api/admin/products/route.ts - Admin account API → Session auth: checks session
src/app/api/developer/admins/route.ts - Admin account API → Application database: manages admins
src/app/api/developer/admins/route.ts - Admin account API → Panel configuration: reads panel path
src/app/api/developer/admins/route.ts - Image upload API → Cloudinary client: uploads images
src/app/api/admin/upload/route.ts - Store navigation → Session auth: reads session
src/components/navbar.tsx - Store navigation → Panel configuration: gets panel paths
src/components/navbar.tsx - Store navigation → Application database: counts cart items
src/components/navbar.tsx - Store navigation → Storefront pages: links storefront
src/components/navbar.tsx