sport-plus-LCT

SPORT+ is the backend application for the LCT hackathon 2024.

Stars
0
Committers
3

Sport+

README на English

Это бэкенд приложения SPORT+ для хакатона LCT 2024. Проект находится на стадии разработки.

Обзор

Бэкенд Sport+ предназначен для поддержки тренеров в создании и управлении своими курсами, к которым пользователи могут получить доступ и участвовать в них. Приложение предоставляет несколько функций, включая управление пользователями, создание курсов, планирование занятий, функциональность чата и многое другое. Оно построено с акцентом на чистую архитектуру и использует современные технологии для бесшовной интеграции и масштабируемости.

Основная разработка

Основная разработка этого проекта ведется на GitLab. Вы можете найти последние обновления и внести свой вклад в проект, посетив наш репозиторий на GitLab:

Sport Plus LCT на GitLab

Как запустить приложение

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

git clone https://github.com/niazlv/sport-plus-LCT.git

Перейдите в директорию проекта:

cd sport-plus-LCT

(опционально) загрузить базу данных (вручную): https://disk.yandex.ru/d/3Rf5SjySDyRzzA. И прочитайте файл README.md в этом архиве

Создайте конфигурационный файл в каталоге env, например, создайте dev.env:

mkdir env
cd env
echo "POSTGRES_USER=postgres 
POSTGRES_PASSWORD=postgres 
POSTGRES_DB=postgres 

COMPOSE_PROJECT_NAME=sport-plus
DB_HOST=${COMPOSE_PROJECT_NAME}_postgres-db-1 
DB_PORT=5432 

JWT_SECRET=my-super-secret-key
HASURA_GRAPHQL_DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DB_HOST}:${DB_PORT}/${POSTGRES_DB}
HASURA_GRAPHQL_ENABLE_CONSOLE=true
HASURA_GRAPHQL_DEV_MODE=true
HASURA_GRAPHQL_ADMIN_SECRET=12Qwerty123!
" > dev.env
cd ..

Или скопируйте и переименуйте dev.example.env и отредактируйте в соответствии с вашими требованиями:

mkdir env
cd env
cp dev.example.env dev.env
vim dev.env

Запустите файл Docker Compose:

COMPOSE_PROJECT_NAME=sport-plus docker-compose -f docker/dev.docker-compose.yml up -d --build

Или просто запустите:

make start-dev

Теперь вы можете получить доступ к бэкенду по адресу: http://localhost:8080/v1

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

Используемые технологии

  • Язык программирования: Go
  • Веб-фреймворк: Gin
  • Документация API: Fizz, Swagger, Tonic
  • Аутентификация: JWT
  • ORM: GORM
  • База данных: PostgreSQL
  • Контейнеризация: Docker, Docker Compose
  • CI/CD: GitLab CI/CD

Возможности

  • Управление пользователями: Позволяет тренерам и пользователям регистрироваться, входить в систему и "управлять" своими профилями.
  • Управление курсами: Тренеры могут создавать и управлять курсами, которые включают классы, уроки и упражнения.
  • Функциональность чата: Пользователи могут участвовать в чатах, связанных с их курсами.
  • Интеграция с календарем: Пользователи могут планировать и просматривать свои тренировки.
  • Загрузка файлов: Поддерживает загрузку изображений и других файлов.
  • Аутентификация: Использует JWT токены для безопасной аутентификации и авторизации.
  • Реальное время: Использует WebRTC для реализации функций в реальном времени.

Статус проекта

Проект находится на стадии разработки и предназначен для хакатона LCT 2024.

СПИСОК ЗАДАЧ

  • auth/signup
  • auth/signin
  • JWT токены
  • Реализовать кастомный логгер с ротацией логов
  • модель User
  • swagger
  • Рефакторинг кода в пакеты (user, auth)
  • Отделить JWT от auth
  • Переключить JWT токены на RS256
  • Добавить /auth/onboarding? (database.User) PUT
  • Исправить коды ошибок в fizz/tonic
  • Завершить README.md с подробной информацией о проекте и настройке
  • Перенести СПИСОК ЗАДАЧ в управление проектом
  • Переписать Docker файлы
    • docker файл
    • docker compose
  • Добавить LICENSE
  • Добавить валидацию ввода для операций с базой данных (особенно для auth, user, getUserByID)
  • chat
    • Переписать socket.io
    • Удалить конечную точку для отправки сообщений(send message)
    • Транслировать сообщения от пользователя всем (broadcast: chatid, messageid, message)
    • Один сокет на всех, отправлять chatid при подключении пользователя
    • Вложения как "string"
  • webrtc
  • курс->класс->уроки
  • Решить циклическую зависимость между auth и chat и отделить chat от auth
  • Создать чат для курсов (createchatfromcourse)
  • Переключиться на альтернативную реализацию socket.io
  • Фильтрация упражнений
  • Разрешить несколько упражнений в уроках. Реализовать как []exercise
    • Обновить метод PUT
  • Исправить функциональность прогресса/статуса

Ссылки

Related Projects