User interface built on NiceGUI for the Sunet transcription service (Sunet Scribe).
This project is developed by Sunet. Contributor: Kristofer Hallin.
This project is licensed under the Apache License, Version 2.0. See LICENSE for details.
Copyright (c) 2025-2026 Sunet. Contributor: Kristofer Hallin.
Contributions are welcome! Please feel free to open issues or submit pull requests.
- Transcription Interface: Upload and manage audio/video transcription jobs
- Real-time Updates: Live job status tracking and notifications
- User Dashboard: View and manage transcription history
- OIDC Authentication: Secure login via OpenID Connect
- Redis Storage: Optional Redis backend for session storage
- Python 3.13+
- uv (recommended package manager)
- Redis (recommended for production)
git clone <repository-url>
cd scribe-ui
uv syncCreate a .env file in the project root with the following settings:
# API configuration
API_URL="http://localhost:8000"
# OIDC configuration
OIDC_APP_REFRESH_ROUTE="http://localhost:8000/api/refresh"
OIDC_APP_LOGIN_ROUTE="http://localhost:8000/api/login"
OIDC_APP_LOGOUT_ROUTE="http://localhost:8000/api/logout"
# Storage configuration
STORAGE_SECRET="your-secret-key"
NICEGUI_REDIS_URL="redis://localhost:6379" # Optional: Redis storage URLuv run main.pyThe application will be available at http://localhost:8888.
Using NiceGUI together with Redis is recommended to avoid having user data written to disk. This project includes nicegui[redis] as a dependency.
To run a Redis instance without persistent data storage:
docker run -d -p 6379:6379 redis redis-server --save ''Build and run with Docker:
docker build -t scribe-ui .
docker run -p 8888:8888 --env-file .env scribe-uiRun tests with pytest:
uv run pytestscribe-ui/
├── main.py # NiceGUI application entry point
├── components/ # Reusable UI components
├── pages/ # Page definitions
├── db/ # Database operations
├── utils/ # Utilities and settings
├── static/ # Static assets
└── tests/ # Test files