2.8 KiB
2.8 KiB
AGENTS.md
Architecture
apps/next: Next.js 16 frontend.apps/expo: Expo scaffold; only work here when explicitly requested.packages/backend/convex: self-hosted Convex functions, schema, and auth.packages/ui: shared shadcn-based UI components.tools: shared ESLint, Prettier, Tailwind, TypeScript, and Vitest config.- Local development uses host-run apps, local Convex on ports 3210/3211, and
its own data volume. Convex does not use Postgres unless a cloned project
explicitly enables the commented optional
POSTGRES_URLexample.
Protected and generated files
- Never edit
packages/backend/convex/_generated/**orpackages/backend/convex/http.ts. - Do not rename
apps/next/next.config.jsorapps/next/src/proxy.ts. - Preserve
typescript.ignoreBuildErrorsin Next config. - Do not modify Sentry config or
tools/tailwind/theme.cssunless requested. - Generated
.cache,.turbo,.local, and environment files are ignored.
Environment rules
- Local
devandstagingcome only from Infisical viascripts/with-env; it never falls back to.env*. - Run
infisical loginandinfisical initbefore local development. - Machine-generated values belong in
.local/<env>.generated.env; never put the generated Convex admin key in shared Infisical. - CI uses Gitea-injected secrets or
CI_ENV_FILEand must not call Infisical. - App code imports validated variables from
@/env, neverprocess.env. - Add cache-relevant variables to
turbo.jsonglobalEnv.
Code and dependency rules
- Use
constarrow functions instead of function declarations. - Add
.jsextensions to Convex generated-file imports. - Put custom frontend routes directly in
apps/next/src/appor normal route groups such asapps/next/src/app/(auth). - Extend the Convex
userstable for application user data; do not add a profile table by default. Authenticate protected functions. - Manage shared versions in root catalogs. Never run
bun updatein a package. - Run root
bun installand verify withbun lint:ws. - Update this guide when architecture or workflows change.
Local stack
bun db:up # start Convex and dashboard
bun dev:next # host Next + deploy/watch local Convex functions
bun db:down # stop and preserve Convex data
bun db:down:wipe # remove Convex volume and generated admin key
Local URLs: app http://localhost:3000, Convex http://localhost:3210,
dashboard http://localhost:6791.
Use INFISICAL_ENV=staging bun dev:next for staging services. Normal db:up
never connects to staging and does not start Postgres.
Validation
Use bun typecheck, never a production build for routine validation. The full
gate is SKIP_E2E=1 bun run ci:check; local-stack smoke e2e is bun test:e2e.
Pre-commit runs lint-staged serially and pre-push runs the bounded full gate.