Overview¶
The Server is the FastAPI Backend, served by Uvicorn and launched with
mirumoji server (or uvicorn mirumoji.server.app:app)
It's Async-First → Routers are async def and blocking work is wrapped in asyncio.to_thread()
Layout
-
App→FastAPIApplication + Lifespan Handler -
Config→ Runtime Configuration -
Constants→ Shared Constants -
Dependencies→ Dependency-Injection Helpers -
Media→ Media File Handling -
Jobs→ In-Process Async Job Queue + Worker That Backs The Single + Batch Operations -
Database→SQLAlchemy Models+Repos→ Data-Access / Persistence Layer -
Models→PydanticSchemas -
Processing→ Transcription / Analysis Pipeline (Whisper, subtitles, text, LLM, audio, Anki) coordinated by theProcessor -
Routers→ HTTP Endpoints Grouped By Surface (audio, dictionary, health, jobs, LLM, profile, video) -
Modal Processing→ Optional Modal GPU-Offload Entry Points + Configuration