mrleo1nidandCursor 73ad61e7a5
ci / ts / ts (packages + web) (push) Canceled after 1m0s
ci / api / api (push) Successful in 46s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 56s
ci / db / db (push) Successful in 1m32s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m27s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 1m31s
feat(genius): load song metadata, lyrics, and artwork
Search hits omit album covers and artist images. The worker now reads the full song and artist, stores the description, and leaves Genius image URLs unchanged on mobile.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-22 08:23:54 +03:00

pipu-music

Self-hosted музыкальный сервис: веб, десктоп и Android-приложение, библиотека на NFS, умная бесконечная лента «Моя волна» с учётом вкуса, звучания треков и настроения.

Структура

Путь Что
api/openapi.yaml Контракт публичного API — источник истины для сервера и клиентов
services/api Go: публичный API (cmd/api) и агент хранилищ (cmd/storage-agent)
services/recommender Python: рекомендации (pipu-rec serve) и аудиоанализ (pipu-rec analyze)
apps/web Веб-клиент (React + Vite)
apps/desktop Десктоп Windows / Linux / macOS (Tauri, тот же веб)
apps/mobile Android-приложение (React Native + Expo)
packages/* Общий TS-код: api-client, core, i18n, design-tokens
deploy/ Docker Compose, nginx, скрипты установки и обновления
tests/fixtures/music Генератор тестовой библиотеки (нужен ffmpeg)
.gitea/workflows CI по областям (ci-*.yml, docker.yml) и релиз по тегу (release.yml)

Разработка

Нужны: Go 1.24+, Node 22 + pnpm 11, uv, Docker; для Android — JDK 17 и Android SDK.

pnpm install
docker compose -f deploy/compose.dev.yaml up -d

API (из services/api):

DATABASE_URL="postgres://pipu:pipu@localhost:5432/pipu?sslmode=disable" REDIS_URL="redis://localhost:6379/0" MEILI_URL="http://localhost:7700" MEILI_MASTER_KEY="dev-master-key-change-me" LIBRARY_HOST_ROOT="$PWD/../../tests/fixtures/music/out" X_ACCEL=false CACHE_DIR="$PWD/.cache" go run ./cmd/api

Веб на http://localhost:5173 (проксирует /api на :8080):

pnpm --filter @pipu/web dev

Проверки — те же, что в CI:

pnpm typecheck && pnpm test && pnpm i18n:check && pnpm test:scripts
cd services/api && go vet ./... && go test ./...
cd services/recommender && uv run ruff check . && uv run mypy pipu_rec && uv run pytest

После изменения api/openapi.yaml или packages/design-tokens/tokens.json перегенерируйте код и закоммитьте результат:

pnpm generate && (cd services/api && go generate ./...)

Релиз

Тег vX.Y.Z (или vX.Y.Z-rc.N) запускает .gitea/workflows/release.yml: Gitea Release с заметками → подписанный APK докладывается в него. Docker-образы не публикуются: сервер клонирует репозиторий и собирает их сам (deploy/update.sh, docs/install-guide.md). Нужные секреты перечислены в шапке .gitea/workflows/release.yml.

S
Description
No description provided
Readme
5.7 MiB
0 Stars 1 Watchers 0 Forks
2026-10-30 08:26:39 +00:00
Languages
TypeScript 47.7%
Go 37.4%
Python 6.6%
CSS 4.1%
JavaScript 2%
Other 2.2%