mrleo1nid 0a59059738
ci / api / api (push) Successful in 55s
release / release (версия и заметки) (push) Successful in 5s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m21s
ci / ts / ts (packages + web) (push) Successful in 2m19s
release / android (APK в релиз) (push) Successful in 4m45s
release / desktop (Linux и Windows в релиз) (push) Successful in 20m58s
release / prune (старые файлы и прогоны) (push) Successful in 9s
ci / module boundaries / boundaries (push) Successful in 7s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 1m35s
ci / db / db (push) Successful in 59s
feat(playlists): share playlists with revocable read-only links
2026-10-22 14:57:14 +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
pnpm check:boundaries
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%