Copy .env.example to .env & populate variables
cp config/env/.env.example config/env/.envInstall dependencies:
envsubst
npm
uv
watchexecStart containers:
./scripts/dev.shUse act to run workflows locally for quick validation.
List all workflows:
act -lRun a specific job:
act -j {job-id}All writes should go through SQLAlchemy
Alembic updates & bulk SQLAlchemy updates must explicitly set updated_at
shadcn adds components under client/src/components/ui/
To ensure custom styles & behavior survive component updates, follow these conventions:
- Create custom component overrides under
client/src/components/ui/overrides/ - Import override components in app code instead of generated shadcn components
- Add ESLint rules to prevent direct imports of generated components & point to override paths