Комплексное веб-приложение для управления школьной столовой с разграничением прав доступа для учеников, поваров и администраторов.
https://rutube.ru/video/private/82a9eb25f80867b93af7d89a84c6dbe2/?p=ChJ4hmeJdLje16WF5JdLDw
Система автоматизирует весь процесс работы столовой от планирования меню до выдачи заказов. Построена на современных веб-технологиях и обеспечивает безопасное, масштабируемое решение для образовательных учреждений любого размера.
- Регистрация аккаунта с подтверждением email
- Просмотр меню с планированием на 30 дней вперед
- Заказ отдельных блюд и управление абонементами
- Электронный кошелек с отслеживанием баланса
- Полная история заказов и транзакций
- Управление очередью заказов в реальном времени
- Отслеживание выдачи блюд
- Ежедневная статистика и метрики
- Автоматическое списание со склада
- Управление пользователями всех ролей
- Финансовая отчетность и аналитика выручки
- Общая статистика системы
- Мониторинг заказов
- Контроль складских запасов
- React 18.2 с функциональными компонентами и хуками
- React Router DOM для маршрутизации
- Vite для оптимизированной сборки
- Современный CSS с адаптивным дизайном
- Node.js с фреймворком Express
- PostgreSQL для production-окружения
- SQLite для разработки и тестирования
- JWT-аутентификация
- bcrypt для хеширования паролей
- Helmet.js для защиты HTTP-заголовков
- Express rate limiting
- Настройка CORS
- AES-256 шифрование конфиденциальных данных
- Поддержка двухфакторной аутентификации
- Логирование транзакций и аудит
- Node.js 16+
- PostgreSQL 14+
- Docker и Docker Compose
git clone <repository-url>
cd school-canteen
copy .env.example .env.docker
docker-compose up -d
docker-compose psДоступ:
- Frontend: http://localhost:8080
- Backend API: http://localhost:5000
- HTTPS: https://localhost:8443
git clone <repository-url>
cd school-canteen
npm install
copy .env.example .env
npm run server
npm run devДоступ: http://localhost:3000
docker-compose -f docker-compose.production.yml up -ddocker-compose logs -f
docker-compose down
docker-compose down -v
docker-compose up -d --build
docker-compose psОсновные параметры конфигурации в .env:
NODE_ENV=production
PORT=5000
DATABASE_URL=postgresql://user:pass@host:5432/db
SESSION_SECRET=ваш-секретный-ключ
ACCESS_TOKEN_SECRET=ваш-jwt-секрет
ENCRYPTION_KEY=ваш-ключ-шифрования
ADMIN_SECRET_CODE=код-регистрации-админа
CHEF_SECRET_CODE=код-регистрации-повара
EMAIL_HOST=smtp.gmail.com
EMAIL_USER=ваш-email@gmail.com
EMAIL_PASSWORD=пароль-приложенияПриложение автоматически инициализирует схему базы данных при первом запуске. Для ручной настройки:
# PostgreSQL
psql -U postgres -d school_canteen -f init-db.sql
# SQLite
sqlite3 school_canteen.db < init-db.sqlPOST /api/auth/register- Регистрация пользователяPOST /api/auth/login- Вход в системуPOST /api/auth/logout- Завершение сессииGET /api/auth/check- Проверка сессииPOST /api/auth/verify-email- Подтверждение emailPOST /api/auth/forgot-password- Запрос сброса пароляPOST /api/auth/reset-password- Подтверждение сброса пароля
GET /api/menu- Получить список блюдGET /api/menu/date/:date- Меню на конкретную датуPOST /api/menu- Создать блюдо (только админ)PUT /api/menu/:id- Обновить блюдо (только админ)DELETE /api/menu/:id- Удалить блюдо (только админ)
GET /api/orders- История заказов пользователяPOST /api/orders- Создать новый заказGET /api/orders/:id- Детали заказаPUT /api/orders/:id/cancel- Отменить заказ
GET /api/chef/pending-meals- Заказы на выдачуGET /api/chef/issued-today- Журнал выдачи за деньPOST /api/chef/issue-meal- Отметить выдачу блюда
GET /api/admin/stats- Статистика системыGET /api/admin/users- Управление пользователямиGET /api/admin/orders- Все заказыGET /api/admin/revenue- Финансовые отчетыPOST /api/admin/balance/:userId- Изменить баланс пользователя
school-canteen/
├── src/ # Frontend source
│ ├── components/ # React components
│ │ ├── StudentDashboard.jsx
│ │ ├── ChefDashboard.jsx
│ │ └── AdminDashboard.jsx
│ ├── pages/ # Route pages
│ │ ├── Home.jsx
│ │ ├── StudentAuth.jsx
│ │ ├── ChefAuth.jsx
│ │ ├── AdminAuth.jsx
│ │ ├── Dashboard.jsx
│ │ └── ForgotPassword.jsx
│ ├── App.jsx
│ ├── main.jsx
│ └── index.css
├── server/ # Backend source
│ ├── routes/ # API routes
│ │ ├── auth.js
│ │ ├── menu.js
│ │ ├── orders.js
│ │ ├── subscriptions.js
│ │ ├── chef.js
│ │ └── admin.js
│ ├── middleware/ # Express middleware
│ │ ├── auth.js
│ │ ├── rateLimiter.js
│ │ ├── jwt.js
│ │ └── security.js
│ ├── utils/ # Utility functions
│ │ ├── phone.js
│ │ ├── emailService.js
│ │ ├── encryption.js
│ │ ├── twoFactor.js
│ │ ├── qrCode.js
│ │ └── transactionLogger.js
│ ├── database.js
│ ├── database-postgres.js
│ └── index.js
├── docker-compose.yml
├── Dockerfile
├── package.json
└── vite.config.js
users- Учетные записи пользователей и аутентификацияmenu- Блюда меню и ценыorders- Записи заказов и статусыsubscriptions- Абонементы на питаниеissued_meals- Отслеживание выдачиinventory- Управление складомmenu_requests- Предложения учеников по менюnotifications- Системные уведомленияtransaction_logs- Журнал аудитаpassword_resets- Токены восстановления пароля
- Хеширование паролей bcrypt с солью
- JWT-токены с механизмом обновления
- HTTP-only защищенные cookies
- Управление сессиями с истечением срока
- Обязательное подтверждение email
- Сброс пароля с ограниченными по времени токенами
- AES-256 шифрование конфиденциальных данных
- Защита от SQL-инъекций через параметризованные запросы
- XSS-защита через санитизацию ввода
- CSRF-валидация токенов
- Rate limiting на endpoints аутентификации
- Логирование транзакций для соответствия аудиту
- Ролевые разрешения (RBAC)
- Секретные коды для регистрации персонала
- Валидация сессий на защищенных маршрутах
- Проверка авторизации API endpoints
Ученик:
Email: student@test.com
Пароль: test123
Повар:
Email: chef@test.com
Пароль: test123
Администратор:
Email: admin@test.com
Пароль: test123
npm test
npm run test:integration
npm run test:e2e- Установить NODE_ENV=production
- Настроить PostgreSQL
- Сгенерировать секреты
- Включить HTTPS/SSL
- Настроить email-сервис
- Настроить резервное копирование
- Настроить мониторинг и логирование
- Проверить заголовки безопасности
- Протестировать критические пути
docker-compose -f docker-compose.production.yml up -d- Среднее время ответа API: < 100мс
- Размер frontend-бандла: ~200KB (gzipped)
- Оптимизация запросов БД с индексами
- Стратегия кеширования данных меню
- Ленивая загрузка компонентов дашборда
- Chrome 90+
- Firefox 88+
- Safari 14+
- Edge 90+
См. CONTRIBUTING.md:
- Стандарты кода
- Git workflow
- Pull request процесс
- Требования к тестированию
Дополнительная документация доступна в server/md/:
DOCKER_GUIDE.md- Руководство по DockerINVENTORY_SYSTEM.md- Управление складомSECURITY_AUDIT.md- Реализация безопасностиAPI_REFERENCE.md- Полная документация API
PORT=5001- Проверьте PostgreSQL
- Проверьте DATABASE_URL
- Проверьте права пользователя
- Проверьте SMTP-учетные данные
- Проверьте файрвол
- Просмотрите логи
MIT License - подробности в файле LICENSE
- GitHub Issues
См. CHANGELOG.md
MIT License