Skip to content

Latest commit

 

History

200 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Информационная система "DogHub"

Проект разрабатывается в рамках курса "Разработка и реализация проектов" в АлтГТУ им. И.И.Ползунова.

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

  1. Docs/ - сопроводительная документация проекта
  2. Assets/ - ресурсы
    1. SQL/ - необходимые данные для БД
      1. "doghub_db.sql" - последовательность sql команд для создания БД
      2. "test_data.sql" - тестовые данные для заполнения БД
    2. ".env.example" - пример конфигурации проекта
    3. "SQLCommands.json" - маппинг запросов к БД
  3. Server/ - сервер СУБД на платформе ".Net"
    1. Server/DogHub/ - исходный код сервера
    2. Server/Test/ - автоматизированные тесты
  4. Client/ - клиентский сервер
  5. Docker/ - файлы для сборки проекта в контейнерах docker
    1. certs - сертификаты ssl
    2. Client/ - Docker конфигурация для контейнера клиента
    3. Server/ - Docker конфигурация для контейнера сервера

Зависимости ИС

  1. ".Net" версии >= 9.0
    1. Пакет "Npgsql"
    2. Пакет "DotNetEnv"
  2. ReactTS
  3. Vite

Backend сервер ИС

Сервер ".Net" работает в паре с СУБД "PostgreSQL". В ней должна быть развернута БД описанная SQL скриптом в "Assets/SQL/doghub_db.sql". Первичные данные для тестирования работы программы располагаются в "Assets/SQL/test_data.sql".

Сборка сервера:

psql -U postgres -c "DROP DATABASE doghub_db"
psql -U postgres -c "CREATE DATABASE doghub_db" &&
psql -U postgres -d doghub_db -f "Assets/SQL/doghub_db.sql"

dotnet build &&
dotnet test  &&
dotnet run --project Server/Doghub 

Особенности реализации

  1. Сервер читает конфигурацию записанную в "Assets/.env"
  2. После ответа, соединение с клиентом разрывается

Переменные окружения сервера

Основные параметры считываются из Assets/.env. Помимо настроек БД и JWT добавлены переменные для управления refresh‑сессиями:

  • ACCESS_TOKEN_LIFETIME_MINUTES — срок жизни access‑токена.
  • REFRESH_TOKEN_LIFETIME_DAYS — срок жизни refresh‑токена (по умолчанию 14 дней).
  • REFRESH_COOKIE_DOMAIN — домен для HttpOnly‑cookie с refresh‑токеном. Оставьте пустым для разработки.
  • REFRESH_COOKIE_SECUREtrue/false, включает передачу cookie только по HTTPS.
  • CORS_ALLOWED_ORIGINS — список разрешённых origin (через запятую). Для работы HttpOnly‑cookie необходимо указать явные адреса фронтенда и backend автоматически включит AllowCredentials.

Клиент

Клиентская часть DogHub реализована на React + TypeScript с использованием Vite.
Она предоставляет удобный веб‑интерфейс для работы с участниками клуба, их собаками, событиями, обучающими программами и тренингами.

Запуск в режиме разработки

cd client
npm install        # установка зависимостей (один раз)
npm run dev        # запуск dev‑сервера Vite (по умолчанию http:/localhost:5173)

Продакшн‑сборка

cd client
npm install        # при необходимости
npm run build      # TypeScript + Vite build, результат в client/dist

Конфигурация

Клиент ожидает URL backend‑сервера в переменной окружения:

  • VITE_API_BASE_URL — базовый адрес API.
    Если переменная не задана, используется путь /api.

Переменная задаётся в файле client/.env (см. пример .env.example, если он добавлен в проект) или через переменные окружения при запуске.

Основной функционал клиента

  • Авторизация и регистрация: хеширование паролей на клиенте (SHA‑256), хранение access‑токена в AuthContext/localStorage и автоматическое продление сессии через HttpOnly refresh‑cookie (endpoint /auth/refresh), централизованный logout.
  • Личный кабинет: просмотр и редактирование профиля участника, просмотр его собак и записей на события/программы/тренинги.
  • Каталоги:
    • участники клуба и их собаки;
    • события клуба (мероприятия);
    • обучающие программы для собак;
    • тренинги для владельцев.
  • Записи на активности:
    • запись/отмена записи собак на события и программы;
    • запись/отмена участия владельца на тренинги;
    • блокировка записей для уже прошедших мероприятий.

Взаимодействие с backend

Весь HTTP‑доступ к API инкапсулирован в модуле client/src/api/client.ts.
В нём описаны типы данных, функции загрузки списков (события, программы, участники и т.д.), а также методы записи/отписки на мероприятия с авторизацией через Bearer‑токен.

Авторы

  1. Sh1chi
  2. Tychaaa
  3. LexCivis

About

University project of information system to use by large dog clubs in business purposes

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages