🏢🎓

«Кампус»

Система присутствия и планирования для студентов «Школы 21»

🏆 Хакатон Уфимского кампуса Школа-21
Первый внутренний хакатон • 2026
👥 Команда «БЯМстеры»
✅ PHP 8 + Slim 4
✅ PostgreSQL 16
✅ HTMX + Mobile First
🔗 School21 API

🎯Проблема

❌ Студенты не видят, кто сейчас в кампусе

Трудно найти одногруппника для совместной работы или консультации

❌ Нет удобного планирования посещения

Сложно скоординировать время для командной работы над проектами

❌ Информация разрознена

Данные о студентах, проектах и мероприятиях хранятся в разных местах

🚀Цель проекта

✨ Вовлечь студентов к более частому посещению кампуса
  • Удобное представление информации о присутствии
  • Простое планирование совместного времени
  • Укрепление связей внутри студенческого сообщества

⚙️Основной функционал

👁️Статус присутствия

  • Кто сейчас в кампусе
  • На каком рабочем месте
  • Статус: «учусь», «кушаю», «в кампусе»

📅Планирование

  • Кто и когда планирует прийти
  • Комментарии к планам
  • Уведомления о совпадениях

👤Справочник пиров

  • Имя, логин, Telegram
  • Участие в клубах
  • Самостоятельное заполнение

🔗Интеграция с API

  • Подгрузка данных о студентах
  • Синхронизация мероприятий
  • OAuth2 авторизация
💡 Ключевая особенность:

Вся информация (статус, планы, клубы, контакты) вносится пиром самостоятельно — полный контроль над приватностью

🛠️Технический стек

🔙Backend

  • PHP 8 — современный синтаксис
  • Slim 4 — лёгкий микров-framework
  • Medoo 1.7 — минималистичный ORM
  • PostgreSQL 16 — надёжная БД с JSONB

🔜Frontend

  • HTML5 + CSS3 — семантика и переменные
  • Mobile First — адаптивная вёрстка
  • HTMX — интерактивность без сложного JS
  • Lucide Icons — современные SVG-иконки

🔐Безопасность и качество

  • ✅ Доступ к куки для сессий только по HTTP-заголовкам
  • ✅ Защита от межсайтовой подделки запроса (CSRF protection)
  • ✅ Контроль запросов к API
  • ✅ Валидация всех входных данных
  • ✅ Разделение логики, представления и стилей
  • ✅ Комментарии в коде
  • ✅ Логирование ошибок
  • ✅ Поддержка тем (светлая/тёмная)
📦 API проекта:

GET /api/campus/status • GET /api/campus/planning
POST /presence/update • GET /api/peers • GET /api/clubs

🏗️Архитектура приложения

📊 MVC + Service Layer

Контроллеры → Сервисы → Medoo → PostgreSQL
Чёткое разделение ответственности

🔄 HTMX + hx-swap-oob

Динамические обновления без перезагрузки страницы
Один запрос обновляет несколько элементов интерфейса

🗄️ Кэширование и синхронизация

campus_cache, cluster_cache для данных API
Cron-скрипт sync.php для фоновой синхронизации

🎨 Компонентный подход в шаблонах

Переиспользуемые компоненты: avatar, icon, card, modal
Единая система классов-помощников вместо встроенных в разметку стилей

⚡ Производительность:
  • Индексы в БД для быстрых запросов
  • Ленивая загрузка изображений (avatar)
  • Минимизация запросов к внешнему API
  • Оптимизированные таблицы стилей без фреймворков

Что получает студент

👀Видимость

  • Кто в кампусе прямо сейчас
  • Где сидят одногруппники
  • Статистика по статусам

🤝Координация

  • Планирование совместных сессий
  • Поиск партнёров для проектов
  • Синхронизация расписания

🎯Профиль

  • Телеграм для быстрой связи
  • Клубы по интересам
  • Контроль видимости данных

📱Удобство

  • Адаптивный под разные размеры экранов интерфейс
  • Быстрые действия в один клик
  • Тёмная/светлая темы
🔒 Приватность под контролем:
  • ✅ Можно скрыть профиль от публичного просмотра
  • ✅ Самостоятельное заполнение контактов
  • ✅ Выбор отображаемого имени
  • ✅ Удаление аватара в один клик

🚀План развития

🔔Ближайшие улучшения

  • Push-уведомления о событиях
  • PWA — установка на домашний экран
  • Аналитика посещаемости
  • Интерактивная карта кампуса

🌐Масштабирование

  • Поддержка нескольких кампусов
  • Экспорт данных в JSON/CSV
  • REST API для внешних интеграций

🎮Геймификация (идеи)

  • 🏆 Достижения за регулярное посещение
  • 📊 Лидерборды по активности
  • 🎁 Бонусы за участие в клубах
  • 🤖 Бот для интеграции в мессенджеры
  • 📈 Персональные рекомендации
  • 🎨 Настраиваемый интерфейс
💡 Технический долг и оптимизация:

• Unit-тесты для сервисов • Кеширование на уровне Redis • • GraphQL API для гибких запросов • Микросервисная архитектура

🎯 Достигнутые результаты:
  • ✅ Работающий продукт с компонентной архитектурой
  • ✅ Адаптивный под разные экраны интерфейс
  • ✅ Интеграция с программным интерфейсом сайта Школы 21
  • ✅ Чистый, комментированный код с разделением слоёв
  • ✅ Система тем и компонентов для масштабирования
kampus-21.ru

🙏Спасибо за внимание!