Files

Backend — FastAPI REST API

REST API for authentication, user management, AI generation (text/image/video), and admin operations.

Tech Stack

Layer Choice
Framework FastAPI
Database DuckDB (embedded)
HTTP client httpx (OpenRouter proxy)
Auth JWT (access + refresh tokens)
Server uvicorn

Project Structure

backend/
  app/
    __init__.py          Package init (empty)
    main.py              FastAPI app — lifespan, CORS, router registration
    db.py                DuckDB singleton, schema migrations, write lock
    dependencies.py      Dependency injection (get_current_user, etc.)
    models/              Pydantic + DB models
      __init__.py
      auth.py            Auth schemas (login, register, token)
      users.py           User schemas
      ai.py              AI generation request/response schemas
    routers/             API route handlers
      __init__.py
      auth.py            POST /auth/login, /auth/register, /auth/logout
      users.py           GET/PUT /users/me, admin user management
      admin.py           GET /admin/stats, video job admin CRUD
      ai.py              GET /models
      generate.py        POST /generate/text, /generate/image, /generate/video
      images.py          GET/POST /images, /images/<id>/file
      models.py          Model cache management
    services/            Business logic
      __init__.py
      auth.py            Auth logic (password hashing, JWT)
      users.py           User CRUD
      openrouter.py      OpenRouter API client
      models.py          Model listing and cache
      video_worker.py    Background video generation worker
  tests/                 pytest suite
  Dockerfile             Production container
  requirements.txt       Runtime dependencies
  requirements-dev.txt   Dev dependencies

Running locally

cd backend
uvicorn app.main:app --reload --port 12015

API docs at http://localhost:12015/docs.

Running tests

pytest backend/tests/

Architecture

See docs/ARCHITECTURE.md for full documentation (arc42 template).