Официальный сайт музыкальной группы Смоляное чучелко, опубликованный на smolyanoechuchelko.ru.
Сайт решает задачу представления группы в интернете: каталог альбомов с треками и синхронизированными текстами, статьи, медиаплеер, мультиязычность (RU/EN) и личный кабинет для управления контентом. Контент (альбомы, треки, тексты, синхронизации, статьи, изображения hero) хранится в PostgreSQL (Supabase), медиафайлы — в Supabase Storage. Для продакшена используется хостинг Netlify и serverless-функции для API.
Основные возможности:
- Просмотр альбомов и треков с аудиоплеером и синхронизированными текстами
- Статьи и новости с мультиязычной поддержкой
- Двуязычный интерфейс (русский / английский)
- Админ-панель: управление альбомами, треками, синхронизациями, статьями, hero-изображениями, профилем
- Оплата и личный кабинет покупателя (просмотр покупок, скачивание)
Стек технологий:
- 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 и доступ к переменным окружения проекта
-
Клонируйте репозиторий и установите зависимости:
git clone <url-репозитория> cd my-project-copy npm install
-
Настройте переменные окружения.
Вариант 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-токеновJWT_EXPIRES_IN— время жизни токена (например,7d)- Для медиа и хранилища:
SUPABASE_URL,SUPABASE_SERVICE_ROLE_KEY(и при необходимостиVITE_SUPABASE_*для клиента)
-
Запуск:
Команда Назначение npm startТолько frontend (webpack dev server на порту 8080), без Netlify Functions npm run devилиnetlify devПолный dev: frontend + Netlify Functions. Сайт: http://localhost:8888npm run buildProduction-сборка в папку distДля проверки работы после клонирования:
npm install source scripts/load-netlify-env.sh # если есть доступ к Netlify netlify dev
Откройте в браузере
http://localhost:8888и убедитесь, что главная страница и разделы открываются. -
Деплой на Netlify:
Сборка:npm run build, каталог публикации:dist. Функции лежат вnetlify/functions. Переменные окружения задаются в Netlify Dashboard. Подробнее — вdocs/NETLIFY-QUICK-START.mdиnetlify.toml.
- Локальная разработка и переменные:
docs/LOCAL-DEVELOPMENT.md,docs/FILL-ENV-FILE.md - База данных и миграции:
docs/database-setup.md,database/ - Платежи (ЮKassa):
docs/SETUP-PAYMENTS.md,docs/yookassa-setup.md
- Обработка ошибок: добавить retry для неудачных запросов и более понятные сообщения об ошибках для пользователя; вынести логирование в единый сервис (например, с последующей интеграцией Sentry).
- Тесты: расширить покрытие критичных сценариев (сохранение синхронизаций, авторизация, оплата) и добавить e2e для основных пользовательских сценариев.
- Производительность: проверить и при необходимости донастроить кэширование и предзагрузку для тяжёлых страниц (каталог альбомов, статьи).
- Доступность: довести контраст и фокус-индикаторы до соответствия WCAG 2.1 там, где ещё есть замечания.
- Миграции и админка: при добавлении новых полей в БД — сохранять обратную совместимость и обновлять админ-формы с валидацией.
Конкретные шаги и приоритеты зафиксированы в docs/IMPROVEMENTS.md.