A FastAPI backend that ingests lesson videos, transcribes them, generates summaries & feedback, creates exam papers, and grades student submissions using OpenAI models.
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
# Start a local Postgres instance (docker example)
docker run --name transcriptons-postgres -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres -e POSTGRES_DB=transcriptons -p 5432:5432 -d postgres:15
# Create environment file
cp .env.example .env
# then edit .env with your OpenAI key and Postgres DSN
# Run the application
uvicorn app.main:app --reload
Open http://localhost:8000/docs for Swagger UI.
This project uses Celery for background processing (e.g., video transcription). You must have a Redis server running (see the docker command below for local development).
Start a local Redis instance (if you don't have one running):
docker run --name transcriptons-redis -p 6379:6379 -d redis:7
Start the Celery worker:
celery -A app.tasks.video_processing.celery_app worker --loglevel=info
- The
-A app.tasks.video_processing.celery_app
flag tells Celery where to find the app instance. - The default broker is set to
redis://localhost:6379
in the code. You can change this inapp/tasks/video_processing.py
if needed.
app/
– FastAPI application modulesdata/videos/
– Stored uploadstests/
– Minimal API tests (coming soon)