Образовательная платформа, которая соединяет учителей и учеников. Система позволяет:
- Ученикам находить подходящих преподавателей
- Учителям создавать профессиональные профили
- Организовывать онлайн-обучение
- Общаться через встроенный чат
- Планировать занятия через систему расписания
- Go 1.22.0
- PostgreSQL
- GORM
- JWT для аутентификации
- WebSocket для чата
- SMTP для регистрации
- Swagger для API документации
- React 18
- TypeScript
- Tailwind CSS
- Vite
- React Router
- Ant Design
- Go (версия 1.22.0 или выше)
- Node.js (версия 18 или выше)
- PostgreSQL
- Доступ к SMTP-серверу
-
Установите Go:
# Скачайте с официального сайта https://golang.org/dl/
-
Установите Swag для документации API:
go install github.com/swaggo/swag/cmd/swag@latest
-
Настройка проекта:
cd back go mod download
-
Создайте файл
.env
в директорииback/
со следующими параметрами:# Конфигурация приложения APP_IP=localhost APP_PORT=8080 APP_JWT_SECRET=your_secret_key # База данных DBHOST=localhost DBPORT=5432 DBNAME=your_db_name DBUSER=your_db_user DBPASS=your_password DBSSLMODE=disable # SMTP SMTP_SERVER=smtp.example.com SMTP_MAIL_NAME=[email protected] SMTP_SSL_PORT=465 SMTP_PASSWORD=your_password SMTP_PAUSE=1000
-
Установите зависимости:
cd front npm install
-
Запуск в режиме разработки:
npm run dev
-
Сборка для продакшена:
npm run build
После установки:
- Backend API: http://localhost:8080
- Frontend dev server: http://localhost:5173
- Swagger документация API: http://localhost:8080/swagger/index.html
Полная документация API доступна через Swagger UI после запуска сервера по адресу: http://localhost:8080/swagger/index.html
APP_IP=localhost # IP адрес сервера
APP_PORT=8080 # Порт сервера
APP_URL=http://localhost:8080 # Полный URL сервера
APP_JWT_SECRET=your_secret_key # Секретный ключ для JWT токенов
DBHOST=localhost # Адрес сервера БД
DBPORT=5432 # Порт PostgreSQL (стандартный: 5432)
DBNAME=your_db_name # Имя базы данных
DBUSER=your_db_user # Имя пользователя БД
DBPASS=your_password # Пароль пользователя БД
DBSSLMODE=disable # Режим SSL подключения к БД
SMTP_SERVER=smtp.example.com # Адрес SMTP сервера
SMTP_MAIL_NAME=[email protected] # Email отправителя
SMTP_SSL_PORT=465 # SSL порт SMTP сервера
SMTP_PASSWORD=your_password # Пароль приложения для SMTP
SMTP_PAUSE=1000 # Пауза между отправками писем (мс)
AUTH_TIME_TO_LIVE=15 # Время жизни кэша (минуты)
AUTH_CLEANUP_INTERVAL=30 # Интервал очистки кэша (минуты)
Кэш используется для временного хранения данных пользователей в процессе регистрации:
- При начале регистрации данные пользователя сохраняются в кэш
- На указанную почту отправляется код подтверждения
- Код действителен в течение времени жизни кэша (15 минут)
- После успешного подтверждения кода данные удаляются из кэша и сохраняются в БД
Система очистки кэша:
- Каждые 30 минут запускается процесс очистки просроченных записей
- Если запрашивается просроченная запись до момента очистки, она будет удалена и доступ к ней будет закрыт
- Это обеспечивает как автоматическую очистку устаревших данных, так и немедленную реакцию на попытку использования просроченных записей