Проект разрабатывается в рамках курса "Разработка и реализация проектов" в АлтГТУ им. И.И.Ползунова.
- Docs/ - сопроводительная документация проекта
- Assets/ - ресурсы
- SQL/ - необходимые данные для БД
- "doghub_db.sql" - последовательность sql команд для создания БД
- "test_data.sql" - тестовые данные для заполнения БД
- ".env.example" - пример конфигурации проекта
- "SQLCommands.json" - маппинг запросов к БД
- SQL/ - необходимые данные для БД
- Server/ - сервер СУБД на платформе ".Net"
- Server/DogHub/ - исходный код сервера
- Server/Test/ - автоматизированные тесты
- Client/ - клиентский сервер
- Docker/ - файлы для сборки проекта в контейнерах docker
- certs - сертификаты ssl
- Client/ - Docker конфигурация для контейнера клиента
- Server/ - Docker конфигурация для контейнера сервера
- ".Net" версии >= 9.0
- Пакет "Npgsql"
- Пакет "DotNetEnv"
- ReactTS
- Vite
Сервер ".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 - Сервер читает конфигурацию записанную в "Assets/.env"
- После ответа, соединение с клиентом разрывается
Основные параметры считываются из Assets/.env. Помимо настроек БД и JWT добавлены переменные для управления refresh‑сессиями:
ACCESS_TOKEN_LIFETIME_MINUTES— срок жизни access‑токена.REFRESH_TOKEN_LIFETIME_DAYS— срок жизни refresh‑токена (по умолчанию 14 дней).REFRESH_COOKIE_DOMAIN— домен для HttpOnly‑cookie с refresh‑токеном. Оставьте пустым для разработки.REFRESH_COOKIE_SECURE—true/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. - Личный кабинет: просмотр и редактирование профиля участника, просмотр его собак и записей на события/программы/тренинги.
- Каталоги:
- участники клуба и их собаки;
- события клуба (мероприятия);
- обучающие программы для собак;
- тренинги для владельцев.
- Записи на активности:
- запись/отмена записи собак на события и программы;
- запись/отмена участия владельца на тренинги;
- блокировка записей для уже прошедших мероприятий.
Весь HTTP‑доступ к API инкапсулирован в модуле client/src/api/client.ts.
В нём описаны типы данных, функции загрузки списков (события, программы, участники и т.д.), а также методы записи/отписки на мероприятия с авторизацией через Bearer‑токен.
- Sh1chi
- Tychaaa
- LexCivis