School CRM - Система управления задачами для образовательных учреждений
Описание проекта
School CRM - это веб-приложение для управления задачами и проектами в образовательных учреждениях. Система позволяет эффективно организовывать работу между администрацией, учителями и сотрудниками школы.
Основные возможности
🔐 Многоуровневая аутентификация
- Локальная авторизация - встроенная система пользователей
- LDAP-интеграция - поддержка доменной аутентификации
- Ролевая модель:
- Администратор - полный доступ ко всем функциям
- Учитель - создание и управление своими задачами
📋 Управление задачами
- Создание задач с детальным описанием и сроками
- Назначение исполнителей - несколько пользователей на одну задачу
- Индивидуальные сроки для каждого исполнителя
- Копирование задач - быстрая репликация существующих шаблонов
- Мягкое удаление с возможностью восстановления
📊 Система статусов
- ⏳ Назначена
- 🔄 В работе
- ✅ Выполнена
- ❗ Просрочена (автоматическое определение)
📎 Работа с файлами
- Загрузка документов - до 15 файлов, максимум 300MB
- Организованное хранение - структура папок по задачам и пользователям
- Безопасное скачивание - проверка прав доступа
📝 Логирование и аналитика
- Детальная история действий - кто, что и когда сделал
- Отслеживание изменений статусов и назначений
- Мониторинг загрузки файлов
Технологический стек
Backend
- Node.js - серверная платформа
- Express.js - веб-фреймворк
- SQLite - база данных
- Multer - обработка загрузки файлов
- Bcryptjs - хэширование паролей
Frontend
- Чистый JavaScript - без зависимостей от фреймворков
- HTML5/CSS3 - адаптивный интерфейс
- AJAX - асинхронные запросы к API
Безопасность
- Сессии - управление аутентификацией
- Проверка прав доступа - на всех уровнях
- Валидация данных - клиентская и серверная
Установка и запуск
Предварительные требования
- Node.js 14+
- npm или yarn
Шаги установки
- Клонировать репозиторий
- Установить зависимости:
npm install - Настроить переменные окружения в
.env - Запустить сервер:
npm start - Открыть в браузере:
http://localhost:3000
Конфигурация
Создайте файл .env со следующими параметрами:
PORT=3000
SESSION_SECRET=your_secret_key
LDAP_AUTH_URL=your_ldap_endpoint
ALLOWED_GROUPS=admin_teachers,department_heads
API Endpoints
Аутентификация
POST /api/login- вход в системуPOST /api/logout- выходGET /api/user- информация о текущем пользователе
Задачи
GET /api/tasks- список задачPOST /api/tasks- создание задачиGET /api/tasks/:id- получение задачиPUT /api/tasks/:id- обновление задачиDELETE /api/tasks/:id- удаление задачиPOST /api/tasks/:id/copy- копирование задачи
Файлы
POST /api/tasks/:id/files- загрузка файловGET /api/tasks/:id/files- список файлов задачиGET /api/files/:id/download- скачивание файла
Логи
GET /api/activity-logs- история действий
Тестовые пользователи
После первого запуска создаются тестовые пользователи:
- Администратор: director / director123
- Завуч: zavuch / zavuch123
- Учитель: teacher / teacher123
Лицензия
MIT License - разрешается свободное использование и модификация.
Поддержка
Для вопросов и предложений создавайте issues в репозитории проекта.
Структура проекта
school-crm/ ├── server.js # Основной сервер ├── auth.js # Логика аутентификации ├── database.js # Работа с базой данных ├── package.json # Зависимости ├── .env # Конфигурация ├── public/ # Статические файлы │ ├── index.html # Главная страница │ ├── style.css # Стили │ └── script.js # Клиентский код └── uploads/ # Загруженные файлы └── tasks/ # Файлы задач
.env
Первые 3 пользователя системы
USER_1_LOGIN=director USER_1_PASSWORD=director123 USER_1_NAME=Директор школы USER_1_EMAIL=director@school.ru
USER_2_LOGIN=zavuch USER_2_PASSWORD=zavuch123 USER_2_NAME=Завуч USER_2_EMAIL=zavuch@school.ru
USER_3_LOGIN=teacher USER_3_PASSWORD=teacher123 USER_3_NAME=Учитель математики USER_3_EMAIL=math@school.ru
SESSION_SECRET=your_secret_key_here
LDAP настройки
LDAP_AUTH_URL=https://ldap.ru/api/auth ALLOWED_GROUPS=admin
Добавьте эту строку в ваш .env файл
JWT_SECRET=your_super_secret_jwt_key_here_make_it_very_long_and_secure
Настройки сервиса уведомлений
NOTIFICATION_SERVICE_URL=https://alarm.ru/api/send-message NOTIFICATION_SERVICE_LOGIN=kalugin66 NOTIFICATION_SERVICE_PASSWORD=kalugin66