@@ -87,25 +87,37 @@ This API powers a full content management system for libraries with role-based a
8787## Project Structure
8888
8989```
90+ ├── .env.example # Env template (copy to .env)
91+ ├── .github/
92+ │ ├── workflows/ # CI (ci.yml), release (release.yml)
93+ │ └── pull_request_template.md
9094├── config/
9195│ ├── bucket-storage/ # Cloudinary setup
9296│ ├── cors/ # CORS config
93- │ ├── database/ # Schema, migrations, seed, storage
97+ │ ├── database/ # Schema, migrations, seed, storage, db
9498│ └── swagger.ts # OpenAPI spec
99+ ├── drizzle/ # SQL migrations and meta
95100├── src/
96101│ ├── config/ # Env validation (Zod)
97- │ ├── controllers/ # Request handlers
102+ │ ├── controllers/ # Request handlers
98103│ ├── middlewares/ # Auth, validation, error-handler, logger, rate-limiters
99104│ ├── routes/ # API route definitions
100105│ ├── services/ # Business logic (drizzle, email)
101- │ ├── types/ # TypeScript declarations
106+ │ ├── types/ # TypeScript declarations (e.g. express.d.ts)
102107│ ├── utils/ # Errors, validations, api-response
103108│ └── validations/ # Zod request schemas
104109├── tests/
105110│ ├── helpers/ # Mocks (Request, Response, session)
111+ │ ├── setup.ts
106112│ └── unit/ # Controllers, services, middlewares, routes, utils
107- ├── .github/workflows/ # CI pipeline
113+ ├── scripts/ # git-flow and tooling
108114├── index.ts # App entry point
115+ ├── drizzle.config.ts
116+ ├── jest.config.js
117+ ├── tsconfig.json
118+ ├── package.json
119+ ├── pnpm-lock.yaml
120+ ├── pnpm-workspace.yaml
109121└── render.yaml # Render deployment config
110122```
111123
0 commit comments