.PHONY: dev install run clean test dev: install TOKEN_ENCRYPTION_KEY_FILE=secrets/token_encryption_key \ uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload install: python3 -m venv venv && \ . venv/bin/activate && \ pip install -r requirements.txt run: TOKEN_ENCRYPTION_KEY_FILE=secrets/token_encryption_key \ uvicorn app.main:app --host 0.0.0.0 --port 8000 test: . venv/bin/activate && \ TOKEN_ENCRYPTION_KEY_FILE=secrets/token_encryption_key \ python3 -m pytest tests/ -v clean: rm -rf venv/ __pycache__ .pytest_cache find . -name '*.pyc' -delete docker-build: docker compose build docker-up: docker compose up -d docker-down: docker compose down key: python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())" user: TOKEN_ENCRYPTION_KEY_FILE=secrets/token_encryption_key \ python3 -c " import asyncio from app.database import init_db, async_session_factory from app.models import User from app.security import generate_api_key async def create(): await init_db() async with async_session_factory() as session: key, h = generate_api_key() u = User(api_key_hash=h, display_name='admin') session.add(u) await session.commit() print(f'User created. API key: {key}') asyncio.run(create()) "