Веб-приложение для управления пользователями медицинской информационной системы ФГБУ ФНОЦ МСЭ и Р им. Г.А. Альбрехта Минтруда России.
GBData представляет собой Node.js веб-приложение, построенное на базе Express.js, которое предоставляет функциональность для:
- Аутентификации пользователей
- Управления данными пользователей (добавление, редактирование, удаление)
- Просмотра статистики и попыток пользователей в играх
- Генерации PDF отчетов с графиками прогресса
- Backend: Node.js, Express.js
- База данных: MySQL с использованием mysql2
- Шаблонизатор: EJS с express-ejs-layouts
- Аутентификация: Express-session
- CSS Framework: Bulma
- Графики: Chart.js с chartjs-node-canvas для серверного рендеринга
- PDF генерация: Puppeteer
- Хеширование: Crypto (SHA-256)
/
├── app.js # Главный файл приложения
├── controllers/ # Контроллеры приложения
│ ├── authController.js # Аутентификация
│ └── homeController.js # Основная логика
├── routes/ # Маршрутизация
│ ├── authRouter.js # Маршруты аутентификации
│ └── homeRouter.js # Основные маршруты
├── views/ # Шаблоны EJS
│ ├── layouts/ # Макеты страниц
│ ├── auth/ # Страницы аутентификации
│ ├── user/ # Страницы пользователей
│ └── error.ejs # Страница ошибок
├── dataBase/ # Конфигурация базы данных
│ └── dataBase.js # Пул соединений MySQL
├── public/ # Статические файлы
│ ├── css/ # Стили
│ ├── imgs/ # Изображения
│ ├── bulma-1.0.2/ # CSS фреймворк
│ └── chart.js/ # Библиотека графиков
├── db.sql # Скрипт создания базы данных
└── package.json # Зависимости проекта
- Node.js (версия 14 или выше)
- MySQL Server
- npm или yarn
git clone <repository-url>
cd Sitenpm installСоздайте базу данных MySQL и выполните скрипт db.sql:
mysql -u root -p < db.sqlСоздайте файл .env в корне проекта:
PORT=3000
NODE_ENV=development
SECRET_KEY=your-secret-key-here
DB_HOST=localhost
DB_PORT=3306
DB_USER=your-db-user
DB_PASSWORD=your-db-password
DB_NAME=geometrybeatdbДля запуска в режиме разработки:
npm run devДля запуска в продакшене:
npm startСервер будет доступен по адресу: http://localhost:3000
GET /login- Страница входаPOST /login- Обработка входаGET /logout- Выход из системы
GET /- Список пользователей (требует аутентификации)GET /add- Форма добавления пользователяPOST /add- Создание пользователяGET /edit/:login- Форма редактирования пользователяPOST /edit/:login- Обновление данных пользователяPOST /delete/:login- Запрос на удаление пользователя
GET /attempts/:login- Просмотр попыток пользователяGET /attempts/:login/pdf-report- Скачивание PDF отчета
users- Пользователи системыuser_level_records- Записи попыток пользователей по уровнямuser_delete_requests- Запросы на удаление пользователейuser_statuses- Справочник статусов пользователей
create_delete_request(login)- Создание запроса на удалениеcancel_delete_request(login)- Отмена запроса на удалениеexecute_delete_request(login)- Выполнение удаления данных
- Хеширование паролей с использованием SHA-256
- Защита от SQL-инъекций через подготовленные запросы
- HttpOnly cookies для сессий
- Валидация входных данных
- Обработка ошибок без раскрытия чувствительной информации в продакшене
npm start- Запуск сервераnpm run dev- Запуск в режиме разработки с nodemonnpm test- Запуск тестов (не реализованы)
- Контроллеры содержат бизнес-логику и обработку запросов
- Маршруты определяют endpoints и связывают их с контроллерами
- Представления используют EJS для рендеринга HTML
- Модели (база данных) используют mysql2 для взаимодействия с MySQL
Для развертывания в продакшене:
- Установите переменную окружения
NODE_ENV=production - Настройте обратный прокси (nginx/apache)
- Убедитесь, что база данных доступна
- Запустите приложение через process manager (pm2)
ISC License
sava