🎓 Шкед
Современная веб-платформа для управления расписанием занятий в университете МФТИ
📋 О проекте
Шкед — это комплексная система управления учебным процессом, разработанная специально для МФТИ. Платформа предоставляет инструменты для управления расписанием, домашними заданиями, посещаемостью, экзаменами и коммуникацией между всеми участниками образовательного процесса.
✨ Ключевые возможности
-
📅 Управление расписанием - создание и редактирование расписания занятий -
📝 Домашние задания - система создания, отслеживания и проверки ДЗ -
✅ Посещаемость - автоматизированная система отметки и отчетности -
🎯 Экзамены и зачеты - управление экзаменационной сессией -
👥 Подгруппы - гибкая система разделения студентов -
💬 Форум - обсуждения по предметам с модерацией -
📚 Документы и ресурсы - хранение РПД, ЭОР, Zoom-ссылок -
🤝 Встречи с куратором - система записи и управления встречами -
🔐 Система ролей - 8 типов пользователей с уникальными правами доступа -
🤖 Telegram интеграция - бот для уведомлений и взаимодействия -
📋 Лог активности - полный аудит всех действий пользователей -
🎨 Современный UI - адаптивный дизайн с темной/светлой темой
🎭 Роли пользователей
| Роль | Описание | Основные функции |
|---|---|---|
|
|
Администратор системы | Полный контроль, управление пользователями |
|
|
Преподаватель | Управление предметами, ДЗ, экзаменами |
|
|
Ассистент | Помощь преподавателю, проверка работ |
|
|
Со-преподаватель | Совместное ведение предмета |
|
|
Куратор/Наставник | Кураторство групп, встречи со студентами |
|
|
Глава учебного отдела | Управление учебным процессом |
|
|
Администратор кафедры | Администрирование кафедры |
|
|
Студент | Просмотр расписания, форум, встречи |
Примечание: В системе используется роль
lectorдля преподавателей. Маршруты/lector/*доступны для преподавателей.
🛠 ️ Технологический стек
Frontend
- Next.js 14 - React фреймворк с App Router
- React 18 - UI библиотека
- TypeScript - типизация
- Tailwind CSS - стилизация
- Radix UI - компоненты UI
- next-themes - поддержка тем (светлая/темная)
Backend
- Next.js API Routes - serverless API
- Prisma ORM - работа с базой данных
- PostgreSQL - реляционная БД
- NextAuth.js - аутентификация
Infrastructure
- Vercel - хостинг (рекомендуется)
- Neon/Supabase - PostgreSQL хостинг
- Uploadthing/S3 - хранение файлов
🚀 Быстрый старт
Требования
- Node.js 18+
- PostgreSQL 14+
- npm или yarn
Установка
- Клонируйте репозиторий
git clone https://github.com/PvUtrix/shked.git
cd shked
- Установите зависимости
npm install
- Настройте переменные окружения
cp .env.example .env
Заполните .env:
# База данных
DATABASE_URL="postgresql://user:password@localhost:5432/shked"
# NextAuth
NEXTAUTH_SECRET="your-secret-key-here"
NEXTAUTH_URL="http://localhost:3000"
# Telegram (опционально)
TELEGRAM_BOT_TOKEN="your-bot-token"
TELEGRAM_WEBHOOK_URL="https://your-domain.com/api/telegram/webhook"
- Настройте базу данных
# Создайте миграции
npx prisma migrate dev
# Наполните БД начальными данными
npx prisma db seed
- Запустите dev сервер
npm run dev
Откройте http://localhost:3000
📁 Структура проекта
shked/
├── app/ # Next.js App Router
│ ├── admin/ # Страницы админа (управление системой)
│ ├── lector/ # Страницы преподавателя (Lector role)
│ ├── student/ # Страницы студента
│ ├── mentor/ # Страницы ментора
│ └── api/ # API routes
├── components/ # React компоненты
│ ├── ui/ # Общие UI компоненты (Radix UI)
│ ├── admin/ # Компоненты админа
│ ├── lector/ # Компоненты преподавателя
│ ├── student/ # Компоненты студента
│ ├── mentor/ # Компоненты ментора
│ └── auth/ # Компоненты аутентификации
├── lib/ # Утилиты и конфигурация
│ ├── auth.ts # NextAuth конфигурация
│ ├── db.ts # Prisma клиент
│ ├── types.ts # TypeScript типы
│ ├── telegram/ # Telegram бот интеграция
│ └── cron/ # Cron задачи
├── prisma/ # Prisma схема и миграции
│ ├── schema.prisma # Схема БД
│ └── migrations/ # Миграции
├── hooks/ # React хуки
├── docs/ # Документация
├── scripts/ # Скрипты развертывания и миграции
└── public/ # Статические файлы
📚 Документация
Основная документация
- Индекс документации
- История изменений
- Отчёты о реализации
- Руководство пользователя
- Шаблон ПТИ
- Требования
Техническая документация
- API Reference
- Роли пользователей
- Telegram бот
- Лог активности
- Управление БД
- Структура проекта
- Развертывание
- Docker развертывание
🔐 Безопасность
- Все API endpoints защищены middleware
- Роль-ориентированный контроль доступа (RBAC)
- JWT токены для аутентификации
- Валидация данных на всех уровнях
- SQL injection защита через Prisma
- XSS защита через React
🧪 Тестирование
# Unit тесты
npm run test
# Integration тесты
npm run test:integration
# E2E тесты
npm run test:e2e
# Покрытие кода
npm run test:coverage
📦 Деплой
Vercel (рекомендуется)
- Подключите GitHub репозиторий к Vercel
- Настройте переменные окружения
- Vercel автоматически развернет приложение
Docker
# Сборка образа
docker build -t shked .
# Запуск контейнера
docker run -p 3000:3000 shked
Manual
# Сборка production
npm run build
# Запуск production
npm start
Подробнее в документации по развертыванию
🤝 Участие в разработке
Мы приветствуем вклад в развитие проекта!
- Fork репозиторий
- Создайте feature branch (
git checkout -b feature/AmazingFeature) - Commit изменения (
git commit -m 'Add some AmazingFeature') - Push в branch (
git push origin feature/AmazingFeature) - Откройте Pull Request
📄 Лицензия
Этот проект лицензирован под MIT License - см. файл LICENSE для деталей.
👥 Команда
Разработчик: Pavel Shershnev (Павел Шершнёв)
Компания: Tango.Vision
Заказчик: МФТИ (Московский физико-технический институт)
📞 Контакты
- Email: [email protected]
- Telegram: @username
- Website: https://shked.mfti.ru
🙏 Благодарности
- МФТИ за доверие и возможность создать этот проект
- Всем преподавателям и студентам за обратную связь
- Open source сообществу за отличные инструменты
Статус проекта: 🟢 Beta (v0.4.0-alpha) - 95% готовности
Последнее обновление: 19 ноября 2025
Made with