best / Makefile
anky2002's picture
feat: Migrate to uv, autofill API, networking agent, cover letters page, AI usage dashboard, detailed health check, updated Makefile
9fd4ce5 verified
Raw
History Blame Contribute Delete
4.52 kB
.PHONY: help dev up down migrate seed lint test clean
help: ## Show this help
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'
# ============ Development ============
dev: ## Start all services for development
docker compose up -d db redis
@echo "⏳ Waiting for services..."
@sleep 3
@echo "✅ DB and Redis running"
@echo "Run 'make backend' and 'make frontend' in separate terminals"
backend: ## Run backend dev server (uv)
cd backend && uv run uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
frontend: ## Run frontend dev server
cd frontend && pnpm dev
worker: ## Run Celery worker (uv)
cd backend && uv run celery -A app.worker.celery_config.celery_app worker --loglevel=info
beat: ## Run Celery beat scheduler (uv)
cd backend && uv run celery -A app.worker.celery_config.celery_app beat --loglevel=info
up: ## Start everything with Docker Compose
docker compose up -d
down: ## Stop all Docker containers
docker compose down
logs: ## Tail all container logs
docker compose logs -f
# ============ Database ============
migrate: ## Create a new migration (usage: make migrate msg="add users table")
cd backend && uv run alembic revision --autogenerate -m "$(msg)"
upgrade: ## Run all pending migrations
cd backend && uv run alembic upgrade head
downgrade: ## Rollback last migration
cd backend && uv run alembic downgrade -1
seed: ## Seed database with sample data
cd backend && uv run python -m app.scripts.seed
# ============ Quality ============
lint: ## Run linters
cd backend && uv run ruff check . && uv run ruff format --check .
cd frontend && pnpm lint
format: ## Auto-format code
cd backend && uv run ruff check --fix . && uv run ruff format .
cd frontend && pnpm lint --fix
typecheck: ## Run type checking
cd backend && uv run mypy app/
cd frontend && pnpm tsc --noEmit
test: ## Run all tests
cd backend && uv run pytest -v --cov=app
cd frontend && pnpm test
test-backend: ## Run backend tests only
cd backend && uv run pytest -v --cov=app --cov-report=term-missing
test-e2e: ## Run end-to-end tests
cd frontend && uv run pytest e2e/ --base-url http://localhost:3000
# ============ Setup ============
install: ## Install all dependencies with uv
@echo "📦 Installing backend dependencies with uv..."
cd backend && uv sync
@echo "📦 Installing frontend dependencies with pnpm..."
cd frontend && pnpm install
@echo "📦 Installing playwright browsers..."
cd backend && uv run playwright install chromium
@echo "✅ All dependencies installed!"
install-dev: ## Install with dev dependencies
cd backend && uv sync --all-extras
cd frontend && pnpm install
setup: ## Full first-time setup
@echo "🚀 Setting up JobPortal..."
@command -v uv >/dev/null 2>&1 || { echo "Installing uv..."; curl -LsSf https://astral.sh/uv/install.sh | sh; }
@command -v pnpm >/dev/null 2>&1 || { echo "Installing pnpm..."; npm install -g pnpm; }
cp .env.example .env
$(MAKE) install
docker compose up -d db redis
@sleep 3
$(MAKE) upgrade
$(MAKE) seed
@echo ""
@echo "✅ Setup complete!"
@echo " Run 'make dev' to start DB & Redis"
@echo " Then 'make backend' and 'make frontend' in separate terminals"
@echo ""
@echo " Demo login: demo@jobportal.dev / demo123"
@echo " Admin login: admin@jobportal.dev / admin123"
# ============ uv shortcuts ============
lock: ## Update uv lock file
cd backend && uv lock
add: ## Add a dependency (usage: make add pkg=fastapi)
cd backend && uv add $(pkg)
add-dev: ## Add a dev dependency (usage: make add-dev pkg=pytest)
cd backend && uv add --dev $(pkg)
remove: ## Remove a dependency (usage: make remove pkg=fastapi)
cd backend && uv remove $(pkg)
# ============ Production ============
build: ## Build production images
docker compose -f docker-compose.prod.yml build
deploy: ## Deploy to production
./deploy/deploy.sh all
deploy-backend: ## Deploy backend only
./deploy/deploy.sh backend
deploy-frontend: ## Deploy frontend only
./deploy/deploy.sh frontend
# ============ Cleanup ============
clean: ## Remove all generated files and volumes
docker compose down -v
find . -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true
find . -type d -name .next -exec rm -rf {} + 2>/dev/null || true
find . -type d -name node_modules -exec rm -rf {} + 2>/dev/null || true
find . -type d -name .venv -exec rm -rf {} + 2>/dev/null || true
rm -f backend/uv.lock 2>/dev/null || true