refactor: migrate backend to pnpm monorepo with Hono module architecture
- Replace Bun with pnpm 9 + Turborepo + tsx; apps/api renamed to apps/backend - Split backend into http/, modules/, lib/ layers mirroring tai-specguard - Add use-case + Result pattern, Problem Details RFC 7807, basePath /api/v1 - Mount Better Auth at /api/v1/auth, keep session-auth whitelist - Split Prisma schema into prisma/models/*, generate into generated/ - Rework packages/shared into lib/ + schemas/ with pagination DTOs - Implement health, groups, students, payments, waitlist modules - Add vitest suite with prisma mocks (21 tests), biome lint - Point web client to /api/v1/auth and /api/v1/groups/from-organization
This commit is contained in:
38
stack.md
38
stack.md
@@ -7,11 +7,12 @@ Este documento define la arquitectura, convenciones y especificaciones del stack
|
||||
## 1. Stack Tecnológico Principal
|
||||
|
||||
### Runtime & Monorepo Manager
|
||||
* **Runtime / Package Manager:** [Bun](https://bun.sh/) (última versión estable)
|
||||
* **Monorepo Tooling:** Bun Workspaces (opcionalmente orquestado con Turborepo)
|
||||
* **Runtime:** Node.js (>=20)
|
||||
* **Package Manager:** [pnpm](https://pnpm.io/) 9
|
||||
* **Monorepo Tooling:** pnpm workspaces + Turborepo
|
||||
|
||||
### Backend (`apps/api`)
|
||||
* **Framework:** [Hono](https://hono.dev/) (para Bun)
|
||||
### Backend (`apps/backend`)
|
||||
* **Framework:** [Hono](https://hono.dev/) (servido con `@hono/node-server`, ejecutado con `tsx`)
|
||||
* **ORM:** [Prisma](https://www.prisma.io/)
|
||||
* **Base de Datos:** PostgreSQL
|
||||
* **Autenticación:** [Better Auth](https://www.better-auth.com/)
|
||||
@@ -36,21 +37,24 @@ Este documento define la arquitectura, convenciones y especificaciones del stack
|
||||
```text
|
||||
gruperly/
|
||||
├── apps/
|
||||
│ ├── api/ # Servicio Backend (Bun + Hono)
|
||||
│ ├── backend/ # Servicio Backend (Node + Hono + tsx)
|
||||
│ │ ├── src/
|
||||
│ │ │ ├── db/ # Cliente e inicialización de Prisma
|
||||
│ │ │ ├── lib/ # Instancia de Better Auth y helpers
|
||||
│ │ │ ├── routes/ # Endpoints modularizados de Hono
|
||||
│ │ │ │ ├── auth.ts
|
||||
│ │ │ │ ├── groups.ts
|
||||
│ │ │ │ ├── students.ts
|
||||
│ │ │ │ ├── payments.ts
|
||||
│ │ │ │ └── waitlist.ts
|
||||
│ │ │ └── index.ts # Entry point de la API
|
||||
│ │ │ ├── http/ # Infraestructura HTTP (validate, problem-details, session-auth, ...)
|
||||
│ │ │ ├── lib/ # Prisma (cliente + UnitOfWork), pagination, email, helpers
|
||||
│ │ │ ├── modules/ # Módulos: health-check, auth, groups, students, payments, waitlist
|
||||
│ │ │ │ └── <módulo>/
|
||||
│ │ │ │ ├── routes.ts
|
||||
│ │ │ │ └── features/<accion>/{route,use-case}.ts
|
||||
│ │ │ ├── app.ts # Monta basePath('/api/v1') + rutas + notFound/onError (RFC 7807)
|
||||
│ │ │ ├── server.ts # Entry point (serve de @hono/node-server)
|
||||
│ │ │ └── logger.ts # pino + pino-pretty
|
||||
│ │ ├── prisma/
|
||||
│ │ │ ├── schema.prisma # Definición del modelo de datos
|
||||
│ │ │ └── generated/ # Cliente generado de Prisma (gitignoreado)
|
||||
│ │ ├── prisma.config.ts # Config de Prisma CLI (datasource URL, migrations)
|
||||
│ │ │ ├── schema.prisma # Generator + datasource simple
|
||||
│ │ │ ├── models/ # Modelos multi-archivo (auth.prisma, domain.prisma)
|
||||
│ │ │ └── migrations/
|
||||
│ │ ├── generated/ # Cliente generado de Prisma (gitignoreado, alias @generated/*)
|
||||
│ │ ├── prisma.config.ts # Config de Prisma CLI (datasource URL, migrations)
|
||||
│ │ ├── test/ # Tests vitest
|
||||
│ │ ├── tsconfig.json
|
||||
│ │ └── package.json
|
||||
│ │
|
||||
|
||||
Reference in New Issue
Block a user