- Updated @prisma/client in shared package.json from ^6.0.0 to ^7.10.0. - Modified stack.md to include generated Prisma client directory and Prisma CLI config file. - Added prisma.config.ts for managing Prisma configuration, including datasource URL and migrations path.
3.7 KiB
3.7 KiB
AGENTS.md — Gruperly
Monorepo web + API para gestión de cobros grupales. Reglas optimizadas para agentes.
Stack & ejecutables de verdad
- Package manager / runtime: Bun (v1.4+,
package.jsonviene conworkspacesypackageManager: bun). Usabunpara instalar (bun install), scripts y filtros. No uses npm/yarn/pnpm. - Monorepo: Bun Workspaces orquestado con Turborepo (
turbo.json). Dependencias entre paquetes usanworkspace:*. - Los paquetes son Node
"type": "module".
Comandos
bun run typecheck— corretsc --noEmiten todos los paquetes vía turborepo. Es la verificación principal; correlo tras tocar código.bun run --filter @gruperly/api typecheck/... @gruperly/web typecheck— verificación de un solo paquete.bun run dev— levanta API (4000) y web (6173) con turborepo.- No hay script
linten ningún paquete;bun run lintno hace nada útil. No dependas de él. - Base de datos (API):
bun run db:generate/db:migrate/db:push/db:studio, o bienbun --filter @gruperly/api db:*.
Estructura y fronteras
apps/api— Backend Bun + Hono. Entry pointsrc/index.ts(montaBun.serve, puerto por defecto 4000 víaPORT). Rutas modulares ensrc/routes/. Prisma enprisma/schema.prisma.apps/web— Frontend React 19 + Vite + Tailwind v4. Entrysrc/main.tsx→src/router.tsx. Puerto 6173 (vite.config.ts).packages/shared— Esquemas Zod + tipos. Se consume como TS fuente directo (exportsapunta asrc/index.ts, sin build previo).@gruperly/sharedse resuelve víapathsen cada tsconfig de app.packages/config—tsconfig.base.json; todos los tsconfig lo extienden.
Gotchas operativos
- Prisma 7: requiere
apps/api/.env(conDATABASE_URL). El CLI leeapps/api/prisma.config.ts(datasourceurlvíaenv('DATABASE_URL')); el schema usaprovider = "prisma-client"con output enprisma/generated/prisma(gitignoreado; regenera conbun run db:generate). ElPrismaClientse importa desde../../prisma/generated/prisma/clienty se instancia con@prisma/adapter-pg. Sin.envel CLI falla; copia desdeapps/api/.env.example. - Turborepo solo lee lockfile textual
bun.lock(no el binariobun.lockb). Si se regenera, usabun install --save-text-lockfile. No versionesbun.lockb. .env,dist/,.turbo/están gitignoreados (que no te extrañe su ausencia).
Convenciones repo-específicas
- Frontend en español: copy de UI, comentarios y textos en español.
- Tailwind v4 con tokens en
@themedentro deapps/web/src/index.css(p. ej.--color-accent: #1e90ff). Se usan como clases auto-generadas:text-accent,bg-success-soft, etc. Radius por defecto0.75rem(rounded-xl). - Router NO es file-based (aunque
stack.mdlo diga): las rutas se declaran manualmente enapps/web/src/router.tsxconcreateRoute+addChildreny se registran vía module augmentation. Cada vista nueva debe añadirse ahí. - Nav (Inicio/Grupos/Cobros/Ajustes) vive en
apps/web/src/components/layout/nav-items.ts; es la fuente única paraBottomNav(móvil) ySidebar(desktop) — no dupliques la lista. - UI: primitivos propios en
apps/web/src/components/ui/(avatar, button, badge) más helpercn()ensrc/lib/utils.ts(clsx + tailwind-merge). Aunquestack.mdmencione Shadcn, todavía no está instalado (sin Radix); úsalos directos. - Layout mobile-first:
RootLayoutusa columnamax-w-mden móvil y dos columnas (Sidebar + contenidomax-w-6xl) enlg+.
Fuentes de contexto
stack.md— arquitectura y spec técnica de referencia (UI tokens exactos, stack por app).README.md— setup de la base de datos y comandos generales.