S

Shked

ШКЕД — это современная веб-платформа для управления расписанием занятий в университете с интегрированным Telegram ботом и LLM поддержкой. Разработана с использованием Next.js 14, TypeScript, PostgreSQL, Prisma ORM и GigaChat.

🎓 Шкед

Современная веб-платформа для управления расписанием занятий в университете МФТИ

Status Next.js TypeScript Prisma License

📋 О проекте

Шкед — это комплексная система управления учебным процессом, разработанная специально для МФТИ. Платформа предоставляет инструменты для управления расписанием, домашними заданиями, посещаемостью, экзаменами и коммуникацией между всеми участниками образовательного процесса.

✨ Ключевые возможности

  • 📅 Управление расписанием - создание и редактирование расписания занятий
  • 📝 Домашние задания - система создания, отслеживания и проверки ДЗ
  • ✅ Посещаемость - автоматизированная система отметки и отчетности
  • 🎯 Экзамены и зачеты - управление экзаменационной сессией
  • 👥 Подгруппы - гибкая система разделения студентов
  • 💬 Форум - обсуждения по предметам с модерацией
  • 📚 Документы и ресурсы - хранение РПД, ЭОР, Zoom-ссылок
  • 🤝 Встречи с куратором - система записи и управления встречами
  • 🔐 Система ролей - 8 типов пользователей с уникальными правами доступа
  • 🤖 Telegram интеграция - бот для уведомлений и взаимодействия
  • 📋 Лог активности - полный аудит всех действий пользователей
  • 🎨 Современный UI - адаптивный дизайн с темной/светлой темой

🎭 Роли пользователей

Роль Описание Основные функции
👨‍💼 Admin Администратор системы Полный контроль, управление пользователями
👨‍🏫 Lector Преподаватель Управление предметами, ДЗ, экзаменами
👔 Assistant Ассистент Помощь преподавателю, проверка работ
🎤 Co-Lector Со-преподаватель Совместное ведение предмета
🤝 Mentor Куратор/Наставник Кураторство групп, встречи со студентами
📊 Education Office Head Глава учебного отдела Управление учебным процессом
🏛️ Department Admin Администратор кафедры Администрирование кафедры
🎓 Student Студент Просмотр расписания, форум, встречи

Примечание: В системе используется роль 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

Установка

  1. Клонируйте репозиторий
git clone https://github.com/PvUtrix/shked.git
cd shked
  1. Установите зависимости
npm install
  1. Настройте переменные окружения
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"
  1. Настройте базу данных
# Создайте миграции
npx prisma migrate dev

# Наполните БД начальными данными
npx prisma db seed
  1. Запустите 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 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 (рекомендуется)

  1. Подключите GitHub репозиторий к Vercel
  2. Настройте переменные окружения
  3. Vercel автоматически развернет приложение

Docker

# Сборка образа
docker build -t shked .

# Запуск контейнера
docker run -p 3000:3000 shked

Manual

# Сборка production
npm run build

# Запуск production
npm start

Подробнее в документации по развертыванию

🤝 Участие в разработке

Мы приветствуем вклад в развитие проекта!

  1. Fork репозиторий
  2. Создайте feature branch (git checkout -b feature/AmazingFeature)
  3. Commit изменения (git commit -m 'Add some AmazingFeature')
  4. Push в branch (git push origin feature/AmazingFeature)
  5. Откройте Pull Request

📄 Лицензия

Этот проект лицензирован под MIT License - см. файл LICENSE для деталей.

👥 Команда

Разработчик: Pavel Shershnev (Павел Шершнёв)
Компания: Tango.Vision
Заказчик: МФТИ (Московский физико-технический институт)

📞 Контакты

🙏 Благодарности

  • МФТИ за доверие и возможность создать этот проект
  • Всем преподавателям и студентам за обратную связь
  • Open source сообществу за отличные инструменты

Статус проекта: 🟢 Beta (v0.4.0-alpha) - 95% готовности
Последнее обновление: 19 ноября 2025

Made with ❤️ for МФТИ