talks.kmt.studio is a headless Learning Management System (LMS) backend built with FastAPI, utilizing Supabase for database management and Cloudflare Stream for video content delivery.
-
Authentication & Authorization
- JWT-based authentication integrated with kmt.studio
- Comprehensive permission management with roles and groups
- Fine-grained access control for resources
-
Course Management
- Course creation, retrieval, and updates
- Video content management with Cloudflare Stream integration
- Content status tracking and processing hooks
-
User Activity Tracking
- Viewing history and progress tracking
- Learning time analytics
- User engagement metrics
-
Additional Features
- Group management with role-based permissions
- Media upload capabilities with Cloudflare R2
- Redis caching for enhanced performance
The project includes a Dockerfile for containerized deployment:
docker build -t talks-backend .
docker run -p 8080:8080 --env-file .env talks-backendYou'll need Poetry to manage dependencies for development:
- Install Poetry using pipx:
pipx install poetry- Install Poetry dotenv plugin:
poetry self add poetry-dotenv-plugin- Copy the environment template and configure your settings:
cp .env.example .env.dev- Start the development server:
poetry run startThe API will be available at http://localhost:8080.
When running the server, API documentation is available at:
- Swagger UI: http://localhost:8080/docs
- ReDoc: http://localhost:8080/redoc
app/
├── endpoints/ # API routes organized by feature
│ ├── auth/ # Authentication endpoints
│ ├── courses/ # Course management
│ ├── groups/ # Group management
│ └── ...
├── utils/ # Utility functions and services
│ ├── cloudflare/ # Cloudflare integration
│ ├── permission/ # Permission handling
│ └── ...
└── main.py # Application entry point
The project is under active development. See the CHANGELOG.md for the latest updates.
Run tests using pytest:
poetry run pytest