Careeroza
Folder Structure
The Final Tree
shopease-api/ ├── prisma/ │ ├── schema.prisma │ ├── migrations/ │ └── seed.ts ├── src/ │ ├── main.ts # helmet, CORS, versioning, ValidationPipe, Swagger, shutdown hooks │ ├── app.module.ts # imports + APP_GUARD/APP_FILTER/APP_INTERCEPTOR │ ├── config/ # env.validation.ts, database.config.ts, ... │ ├── common/ │ │ ├── decorators/ # current-user, public, roles, auth (applyDecorators) │ │ ├── dto/ # pagination-query.dto.ts, page-meta.dto.ts │ │ ├── filters/ # all-exceptions.filter.ts, prisma-exception.filter.ts │ │ ├── guards/ # roles.guard.ts │ │ ├── interceptors/ # transform, timing, timeout │ │ ├── middleware/ # request-id, logger │ │ └── pipes/ # slug.pipe.ts │ ├── prisma/ # prisma.module.ts, prisma.service.ts │ ├── auth/ # strategies/, dto/, auth.service.ts, otp.service.ts │ ├── users/ │ ├── categories/ │ ├── products/ # dto/, products.controller.ts, products.service.ts, *.spec.ts │ ├── cart/ │ ├── orders/ # orders.gateway.ts, exceptions/, dto/ │ ├── payments/ # razorpay.service.ts, webhooks.controller.ts │ ├── notifications/ # emails.processor.ts, sms.module.ts │ ├── tasks/ # cron jobs │ └── health/ ├── test/ # *.e2e-spec.ts, jest-e2e.json ├── Dockerfile ├── docker-compose.yml ├── ecosystem.config.js └── .github/workflows/api.yml