Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,234 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Название сайта — музыкальная платформа для независимых артистов

Мультиартистная музыкальная платформа для публикации альбомов, статей и поддержки независимых артистов.


Описание проекта

Платформа объединяет публичные страницы артистов, каталог альбомов с треками и синхронизированными текстами, статьи, медиаплеер, мультиязычность (RU/EN) и личные кабинеты для артистов и слушателей. Контент (альбомы, треки, тексты, синхронизации, статьи, изображения hero) хранится в PostgreSQL (Supabase), медиафайлы — в Supabase Storage. Для продакшена используется хостинг Netlify и serverless-функции для API.

Основные возможности:

  • Публичные страницы артистов и каталог релизов
  • Просмотр альбомов и треков с аудиоплеером и синхронизированными текстами
  • Статьи и публикации с мультиязычной поддержкой
  • Двуязычный интерфейс (русский / английский)
  • Кабинет артиста: управление альбомами, треками, синхронизациями, статьями, hero-изображениями, профилем
  • Оплата и личный кабинет покупателя (просмотр покупок, скачивание)
  • Поддержка артистов через коллекцию и Premium-планы

Стек технологий:

  • Frontend: React 18, TypeScript, Redux Toolkit, React Router, i18next, Webpack 5, SCSS
  • Backend: Netlify Functions (Node.js), PostgreSQL (Supabase), JWT-аутентификация
  • Хранилище: Supabase Storage (изображения, аудио)
  • Деплой: Netlify (статический билд + serverless API)

Системные требования и развёртывание

Требования

  • Node.js — рекомендуется LTS (18.x или 20.x)
  • npm — 9.x или новее (или yarn/pnpm)
  • Для полной локальной разработки: Netlify CLI (npm i -g netlify-cli), аккаунт Netlify и доступ к переменным окружения проекта

Установка и запуск

  1. Клонируйте репозиторий и установите зависимости:

    git clone <url-репозитория>
    cd my-project-copy
    npm install
  2. Настройте переменные окружения.

    Вариант 1 (рекомендуется для локальной разработки): загрузить из Netlify:

    source scripts/load-netlify-env.sh

    Вариант 2: создать локальный .env на основе примера:

    cp .env.local.example .env.local
    # Заполните переменные вручную (см. docs/FILL-ENV-FILE.md и docs/LOCAL-DEVELOPMENT.md)

    Обязательные переменные для работы API и БД:

    • DATABASE_URL — строка подключения к PostgreSQL (Supabase)
    • JWT_SECRET — секрет для JWT-токенов (длинная случайная строка, ≥ 32 символов; например openssl rand -base64 48). Обязателен: при пустом значении функции бросают Error: JWT_SECRET is required.
    • JWT_EXPIRES_IN — время жизни токена (например, 7d)
    • ENCRYPTION_KEY — мастер-ключ AES-256-GCM для зашифрованных секретов в БД (secret_key_encrypted продавцов YooKassa). Длинная случайная строка, рекомендация — openssl rand -base64 48. Обязателен: при пустом значении функции бросают Error: ENCRYPTION_KEY is required. ⚠️ Смена ключа делает уже зашифрованные значения нечитаемыми.
    • Для медиа и хранилища: SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY (и при необходимости VITE_SUPABASE_* для клиента)
  3. Запуск:

    Команда Назначение
    npm run dev:docker Рекомендуется: Netlify Dev + Audio Asset Worker в Docker (prod-like)
    npm run dev:all Netlify Dev + воркер на хосте (нужен brew install ffmpeg)
    npm start Только frontend (webpack dev server на порту 8080), без Netlify Functions
    npm run dev Netlify Dev без воркера (предупреждение, если воркер недоступен)
    npm run build Production-сборка в папку dist

    Для проверки работы после клонирования:

    npm install
    source scripts/load-netlify-env.sh   # если есть доступ к Netlify
    npm run dev:docker

    Откройте в браузере http://localhost:8888 и убедитесь, что главная страница и разделы открываются.

  4. Деплой на Netlify:
    Сборка: npm run build, каталог публикации: dist. Функции лежат в netlify/functions. Переменные окружения задаются в Netlify Dashboard. Подробнее — в docs/NETLIFY-QUICK-START.md и netlify.toml.

Дополнительная документация

  • Архитектура и слои FSD: docs/architecture.md
  • Локальная разработка и переменные: docs/LOCAL-DEVELOPMENT.md, docs/FILL-ENV-FILE.md
  • База данных и миграции: docs/database-setup.md, database/
  • Платежи (ЮKassa): docs/SETUP-PAYMENTS.md, docs/yookassa-setup.md
  • Dev Payment Mode (локально без YooKassa): docs/dev-payment-mode.md

Планы по доработке

  • Обработка ошибок: добавить retry для неудачных запросов и более понятные сообщения об ошибках для пользователя; вынести логирование в единый сервис (например, с последующей интеграцией Sentry).
  • Тесты: расширить покрытие критичных сценариев (сохранение синхронизаций, авторизация, оплата) и добавить e2e для основных пользовательских сценариев.
  • Производительность: проверить и при необходимости донастроить кэширование и предзагрузку для тяжёлых страниц (каталог альбомов, статьи).
  • Доступность: довести контраст и фокус-индикаторы до соответствия WCAG 2.1 там, где ещё есть замечания.
  • Миграции и админка: при добавлении новых полей в БД — сохранять обратную совместимость и обновлять админ-формы с валидацией.

Конкретные шаги и приоритеты зафиксированы в docs/IMPROVEMENTS.md.

About

Official website of the group Smolyanoe chushelko

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages