No description
- Python 56.6%
- HTML 41.7%
- Dockerfile 1.7%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| static | ||
| templates | ||
| videos | ||
| .env.example | ||
| .gitignore | ||
| app.py | ||
| compose.yml | ||
| Dockerfile | ||
| LICENSE | ||
| README.md | ||
| requirements.txt | ||
| TODO.md | ||
Slide & Seek
A simple interface for uploading videos and generating direct links, meant to be embedded in a presentation (click an image → open the link → play the video).
How it works
- The admin interface (
/) is protected by HTTP Basic authentication: upload and delete videos. - Each video is stored in
/v/under a random name (32 hexadecimal characters), with no possible collision. - Each video is publicly accessible, without authentication, via
https://domain.fr/v/filename.mp4.
Project structure
SlideNSeek/
├── app.py # Flask application
├── templates/index.html # Admin interface
├── requirements.txt
├── Dockerfile
├── docker-compose.yml
├── .env.example
└── videos/ # Volume mounted to /v/ inside the container
Environment variables
| Variable | Description |
|---|---|
AUTH_USER |
Login username for the admin interface |
AUTH_PASSWORD |
Login password for the admin interface |
SECRET_KEY |
Flask secret key (generate with openssl rand -hex 32) |
Copy .env.example to .env and fill in real values before any deployment:
cp .env.example .env
Local testing
With Docker (recommended)
cd SlideNSeek
docker compose up -d --build
Interface: http://localhost:8080
Credentials: those set in .env.
Stop:
docker compose down
Without Docker
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
export AUTH_USER=admin
export AUTH_PASSWORD=changeme
export SECRET_KEY=test
python app.py
The /v/ directory must be writable, or adjust VIDEO_DIR in app.py to a local folder for this test mode.