mirror of
https://github.com/himanshudongre/smriti.git
synced 2026-08-28 05:14:59 +00:00
101 lines
4.1 KiB
Makefile
101 lines
4.1 KiB
Makefile
.PHONY: help dev dev-local dev-postgres up down test test-unit test-int lint format migrate setup setup-local setup-postgres
|
|
|
|
VENV := cd backend && source .venv/bin/activate &&
|
|
|
|
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}'
|
|
|
|
# ── Docker ───────────────────────────────────────────────────────────────────
|
|
|
|
up: ## Start all services
|
|
docker compose up -d
|
|
|
|
up-build: ## Rebuild and start all services
|
|
docker compose up -d --build
|
|
|
|
down: ## Stop all services
|
|
docker compose down
|
|
|
|
logs: ## Follow logs
|
|
docker compose logs -f
|
|
|
|
# ── Backend ──────────────────────────────────────────────────────────────────
|
|
|
|
dev: ## Run backend dev server with configured DB mode (requires venv)
|
|
$(VENV) uvicorn app.main:app --reload --port 8000
|
|
|
|
dev-local: ## Run backend in local-first SQLite mode
|
|
$(VENV) SMRITI_DB_MODE=local uvicorn app.main:app --reload --port 8000
|
|
|
|
dev-postgres: ## Run backend in Postgres mode
|
|
$(VENV) SMRITI_DB_MODE=postgres uvicorn app.main:app --reload --port 8000
|
|
|
|
test: ## Run all backend tests
|
|
$(VENV) python -m pytest -v
|
|
|
|
test-unit: ## Run backend unit tests
|
|
$(VENV) python -m pytest tests/unit/ -v
|
|
|
|
test-int: ## Run backend integration tests
|
|
$(VENV) python -m pytest tests/integration/ -v
|
|
|
|
test-cov: ## Run tests with coverage
|
|
$(VENV) python -m pytest --cov=app --cov-report=term-missing -v
|
|
|
|
lint: ## Lint backend code
|
|
$(VENV) ruff check .
|
|
|
|
format: ## Format backend code
|
|
$(VENV) ruff format .
|
|
|
|
# ── Database ─────────────────────────────────────────────────────────────────
|
|
|
|
migrate: ## Run database migrations for Postgres/shared mode
|
|
$(VENV) SMRITI_DB_MODE=postgres alembic upgrade head
|
|
|
|
migration: ## Create a new migration (usage: make migration msg="add users table")
|
|
$(VENV) alembic revision --autogenerate -m "$(msg)"
|
|
|
|
# ── Frontend ─────────────────────────────────────────────────────────────────
|
|
|
|
dev-frontend: ## Run frontend dev server locally
|
|
cd frontend && npm run dev
|
|
|
|
test-frontend: ## Run frontend tests
|
|
cd frontend && npm test
|
|
|
|
build-frontend: ## Build frontend for production
|
|
cd frontend && npm run build
|
|
|
|
install-frontend: ## Install frontend dependencies
|
|
cd frontend && npm install
|
|
|
|
# ── Setup ────────────────────────────────────────────────────────────────────
|
|
|
|
install: ## Install all dependencies (creates venv, installs CLI + MCP server)
|
|
cd backend && python3 -m venv .venv && source .venv/bin/activate && pip install -e ".[dev]"
|
|
cd cli && ../backend/.venv/bin/pip install -e .
|
|
cd frontend && npm install
|
|
|
|
setup: setup-local ## Default solo setup (local-first SQLite)
|
|
|
|
setup-local: ## Solo setup: venv + deps + local SQLite path, no Docker
|
|
cp -n .env.example .env || true
|
|
mkdir -p "$$HOME/.smriti"
|
|
$(MAKE) install
|
|
@echo "\n✅ Setup complete!"
|
|
@echo " Mode: local SQLite"
|
|
@echo " Local DB path: $${SMRITI_LOCAL_DB_PATH:-$$HOME/.smriti/smriti.db}"
|
|
@echo " Activate the CLI: source backend/.venv/bin/activate"
|
|
@echo " Start backend: make dev-local"
|
|
@echo " Start frontend: make dev-frontend"
|
|
|
|
setup-postgres: ## Shared/team setup: venv + deps + Docker Postgres + migrations
|
|
cp -n .env.example .env || true
|
|
$(MAKE) install
|
|
docker compose up -d postgres
|
|
$(MAKE) migrate
|
|
@echo "\n✅ Postgres setup complete!"
|
|
@echo " Activate the CLI: source backend/.venv/bin/activate"
|
|
@echo " Start backend: make dev-postgres"
|
|
@echo " Start frontend: make dev-frontend"
|