Femida Archive — наш собственный проект: веб-приложение для управления персональной музыкальной библиотекой. Оно нужно там, где обычные плееры и медиасерверы заканчиваются: андеграундные релизы без записей в базах, россыпь сингловых файлов, дубликаты, папки с разными схемами именования.

Главный принцип

База данных Femida Archive — источник истины. Discogs, Spotify, MusicBrainz и другие сервисы — внешние поставщики данных: они встраиваются в систему, но никогда не диктуют ей структуру.

На практике это значит, что автор релиза определяется вами, а не тем, как он записан во внешней базе. Если Discogs приписал кредит участнику группы вместо самой группы — вы исправляете это у себя, а внешняя запись остаётся лишь ссылкой. Внешние идентификаторы (Discogs, Spotify и др.) — это связи с источниками, а не определения сущностей.

Из чего состоит

  • Библиотека. Артисты, релизы, треки, алиасы артистов, участники групп, кредиты, жанры, плейлисты, оценки.
  • Движок метаданных. Подтягивание данных из MusicBrainz и Discogs (и не только) с ручной корректировкой.
  • Визуальный архив. Обложки, постеры, арт артистов; обложки берутся из файлов, тегов и внешних источников.
  • Менеджер загрузок. Скачивание по ссылке или текстовому запросу через yt-dlp с показом прогресса.
  • Организатор библиотеки. Сопоставление файлов с релизами, запись тегов, нормализация имён папок и файлов, автоимпорт из структуры каталогов.
  • Мультиссылки. Публичные страницы релиза со ссылками на площадки и QR-кодом.
  • Физический дизайнер. Макеты вкладышей для CD и кассет с экспортом в PDF.
  • Плеер. Встроенное воспроизведение прямо из библиотеки.

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

СлойТехнологии
ИнтерфейсNext.js (App Router), TypeScript, Tailwind
APINode.js, Fastify, Drizzle ORM
ДанныеPostgreSQL, Redis
Очереди и загрузкаBullMQ, yt-dlp, ffmpeg
РепозиторийМонорепо на pnpm workspaces

Как это работает вместе с остальной лабораторией

Приложение живёт в отдельном LXC-контейнере на Proxmox, музыкальный архив монтируется с NAS, а сама коллекция параллельно раздаётся через Jellyfin. Разработка ведётся локально, выкатка — одной командой, без правок на сервере вручную.

Статус. Проект личный и активно развивается; доступ к работающему приложению закрыт, поэтому гостевая кнопка на главной ведёт сюда — к описанию идеи и устройства.