{"id":15095899,"url":"https://github.com/niazlv/sport-plus-lct","last_synced_at":"2026-02-06T10:02:47.708Z","repository":{"id":244690446,"uuid":"811888894","full_name":"niazlv/sport-plus-LCT","owner":"niazlv","description":"SPORT+ is the backend application for the LCT hackathon 2024.","archived":false,"fork":false,"pushed_at":"2024-12-12T00:05:46.000Z","size":154,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-11T01:16:49.477Z","etag":null,"topics":["backend-api","docker","docker-compose","gin","gitlab-ci","go","gorm","hackathon-project","jwt","lct-hackathon","postgresql"],"latest_commit_sha":null,"homepage":"http://sport-plus.sorewa.ru:8080/swagger/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/niazlv.png","metadata":{"files":{"readme":"README-RU.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-06-07T14:07:34.000Z","updated_at":"2024-06-16T20:34:12.000Z","dependencies_parsed_at":"2024-06-16T19:28:38.768Z","dependency_job_id":"1650f173-36e7-4857-88bb-2118e06acf4a","html_url":"https://github.com/niazlv/sport-plus-LCT","commit_stats":null,"previous_names":["niazlv/sport-plus-lct"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/niazlv/sport-plus-LCT","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niazlv%2Fsport-plus-LCT","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niazlv%2Fsport-plus-LCT/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niazlv%2Fsport-plus-LCT/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niazlv%2Fsport-plus-LCT/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/niazlv","download_url":"https://codeload.github.com/niazlv/sport-plus-LCT/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niazlv%2Fsport-plus-LCT/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29157471,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-06T07:18:23.844Z","status":"ssl_error","status_checked_at":"2026-02-06T07:13:32.659Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backend-api","docker","docker-compose","gin","gitlab-ci","go","gorm","hackathon-project","jwt","lct-hackathon","postgresql"],"created_at":"2024-09-25T15:43:29.962Z","updated_at":"2026-02-06T10:02:47.677Z","avatar_url":"https://github.com/niazlv.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sport+\n\nREADME на [English](/README.md)\n\nЭто бэкенд приложения SPORT+ для хакатона LCT 2024. Проект находится на стадии разработки.\n\n## Обзор\n\nБэкенд Sport+ предназначен для поддержки тренеров в создании и управлении своими курсами, к которым пользователи могут получить доступ и участвовать в них. Приложение предоставляет несколько функций, включая управление пользователями, создание курсов, планирование занятий, функциональность чата и многое другое. Оно построено с акцентом на чистую архитектуру и использует современные технологии для бесшовной интеграции и масштабируемости.\n\n## Основная разработка\n\nОсновная разработка этого проекта ведется на GitLab. Вы можете найти последние обновления и внести свой вклад в проект, посетив наш репозиторий на GitLab:\n\n[Sport Plus LCT на GitLab](https://gitlab.sorewa.ru:12345/niaz/sport-plus-LCT)\n\n## Как запустить приложение\n\nКлонируйте репозиторий:\n\n```bash\ngit clone https://github.com/niazlv/sport-plus-LCT.git\n```\n\nПерейдите в директорию проекта:\n\n```bash\ncd sport-plus-LCT\n```\n\n(опционально) загрузить базу данных (вручную): https://disk.yandex.ru/d/3Rf5SjySDyRzzA.\nИ прочитайте файл [README.md](https://disk.yandex.ru/d/Ci8IIBQI9UKyeA) в этом архиве\n\nСоздайте конфигурационный файл в каталоге `env`, например, создайте `dev.env`:\n\n```bash\nmkdir env\ncd env\necho \"POSTGRES_USER=postgres \nPOSTGRES_PASSWORD=postgres \nPOSTGRES_DB=postgres \n\nCOMPOSE_PROJECT_NAME=sport-plus\nDB_HOST=${COMPOSE_PROJECT_NAME}_postgres-db-1 \nDB_PORT=5432 \n\nJWT_SECRET=my-super-secret-key\nHASURA_GRAPHQL_DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DB_HOST}:${DB_PORT}/${POSTGRES_DB}\nHASURA_GRAPHQL_ENABLE_CONSOLE=true\nHASURA_GRAPHQL_DEV_MODE=true\nHASURA_GRAPHQL_ADMIN_SECRET=12Qwerty123!\n\" \u003e dev.env\ncd ..\n```\n\nИли скопируйте и переименуйте `dev.example.env` и отредактируйте в соответствии с вашими требованиями:\n\n```bash\nmkdir env\ncd env\ncp dev.example.env dev.env\nvim dev.env\n```\n\nЗапустите файл Docker Compose:\n\n```bash\nCOMPOSE_PROJECT_NAME=sport-plus docker-compose -f docker/dev.docker-compose.yml up -d --build\n```\n\nИли просто запустите:\n\n```bash\nmake start-dev\n```\n\nТеперь вы можете получить доступ к бэкенду по адресу: [http://localhost:8080/v1](http://localhost:8080/v1)\n\n## Документация и URL\n\n- [openAPI.json](http://sport-plus.sorewa.ru:8080/openapi.json)\n- [Swagger UI](http://sport-plus.sorewa.ru:8080/swagger)\n- [HASURA panel](http://sport-plus.sorewa.ru:8085)\n\n## Используемые технологии\n\n- **Язык программирования:** Go\n- **Веб-фреймворк:** Gin\n- **Документация API:** Fizz, Swagger, Tonic\n- **Аутентификация:** JWT\n- **ORM:** GORM\n- **База данных:** PostgreSQL\n- **Контейнеризация:** Docker, Docker Compose\n- **CI/CD:** GitLab CI/CD\n\n## Возможности\n\n- **Управление пользователями:** Позволяет тренерам и пользователям регистрироваться, входить в систему и \"управлять\" своими профилями.\n- **Управление курсами:** Тренеры могут создавать и управлять курсами, которые включают классы, уроки и упражнения.\n- **Функциональность чата:** Пользователи могут участвовать в чатах, связанных с их курсами.\n- **Интеграция с календарем:** Пользователи могут планировать и просматривать свои тренировки.\n- **Загрузка файлов:** Поддерживает загрузку изображений и других файлов.\n- **Аутентификация:** Использует JWT токены для безопасной аутентификации и авторизации.\n- **Реальное время:** Использует WebRTC для реализации функций в реальном времени.\n\n## Статус проекта\n\nПроект находится на стадии разработки и предназначен для хакатона LCT 2024.\n\n## СПИСОК ЗАДАЧ\n\n- [x] auth/signup\n- [x] auth/signin\n- [x] JWT токены\n- [ ] Реализовать кастомный логгер с ротацией логов\n- [x] модель User\n- [x] swagger\n- [ ] Рефакторинг кода в пакеты (user, auth)\n- [ ] Отделить JWT от auth\n- [ ] Переключить JWT токены на RS256\n- [x] Добавить /auth/onboarding? (database.User) PUT\n- [ ] Исправить коды ошибок в fizz/tonic\n- [x] Завершить README.md с подробной информацией о проекте и настройке\n- [x] Перенести СПИСОК ЗАДАЧ в управление проектом\n- [ ] Переписать Docker файлы\n  - [ ] docker файл\n  - [ ] docker compose\n- [ ] Добавить LICENSE\n- [ ] Добавить валидацию ввода для операций с базой данных (особенно для auth, user, getUserByID)\n- [x] chat\n\t- [x] Переписать socket.io\n\t- [x] Удалить конечную точку для отправки сообщений(send message)\n\t- [x] Транслировать сообщения от пользователя всем (broadcast: chatid, messageid, message)\n\t- [x] Один сокет на всех, отправлять chatid при подключении пользователя\n\t- [x] Вложения как \"string\"\n- [x] webrtc\n- [x] курс-\u003eкласс-\u003eуроки\n- [ ] Решить циклическую зависимость между auth и chat и отделить chat от auth\n- [ ] Создать чат для курсов (createchatfromcourse)\n- [ ] Переключиться на альтернативную реализацию socket.io\n- [x] Фильтрация упражнений\n- [x] Разрешить несколько упражнений в уроках. Реализовать как []exercise\n\t- [x] Обновить метод PUT\n- [ ] Исправить функциональность прогресса/статуса\n\n## Ссылки\n\n- [Сайт LCT](https://i.moscow/cabinet/lct/profile/my-teams)\n- [Исходный код мобильного приложения Sport+](https://github.com/justmeowme/sport_app_lct)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fniazlv%2Fsport-plus-lct","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fniazlv%2Fsport-plus-lct","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fniazlv%2Fsport-plus-lct/lists"}