Skip to content

chipik/snowbetter

Repository files navigation

Уже лучше 🏂

Веб-приложение для изучения трюков фристайла на сноуборде с интерактивными карточками, викторинами и отслеживанием прогресса.

Особенности

  • 📚 Каталог трюков - Более 35 трюков с описаниями, разделенных по категориям
  • 🎮 Интерактивные флешкарты - Изучайте трюки с помощью карточек
  • 🧠 Викторины - Проверьте свои знания с помощью тестов
  • 📊 Отслеживание прогресса - Следите за своими достижениями
  • 👥 Ролевая система - Гости, пользователи и администраторы
  • 🔐 Аутентификация - Безопасный вход с JWT токенами
  • ⚙️ Админ панель - Управление трюками и пользователями
  • 📱 Адаптивный дизайн - Работает на десктопе и мобильных устройствах

Технологии

Backend

  • Python 3.11
  • FastAPI
  • PostgreSQL
  • SQLAlchemy
  • Alembic

Frontend

  • React 18
  • React Router
  • Styled Components
  • Framer Motion
  • React Query
  • Axios

Инфраструктура

  • Docker & Docker Compose
  • Nginx (для продакшена)

Категории трюков

  1. Вращения (Spins) - 180°, 360°, 540°, 720°, 900°, 1080°, 1440°
  2. Сальто (Flips) - Backflip, Frontflip, Lincoln Loop, Misty, Rodeo
  3. Off-axis - Cork, Double Cork, Triple Cork
  4. Грэбы (Grabs) - Indy, Melon, Mute, Stalefish, Tail, Nose, Japan, Method и др.
  5. Джиббинг (Jibbing) - Boardslide, Lipslide, Nosepress, Tailpress
  6. Комбо (Combo) - Комбинации вращений и грэбов

Быстрый старт

Предварительные требования

  • Docker
  • Docker Compose

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

  1. Клонируйте репозиторий

    git clone <repository-url>
    cd ushe_luche
  2. Запустите приложение с помощью Docker Compose

    # Используйте один из способов:
    
    # Способ 1: Автоматический скрипт
    ./start.sh
    
    # Способ 2: Вручную
    docker compose up --build
    
    # Способ 3: Если возникают проблемы
    docker compose down
    docker compose build --no-cache
    docker compose up
  3. Откройте приложение

  4. Демо-аккаунты

    • Администратор: admin / admin123
    • Или создайте свой аккаунт через регистрацию

Разработка

Для разработки вы можете запустить сервисы по отдельности:

Backend:

cd backend
pip install -r requirements.txt
uvicorn app.main:app --reload

Frontend:

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:15

API Endpoints

Публичные эндпоинты (доступны всем)

  • GET /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

Ролевая система

👤 Гость

  • Просмотр каталога трюков
  • Поиск и фильтрация по категориям
  • Ограниченный доступ к функциям

👨‍💼 Зарегистрированный пользователь

  • Все функции гостя
  • Интерактивные флешкарты
  • Викторины и тесты
  • Отслеживание персонального прогресса
  • Статистика по категориям
  • Управление профилем и смена пароля

👨‍🏫 Менеджер

  • Все функции пользователя
  • Доступ к панели менеджера
  • Добавление, редактирование и удаление трюков
  • Управление каталогом трюков с расширенными полями (техника исполнения, видео)

👨‍💻 Администратор

  • Все функции менеджера
  • Полная админ панель для управления системой
  • Управление пользователями и назначение ролей
  • Полный контроль над системой

Функционал

Каталог трюков

  • Просмотр всех трюков с фильтрацией по категориям
  • Поиск трюков по названию и описанию
  • Подробная информация о каждом трюке
  • Изображения трюков с автоматическими заглушками
  • Доступен всем пользователям (включая гостей)

Флешкарты (только для зарегистрированных)

  • Интерактивные карточки для изучения с изображениями
  • Возможность перемешивания карточек
  • Отметка изученных трюков
  • Фильтрация по категориям
  • Плавные анимации переворота карточек

Викторины (только для зарегистрированных)

  • Случайные вопросы с изображениями трюков
  • Фильтрация по категориям
  • Подсчет результатов
  • Мгновенная обратная связь
  • Визуальное распознавание трюков

Отслеживание прогресса (только для зарегистрированных)

  • Персональная статистика изученных трюков
  • Прогресс по категориям с визуализацией
  • Система уровней и достижений

Управление профилем (только для зарегистрированных)

  • Просмотр информации о пользователе
  • Смена пароля с проверкой текущего
  • Отображение роли и даты регистрации

Админ панель (только для администраторов)

  • Управление каталогом трюков
  • Управление пользователями системы
  • Изменение ролей и статусов пользователей

Мобильная адаптация

Приложение полностью адаптировано для мобильных устройств:

  • Адаптивная навигация с мобильным меню
  • Оптимизированные размеры карточек и кнопок
  • Удобное управление жестами
  • Быстрая загрузка на медленных соединениях

Решение проблем

Проблемы с запуском

  1. Ошибка "ModuleNotFoundError: No module named 'sqlalchemy.relationship'"

    • Исправлено в последней версии
    • Если проблема остается, пересоберите контейнеры: docker compose build --no-cache
  2. Ошибка "npm ci --silent" в frontend

    • Исправлено: используется npm install вместо npm ci
    • Контейнер автоматически установит зависимости
  3. CORS ошибки

    • Backend настроен для работы с localhost:3000
    • Если проблема остается, проверьте что контейнеры запущены
  4. Проблемы с Docker

    # Полная очистка и перезапуск
    docker compose down
    docker system prune -f
    docker compose build --no-cache
    docker compose up

Альтернативный запуск (без Docker)

Если 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 --reload

Frontend:

cd frontend
npm install
npm start

Будущие возможности

  • 🔐 Аутентификация пользователей
  • 🌐 Многоязычность (русский/английский)
  • 🎥 Интеграция с видео-демонстрациями
  • 👥 Социальные функции (друзья, лидерборды)
  • 🏆 Система достижений и бейджей
  • 📱 PWA поддержка
  • 🔄 Синхронизация между устройствами

Лицензия

MIT License

Поддержка

Если у вас есть вопросы или предложения, создайте issue в репозитории.


Уже лучше! 🏂 Изучайте трюки и становитесь лучше каждый день!

About

snowbetter rider portal

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published