Веб-приложение для изучения трюков фристайла на сноуборде с интерактивными карточками, викторинами и отслеживанием прогресса.
- 📚 Каталог трюков - Более 35 трюков с описаниями, разделенных по категориям
- 🎮 Интерактивные флешкарты - Изучайте трюки с помощью карточек
- 🧠 Викторины - Проверьте свои знания с помощью тестов
- 📊 Отслеживание прогресса - Следите за своими достижениями
- 👥 Ролевая система - Гости, пользователи и администраторы
- 🔐 Аутентификация - Безопасный вход с JWT токенами
- ⚙️ Админ панель - Управление трюками и пользователями
- 📱 Адаптивный дизайн - Работает на десктопе и мобильных устройствах
- Python 3.11
- FastAPI
- PostgreSQL
- SQLAlchemy
- Alembic
- React 18
- React Router
- Styled Components
- Framer Motion
- React Query
- Axios
- Docker & Docker Compose
- Nginx (для продакшена)
- Вращения (Spins) - 180°, 360°, 540°, 720°, 900°, 1080°, 1440°
- Сальто (Flips) - Backflip, Frontflip, Lincoln Loop, Misty, Rodeo
- Off-axis - Cork, Double Cork, Triple Cork
- Грэбы (Grabs) - Indy, Melon, Mute, Stalefish, Tail, Nose, Japan, Method и др.
- Джиббинг (Jibbing) - Boardslide, Lipslide, Nosepress, Tailpress
- Комбо (Combo) - Комбинации вращений и грэбов
- Docker
- Docker Compose
-
Клонируйте репозиторий
git clone <repository-url> cd ushe_luche
-
Запустите приложение с помощью Docker Compose
# Используйте один из способов: # Способ 1: Автоматический скрипт ./start.sh # Способ 2: Вручную docker compose up --build # Способ 3: Если возникают проблемы docker compose down docker compose build --no-cache docker compose up
-
Откройте приложение
- Frontend: http://localhost:3000
- Backend API: http://localhost:8000
- API документация: http://localhost:8000/docs
-
Демо-аккаунты
- Администратор:
admin/admin123 - Или создайте свой аккаунт через регистрацию
- Администратор:
Для разработки вы можете запустить сервисы по отдельности:
Backend:
cd backend
pip install -r requirements.txt
uvicorn app.main:app --reloadFrontend:
cd frontend
npm install
npm startБаза данных:
docker run -d \
--name postgres \
-e POSTGRES_DB=snowboard_tricks \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=password \
-p 5432:5432 \
postgres:15GET /api/tricks- Получить все трюкиGET /api/tricks?category={category}- Получить трюки по категорииGET /api/tricks/{trick_id}- Получить конкретный трюкGET /api/categories- Получить все категории
POST /api/auth/register- Регистрация нового пользователяPOST /api/auth/login- Вход в систему (получение JWT токена)GET /api/auth/me- Получить информацию о текущем пользователеPOST /api/auth/change-password- Смена пароля пользователя
POST /api/users/{user_id}/progress/{trick_id}- Отметить трюк как изученныйGET /api/users/{user_id}/progress- Получить прогресс пользователяGET /api/users/{user_id}/stats- Получить статистику пользователя
GET /api/quiz/random- Получить случайный вопрос для викториныGET /api/quiz/random?category={category}- Получить вопрос по категории
Управление трюками:
POST /api/admin/tricks- Создать новый трюкPUT /api/admin/tricks/{trick_id}- Обновить трюкDELETE /api/admin/tricks/{trick_id}- Удалить трюк
Управление пользователями:
GET /api/admin/users- Получить всех пользователейPUT /api/admin/users/{user_id}- Обновить пользователяDELETE /api/admin/users/{user_id}- Удалить пользователя
ushe_luche/
├── backend/ # FastAPI backend
│ ├── app/
│ │ ├── __init__.py
│ │ ├── main.py # Основное приложение
│ │ ├── models.py # SQLAlchemy модели
│ │ ├── schemas.py # Pydantic схемы
│ │ └── database.py # Настройки базы данных
│ ├── requirements.txt
│ └── Dockerfile
├── frontend/ # React frontend
│ ├── public/
│ ├── src/
│ │ ├── components/ # React компоненты
│ │ ├── pages/ # Страницы приложения
│ │ ├── App.js
│ │ └── index.js
│ ├── package.json
│ └── Dockerfile
├── tricks.json # База данных трюков
├── docker-compose.yml # Docker Compose конфигурация
└── README.md
- Просмотр каталога трюков
- Поиск и фильтрация по категориям
- Ограниченный доступ к функциям
- Все функции гостя
- Интерактивные флешкарты
- Викторины и тесты
- Отслеживание персонального прогресса
- Статистика по категориям
- Управление профилем и смена пароля
- Все функции пользователя
- Доступ к панели менеджера
- Добавление, редактирование и удаление трюков
- Управление каталогом трюков с расширенными полями (техника исполнения, видео)
- Все функции менеджера
- Полная админ панель для управления системой
- Управление пользователями и назначение ролей
- Полный контроль над системой
- Просмотр всех трюков с фильтрацией по категориям
- Поиск трюков по названию и описанию
- Подробная информация о каждом трюке
- Изображения трюков с автоматическими заглушками
- Доступен всем пользователям (включая гостей)
- Интерактивные карточки для изучения с изображениями
- Возможность перемешивания карточек
- Отметка изученных трюков
- Фильтрация по категориям
- Плавные анимации переворота карточек
- Случайные вопросы с изображениями трюков
- Фильтрация по категориям
- Подсчет результатов
- Мгновенная обратная связь
- Визуальное распознавание трюков
- Персональная статистика изученных трюков
- Прогресс по категориям с визуализацией
- Система уровней и достижений
- Просмотр информации о пользователе
- Смена пароля с проверкой текущего
- Отображение роли и даты регистрации
- Управление каталогом трюков
- Управление пользователями системы
- Изменение ролей и статусов пользователей
Приложение полностью адаптировано для мобильных устройств:
- Адаптивная навигация с мобильным меню
- Оптимизированные размеры карточек и кнопок
- Удобное управление жестами
- Быстрая загрузка на медленных соединениях
-
Ошибка "ModuleNotFoundError: No module named 'sqlalchemy.relationship'"
- Исправлено в последней версии
- Если проблема остается, пересоберите контейнеры:
docker compose build --no-cache
-
Ошибка "npm ci --silent" в frontend
- Исправлено: используется
npm installвместоnpm ci - Контейнер автоматически установит зависимости
- Исправлено: используется
-
CORS ошибки
- Backend настроен для работы с localhost:3000
- Если проблема остается, проверьте что контейнеры запущены
-
Проблемы с Docker
# Полная очистка и перезапуск docker compose down docker system prune -f docker compose build --no-cache docker compose up
Если Docker вызывает проблемы, можно запустить локально:
Backend:
cd backend
python -m venv venv
source venv/bin/activate # На Windows: venv\Scripts\activate
pip install -r requirements.txt
# Запустите PostgreSQL отдельно
uvicorn app.main:app --reloadFrontend:
cd frontend
npm install
npm start- 🔐 Аутентификация пользователей
- 🌐 Многоязычность (русский/английский)
- 🎥 Интеграция с видео-демонстрациями
- 👥 Социальные функции (друзья, лидерборды)
- 🏆 Система достижений и бейджей
- 📱 PWA поддержка
- 🔄 Синхронизация между устройствами
MIT License
Если у вас есть вопросы или предложения, создайте issue в репозитории.
Уже лучше! 🏂 Изучайте трюки и становитесь лучше каждый день!