Leonid Pershin bd3ced3637
ci / build-backend (push) Successful in 1m51s
ci / build-frontend (push) Successful in 50s
ci / tests (push) Successful in 1m33s
ci / sonar (push) Successful in 4m29s
Enhance ChannelDebugCollector and LibraryDebugCollector for improved data handling
Refactored the ChannelDebugCollector to introduce a new RunScope record, consolidating channel, template, and time horizon data for better readability and maintainability. Updated methods to utilize the new RunScope structure, enhancing the clarity of debug file generation. In the LibraryDebugCollector, added AsSplitQuery to optimize database queries and improve performance. Cleaned up unused parameters and ensured consistent handling of asset statuses. These changes aim to streamline debug data collection and improve overall efficiency.
2026-07-31 04:27:06 +03:00

TeleWave

ci quality gate Coverage Bugs Code Smells Security Rating Maintainability Rating

TeleWave — сервис онлайн-каналов: пользователи смотрят сетку каналов, видео отдаётся из хранилища на сервере, админ управляет каналами и пользователями.

Текущее состояние — рабочий вертикальный срез: вход/регистрация, роли, пользователи, админка; библиотека шоу/серий, загрузка и обработка медиа (ffmpeg → HLS), метаданные (TMDb/OMDb), каталог каналов, планировщик эфира (реклама, ТВ-заставки, weekly-override'ы) и live-раздача HLS с публичным просмотром сетки. Приложение (фронт + бек) поставляется единым Docker-образом; PostgreSQL — внешний, не поднимается через compose.

Стек

Слой Технологии
Backend C# / .NET 10, ASP.NET Core Web API, Clean Architecture, CQRS (LiteCqrs.Net), EF Core
БД PostgreSQL (Npgsql)
Auth ASP.NET Core Identity + JWT (access + refresh, ротация)
Frontend React 19 + Vite + TypeScript, TanStack Query/Router, shadcn/ui + Tailwind v4 (ретро-CRT тема)
Упаковка Единый Docker-образ (API + статика SPA); PostgreSQL — внешний сервер

Развёртывание

Postgres не входит в compose — база и пользователь создаются заранее на внешнем сервере БД:

-- на сервере БД (psql -h <хост БД> -U postgres)
CREATE USER telewave WITH PASSWORD 'change-me-strong-db-password';
CREATE DATABASE telewave OWNER telewave;

Затем на хосте с приложением:

cp .env.example .env
# заполнить ConnectionStrings__Default (хост/база/юзер/пароль БД), Jwt__SigningKey, AdminSeed__*
docker compose up -d --build
# → http://localhost:8085  (админ — логин/пароль из .env, AdminSeed__Username/Password)

Права на медиахранилище. Контейнер работает под непривилегированным пользователем (uid/gid 1654), а bind-mount пробрасывает права хоста как есть — каталог хранилища должен принадлежать этому uid, иначе приложение стартует, но любая запись в /media упадёт с Permission denied. Полная процедура (включая группу, через которую вы сами кладёте файлы в inbox/ и manual/) — docs/server-storage-setup.md, шаг 5:

sudo groupadd -g 1654 telewave
sudo usermod -aG telewave "$USER"          # затем перелогиниться
sudo chown -R 1654:1654 /srv/telewave/media
sudo chmod -R 750 /srv/telewave/media
sudo chmod 2775 /srv/telewave/media/inbox /srv/telewave/media/manual

Обновляетесь с версии, где контейнер работал под root? Это и есть вся миграция: остановите контейнер (docker compose down), выполните команды выше, поднимайте новый образ.

Локальная разработка

# backend, из backend/
dotnet build && dotnet test tests/TeleWave.Domain.Tests tests/TeleWave.Application.Tests
dotnet run --project src/TeleWave.Api

# frontend, из frontend/
pnpm install
pnpm dev          # проксирует /api на localhost:8080

Документация

Пример переменных окружения (сид админа, БД, JWT) — .env.example. Инструкции для AI-ассистента (Claude Code) — в CLAUDE.md (стек, архитектурные правила, доменные инварианты, соглашения по коду).

Лицензия

Не определена.

S
Description
No description provided
Readme
3.5 MiB
Languages
C# 73.4%
TypeScript 26.3%
CSS 0.2%
Dockerfile 0.1%