Files
mta-sign/justfile
2026-01-20 22:25:25 -05:00

75 lines
1.8 KiB
Makefile

# Show available commands
default:
@just --list
# Setup Python project
init:
uv sync
fnm use
cd mta-sign-ui && pnpm install
# Build frontend and run FastAPI serving static files
run: build-ui
uv run python main.py
# Development mode: Next.js dev server + FastAPI backend (hot reload for both)
dev:
#!/usr/bin/env bash
set -e
echo "Starting FastAPI backend on :8000..."
uv run python main.py &
BACKEND_PID=$!
echo "Starting Next.js dev server on :3000..."
cd mta-sign-ui && pnpm dev &
FRONTEND_PID=$!
trap "kill $BACKEND_PID $FRONTEND_PID 2>/dev/null" EXIT
echo ""
echo "Development servers running:"
echo " Frontend: http://localhost:3000 (with hot reload)"
echo " Backend: http://localhost:8000 (API only)"
echo ""
wait
# Run only the backend (for when you want to run frontend separately)
dev-backend:
FRONTEND_ENABLE=false uv run python main.py
# Run only the frontend dev server
dev-frontend:
cd mta-sign-ui && pnpm dev
# Lint Python project with ruff
lint:
uv run ruff check .
# Auto fix Python lint with ruff
lint-fix:
uv run ruff check . --fix
# Run backend tests
test-backend:
uv run pytest tests/ -v
# Run frontend tests
test-frontend:
cd mta-sign-ui && pnpm test
# Run all tests
test: test-backend test-frontend
# Build frontend for production
build-ui:
cd mta-sign-ui && pnpm build
rm -rf static
cp -r mta-sign-ui/out static
# Build multi-arch container image
containers:
podman build --platform linux/arm64,linux/amd64 -f docker/Dockerfile --manifest chaos2theory/pi-mta-sign:test .
podman manifest push --all chaos2theory/pi-mta-sign:test
podman manifest rm chaos2theory/pi-mta-sign:test
# Build container image (local arch only)
build-container:
podman build -f docker/Dockerfile -t pi-mta-sign:local .