This project is a full-stack Next.js App Router application with clean root-level separation:
frontend: Next.js app (UI, pages, API route handlers)backend: Prisma, auth, repositories, services, validators, payment logicshared: safe shared constants/typesproject-root/
frontend/
backend/
shared/
scripts/
.env.example
.gitignore
package.json
README.md
frontend contains:
src/app route groups:
(public), (auth), (user), (admin)api/* route handlers (thin controllers only)src/components/* (layout/ui/product/cart/checkout/admin/auth)src/hooks, src/store, src/styles, src/typespublic/uploads/* assets and imagesbackend contains:
prisma/schema.prisma, migrations, seedsrc/config/env.tssrc/db/prisma.tssrc/repositories/*src/services/*src/auth/*src/payment/*src/validators/*src/types/*src/utils/*shared contains:
shared/constants/routes.tsshared/constants/roles.tsshared/types/index.ts.env.example to frontend/.env (and optionally frontend/.env.local):DATABASE_URL="file:./dev.db"
AUTH_SECRET="change_this_to_a_long_random_secret"
NEXT_PUBLIC_APP_NAME="Lunark Wear"
ESEWA_GATEWAY_URL="https://rc-epay.esewa.com.np/api/epay/main/v2/form"
ESEWA_STATUS_URL="https://rc-epay.esewa.com.np/api/epay/transaction/status/"
ESEWA_PRODUCT_CODE="EPAYTEST"
ESEWA_SECRET_KEY="replace_with_esewa_secret"
DATABASE_URL="file:./dev.db" is resolved by backend Prisma initialization to backend/prisma/dev.db.
npm run prisma:generate
npm run db:seed
npm run dev
Other commands:
npm run lintnpm run buildnpm run startnpm run prisma:migratenpm run prisma:studionpm run migrate:old-datasuperadmin@erp.com / SuperAdmin@123user@erp.com / User@123frontend/src/app/api by Next.js requirement.@backend/* aliases.backend/src/payment/esewa.service.ts.