FastAPI backend for archive
Go to file
2026-11-07 17:39:34 +00:00
core refactoring 2026-11-07 17:27:59 +00:00
models refactoring 2026-11-07 17:27:59 +00:00
routers first commit 2026-11-07 11:40:36 +00:00
schemas refactoring 2026-11-07 17:27:59 +00:00
search refactoring 2026-11-07 17:27:59 +00:00
services refactoring 2026-11-07 17:27:59 +00:00
static refactoring 2026-11-07 17:27:59 +00:00
utils refactoring 2026-11-07 17:28:49 +00:00
.gitignore fix photo model 2026-11-07 12:19:03 +00:00
docker-compose.yml refactoring 2026-11-07 17:27:59 +00:00
main.py first commit 2026-11-07 11:40:36 +00:00
README.md refactoring 2026-11-07 17:39:34 +00:00
requriments.txt first commit 2026-11-07 11:40:36 +00:00

RSS / Archive Backend

Бэкенд для домашнего архива медиафайлов (видео, аудио, фото). Проект представляет собой асинхронное API на FastAPI, которое собирает данные из локальных директорий, агрегирует их в PostgreSQL и отдает на фронтенд.

Технологический стек

  • Язык: Python 3.14+
  • Фреймворк: FastAPI
  • База данных: PostgreSQL 16 (Docker)
  • ORM: SQLAlchemy 2.0 (Async) + psycopg (async)
  • Валидация: Pydantic v2
  • Сервер: Uvicorn

Архитектура проекта

RSS/
├── core/               # Конфигурация и подключение к БД
│   ├── config.py       # Пути к медиа, константы
│   └── db.py           # Движок SQLAlchemy, Base, SessionLocal
├── models/             # SQLAlchemy-модели (таблицы)
│   ├── video_model.py
│   ├── audio_model.py
│   └── photo_model.py
├── schemas/            # Pydantic-схемы (валидация и сериализация)
│   ├── video_schemas.py
│   ├── audio_schemas.py
│   └── photo_schemas.py
├── routers/            # Эндпоинты API
│   ├── video.py
│   ├── audio.py
│   ├── photo.py
│   └── ...
├── utils/              # Скрипты синхронизации (парсеры)
│   ├── update_videos.py
│   ├── update_audio.py
│   └── update_thumbs.py
├── media/              # Медиафайлы (монтируется в контейнер/отдается статикой)
│   ├── yt/             # Видео
│   ├── audio/          # Аудио
│   ├── _thumbs/        # Превью для видео
│   ├── _covers/        # Обложки для аудио
│   └── photos/         # Фото
├── main.py             # Точка входа, подключение роутеров и статики
└── requirements.txt

Запуск

1 склонировать репозиторий и создать .env

git clone http://192.168.1.101:3000/ndmg/archive-backend.git
cd archive-backend
nano .env

2 в .env задать

DB_NAME
DB_PASSWORD
DB_USER
MEILI_KEY
MEILI_URL

если надо парсинг тг:

API_ID
API_HASH

3 поднять контейнеры

sudo docker compose up -d

4 запустить сервер

cd ..
uvicorn archive-backend.main:app --reload

5 API доступно по http://127.0.0.1:8000/docs