An open API service indexing awesome lists of open source software.

https://github.com/napoii/fpvsessions

FPVSessions πŸš€ – Self-hosted FPV Media Hub: πŸ“Ή browse, πŸ–ΌοΈ preview, 🏷️ tag, πŸ”— share & πŸ“‚ auto-organize your sessions in a clean dark UI.
https://github.com/napoii/fpvsessions

bootstrap drone dronevideo flask fpv fpvapp fpvfootage fpvfreestyle fpvmedia fpvsessions fpvtools gunicorn nginx selfhosted

Last synced: about 1 month ago
JSON representation

FPVSessions πŸš€ – Self-hosted FPV Media Hub: πŸ“Ή browse, πŸ–ΌοΈ preview, 🏷️ tag, πŸ”— share & πŸ“‚ auto-organize your sessions in a clean dark UI.

Awesome Lists containing this project

README

          

# FPVSessions πŸš€

A modern, self-hosted FPV (First-Person View) session browser and sharing app. Browse your recorded sessions, preview videos and images, manage tags, generate share links, and download original filesβ€”all in a clean, dark UI.

> Fast to set up, easy to use, and production-ready with Gunicorn + Nginx.

---

## Table of Contents

- [Features](#features-)
- [Quickstart (Local)](#quickstart-local-)
- [Project Structure](#project-structure-)
- [Auto organize & rename](#auto-organize--rename-)
- [Deployment (VPS)](#deployment-vps-)
- [Tech Stack](#tech-stack-)
- [License](#license)

---

![demo.preview.png](./demo.preview.png)

## Features ✨

- Session overview with stats (videos, images, size, duration)
- Inline video player and image grid with lightbox
- Share links for single videos (public share page with embed meta tags)
- Download buttons for videos, logs, blackbox files, and metadata
- Tags: add/remove and save per session
- Admin Settings page: rebuild sessions index, manage users and permissions, upload drone images, set FPV base folder
- Consistent dark UI with Bootstrap 5 + Font Awesome icons
- Tames your FPV file jungle: scans your raw camera/goggle/blackbox dumps, auto-sorts them into clean session folders, and can optionally rename files to a consistent pattern
- Automatic thumbnails for videos and images; handy session cover art
- Powerful search and filter by date, tags, and filename
- Works even without the web UI: the organizer scripts build the tidy folder structure that the app can browse later

---

## Quickstart (Local) πŸ§ͺ

1) Create and activate a virtual environment

```bash
python -m venv .venv
# Windows (PowerShell)
. .venv\\Scripts\\Activate.ps1
# Linux/macOS
# source .venv/bin/activate
```

2) Install dependencies

```bash
pip install -r FPVSession/requirements.txt
```

3) Run the app (development)

```bash
python FPVSession/wsgi.py
```

Open http://localhost:8007

> For production, use Gunicorn and (optionally) Nginx. See the Deployment section below.

---

## Project Structure πŸ“

```
My_FPV/
β”œβ”€ FPVSession/
β”‚ β”œβ”€ flask_app/
β”‚ β”‚ β”œβ”€ app.py, templates/, static/, utils/
β”‚ β”‚ └─ sessions_config.json, users.json
β”‚ β”œβ”€ wsgi.py
β”‚ └─ requirements.txt
└─ how-to-deploy/
β”œβ”€ deploy.readme.en.md
β”œβ”€ gunicorn.my_fpv.service
└─ nginx.conf
```

---

## Auto organize & rename πŸ—‚οΈ

Beat the FPV media chaos. FPVSessions can scan your source folders and:

- Group files by session (date/time range),
- Create a clean, consistent folder layout (e.g., FPV_Camera, Goggles, Blackbox, IMG, Meta),
- Optionally rename files to a canonical, sortable pattern,
- Generate thumbnails for quick browsing.

Where: see `auto_session_sorter/` for helper scripts like `1._Auto_rename.py` and `2._Auto_session.py`.

Use the organizer to prepare your library even if you don’t run the web UI yetβ€”the app will happily index and browse the structure later.

---

## Deployment (VPS) 🌐

A complete step-by-step guide (system user, venv, systemd service, and Nginx reverse proxy):

- πŸ‘‰ [how-to-deploy/deploy.readme.en.md](how-to-deploy/deploy.readme.en.md)

You can also find example service and Nginx configs here:

- `how-to-deploy/gunicorn.my_fpv.service`
- `how-to-deploy/nginx.conf`

---

## Tech Stack 🧰

- Backend: Flask
- Frontend: Bootstrap 5, Font Awesome
- Server: Gunicorn (WSGI), optional Nginx reverse proxy

---

## License βš–οΈ

This project is provided as-is. Add your chosen license here (e.g., MIT, Apache-2.0).