.PHONY: help install dev build test clean docker-up docker-down docker-logs db-migrate db-reset # Default target help: @echo "Janua Development Commands" @echo "" @echo "Setup:" @echo " make install Install all dependencies" @echo " make clean Clean all build artifacts" @echo "" @echo "Development:" @echo " make dev Start development servers" @echo " make build Build all packages" @echo " make test Run all tests" @echo " make lint Run linters" @echo " make typecheck Run type checking" @echo "" @echo "Docker:" @echo " make docker-up Start Docker services" @echo " make docker-down Stop Docker services" @echo " make docker-logs View Docker logs" @echo " make docker-build Build Docker images" @echo "" @echo "Database:" @echo " make db-migrate Run database migrations" @echo " make db-reset Reset database" @echo " make db-seed Seed database with test data" # Install dependencies install: npm install cd apps/api && pip install -r requirements.txt cd apps/api && pip install -r requirements-dev.txt # Development dev: node scripts/require-local-services.mjs npm run dev # Build all packages build: npm run build # Run tests test: npm run test cd apps/api && pytest # Lint code lint: npm run lint cd apps/api && ruff check . # Type checking typecheck: npm run typecheck cd apps/api && mypy . # Clean build artifacts clean: node scripts/require-local-destructive.mjs rm -rf node_modules rm -rf apps/*/node_modules rm -rf packages/*/node_modules rm -rf apps/*/.next rm -rf apps/*/dist rm -rf packages/*/dist find . -type d -name "__pycache__" -exec rm -rf {} + find . -type f -name "*.pyc" -delete # Docker commands docker-up: node scripts/require-local-services.mjs docker-compose up -d docker-down: node scripts/require-local-destructive.mjs docker-compose down docker-logs: docker-compose logs -f docker-build: node scripts/require-local-services.mjs docker-compose build docker-restart: node scripts/require-local-services.mjs docker-compose restart # Database commands db-migrate: node scripts/require-local-db.mjs docker-compose exec api alembic upgrade head db-reset: node scripts/require-local-db.mjs docker-compose exec api alembic downgrade base docker-compose exec api alembic upgrade head db-seed: node scripts/require-local-db.mjs docker-compose exec api python -m scripts.seed_database # Production build build-prod: NODE_ENV=production npm run build cd apps/api && pip install -r requirements.txt --target ./dist # Deploy to staging (via Enclii on Hetzner) deploy-staging: @echo "Deploying to staging..." @echo "Run: enclii deploy --environment staging" @echo "Or manually: docker-compose -f deployment/staging/docker-compose.yml up -d" # Deploy to production (via Enclii on Hetzner) deploy-prod: @echo "Deploying to production..." @echo "Run: enclii deploy --environment production" @echo "Raw SSH/docker-compose production deploys are break-glass only. Record the Enclii adapter gap instead of normalizing raw access." # Run security scan security-scan: npm audit cd apps/api && pip-audit # Generate API documentation docs-api: cd apps/api && python -m scripts.generate_openapi > ../../docs/openapi.json # Start individual services start-api: node scripts/require-local-services.mjs cd apps/api && uvicorn main:app --reload --host 0.0.0.0 --port 8000 start-admin: cd apps/admin && npm run dev start-docs: cd apps/docs && npm run dev # Environment setup setup-env: cp .env.example .env cp apps/api/.env.example apps/api/.env cp apps/admin/.env.example apps/admin/.env @echo "Environment files created. Please update with your values."