docs: sync from backend 8fc2309 — M43/M44 missing FKs + H37 dispute enums
This commit is contained in:
@@ -11,7 +11,7 @@ A bird's-eye view of both repos. For deep dives, follow the cross-links to [[Bac
|
||||
|
||||
## Backend — `/Users/mojtabaheidari/code/backend`
|
||||
|
||||
A service-oriented Express 5 app. Each business domain owns a folder under `src/services/` containing its routes, controllers, services, and (sometimes) its own models. Cross-cutting concerns live in `src/shared/` and `src/infrastructure/`.
|
||||
A service-oriented Express 5 app. Each business domain owns a folder under `src/services/` containing its routes, controllers, services, and repositories. Cross-cutting concerns live in `src/shared/` and `src/infrastructure/`. PostgreSQL + Drizzle ORM is the sole database layer as of v2.9.12 (Mongoose fully removed).
|
||||
|
||||
```
|
||||
backend/
|
||||
@@ -20,9 +20,13 @@ backend/
|
||||
│ ├── config/ # Sentry init (loaded before anything else)
|
||||
│ ├── controllers/ # Thin HTTP controllers for orphan endpoints (disputes, points)
|
||||
│ ├── routes/ # Router exports for orphan controllers above
|
||||
│ ├── models/ # Mongoose schemas (single source of truth for data)
|
||||
│ ├── models/ # (removed — Mongoose models deleted; schemas now in src/db/schema/)
|
||||
│ ├── db/ # PostgreSQL + Drizzle ORM — SOLE database layer (19 migrations, 32 tables)
|
||||
│ │ ├── schema/ # Drizzle table definitions (single source of truth for data)
|
||||
│ │ ├── migrations/ # SQL migration files (0000–0019)
|
||||
│ │ └── repositories/ # Drizzle-backed repository implementations
|
||||
│ ├── infrastructure/
|
||||
│ │ ├── database/ # Mongo connection + admin bootstrap
|
||||
│ │ ├── database/ # (removed — Mongoose connection code deleted)
|
||||
│ │ └── socket/ # Socket.IO server adapter & emitter helpers
|
||||
│ ├── services/ # Domain services — see breakdown below
|
||||
│ ├── shared/
|
||||
@@ -36,12 +40,11 @@ backend/
|
||||
├── __tests__/ # Jest suites (see Testing)
|
||||
├── scripts/ # Shell scripts (build/push, version, ngrok, reset)
|
||||
├── nginx/ # Nginx conf (production compose)
|
||||
├── mongo-init/ # Mongo initdb.d JS (one-time bootstrap)
|
||||
├── uploads/ # User uploads — mounted as volume
|
||||
├── Dockerfile.dev # Hot-reload image (ts-node + nodemon)
|
||||
├── Dockerfile.prod # Multi-stage build image (compiled JS, non-root user)
|
||||
├── docker-compose.dev.yml # Local stack: backend + mongo + redis
|
||||
├── docker-compose.production.yml # Prod stack: nginx + backend + frontend + mongo + redis
|
||||
├── docker-compose.dev.yml # Local stack: backend + postgres + redis
|
||||
├── docker-compose.production.yml # Prod stack: nginx + backend + frontend + postgres + redis
|
||||
├── .gitea/workflows/ # Gitea Actions CI
|
||||
├── healthcheck.js # Container HEALTHCHECK probe
|
||||
├── eslint.config.js # Flat ESLint config (TS strict)
|
||||
@@ -73,14 +76,19 @@ Each service folder follows the same shape: `<service>Routes.ts`, `<service>Cont
|
||||
| `redis/` | Redis client wrapper (caching, rate counters) |
|
||||
| `user/` | Profile, settings, role management |
|
||||
|
||||
### `src/models/`
|
||||
### `src/models/` (removed)
|
||||
|
||||
Each `.ts` file is a Mongoose model — see [[Data Models]] for full schema docs. Highlights:
|
||||
This directory no longer exists. All Mongoose models have been deleted. Data schemas are now defined as Drizzle table objects in `src/db/schema/`. See [[Data Models]] for the current PostgreSQL schema docs.
|
||||
|
||||
- `User`, `Address`, `Category` — identity & taxonomy
|
||||
- `PurchaseRequest`, `SellerOffer`, `RequestTemplate` — marketplace core
|
||||
- `Payment`, `PointTransaction`, `LevelConfig` — money + reputation
|
||||
- `Chat`, `Notification`, `Dispute`, `Review`, `BlogPost`, `ShopSettings`, `TempVerification` — supporting domains
|
||||
### `src/db/`
|
||||
|
||||
PostgreSQL + Drizzle ORM — the **sole** database layer (no Mongoose, no dual-write, no Mongo fallback). Highlights:
|
||||
|
||||
- `schema/` — Drizzle table definitions covering all 32 tables across 19 migrations (0000–0019)
|
||||
- `migrations/` — SQL migration files applied via `drizzle-kit`
|
||||
- `repositories/` — Drizzle-backed repository implementations returned exclusively by the repository factory
|
||||
- All domain stores use `PG_URL` (required); `MONGO_URI` / `MONGODB_URI` / `MONGO_CONNECT_MODE` are obsolete
|
||||
- IDs are PostgreSQL UUIDs (`.id` string field); `legacy_object_id` column preserves the original MongoDB ObjectId for `User` only
|
||||
|
||||
### `src/seeds/`
|
||||
|
||||
@@ -189,7 +197,7 @@ The production `docker-compose.yml` lives in `backend/` but references `../front
|
||||
| You want to add… | Put it under… |
|
||||
|---|---|
|
||||
| A new public API route | `backend/src/services/<domain>/<domain>Routes.ts` (or a new domain folder) |
|
||||
| A new Mongo schema | `backend/src/models/<Name>.ts` + export from `models/index.ts` |
|
||||
| A new database table | `backend/src/db/schema/<name>.ts` (Drizzle) + add a migration via `drizzle-kit generate` |
|
||||
| A reusable UI component | `frontend/src/components/<kebab-name>/` with `index.ts` + `component.tsx` + `types.ts` |
|
||||
| A page-specific block | `frontend/src/sections/<domain>/` |
|
||||
| A new dashboard page | `frontend/src/app/dashboard/<route>/page.tsx` |
|
||||
|
||||
Reference in New Issue
Block a user