О проекте
Веб-приложение для ведения и публикации учебного расписания. В одной панели можно управлять группами, преподавателями, дисциплинами, аудиториями и учебными днями, а готовое расписание удобно просматривать с компьютера, планшета или телефона.
- Стек
- PHP · SQLite · nginx · HTML · CSS · JavaScript
- Направление
- Внутренние инструменты
- Год
- 2026
Задача
Идея проекта появилась из обычной практической задачи: нужно было публиковать учебное расписание на сайте, не загружая каждый раз новый Excel-файл и не заставляя пользователей скачивать документы ради просмотра нескольких занятий.
Готового решения, которое одновременно было бы простым, удобным и подходило под нужный сценарий работы, на момент начала разработки найти не удалось. Одни системы оказались слишком громоздкими, другие были рассчитаны на значительно более крупную инфраструктуру или зависели от внешних сервисов.
В результате было решено сделать собственное небольшое веб-приложение: администратор ведёт расписание через браузер, а студенты и преподаватели открывают уже готовую опубликованную страницу и выбирают нужную дату и группу.
Реализация
Schedule состоит из административной панели и открытой страницы расписания.
В панели управления собраны основные справочники, необходимые для работы: учебные группы, преподаватели, дисциплины и аудитории. Отдельно настраивается сетка учебных пар — их номера, время начала и окончания, причём расписание звонков может отличаться в зависимости от дня недели.
Само расписание формируется по учебным дням. Новый день можно создать с нуля или скопировать уже подготовленный, после чего заполнить занятиями и опубликовать. Для каждого занятия выбираются группа, дисциплина, преподаватель, аудитория и номер пары. При необходимости можно указать тип занятия, добавить примечание, отметить дистанционный формат или отмену.
Для работы нескольких администраторов предусмотрены отдельные учётные записи. Если один пользователь уже редактирует определённый учебный день, система не позволяет другому одновременно изменять тот же день и тем самым случайно перезаписать его работу.
Публичная часть специально сделана проще административной. Пользователь выбирает дату и группу и сразу видит готовое расписание. На большом экране можно вывести несколько групп одновременно, а на смартфоне отображается только выбранная группа, чтобы при большом количестве групп страница не превращалась в длинную неудобную ленту.
Название сайта, заголовок и подзаголовок публичной страницы меняются из настроек панели управления, поэтому Schedule можно использовать в разных образовательных организациях без изменения исходного кода.
Приложение работает на PHP и хранит данные в SQLite. Отдельный сервер базы данных для него не требуется. Установка выполняется на обычный веб-сервер с nginx и PHP-FPM, а первоначальная настройка проходит через браузер.
Для рабочих данных предусмотрена описанная в документации процедура резервного копирования и восстановления SQLite с проверкой целостности базы. Там же описан перенос приложения и обновление между версиями.
Результат
Получился самостоятельный сервис, который заменяет публикацию расписания в виде постоянно обновляемых Excel-файлов полноценной веб-страницей.
Администратор ведёт основные данные и само расписание из одной панели, а после публикации изменения сразу становятся доступны посетителям. При этом публичная часть не перегружена функциями управления и остаётся понятной даже человеку, который впервые открыл сайт.
Расписание удобно просматривать как с обычного компьютера, так и со смартфона. Пользователю не требуется авторизация, установка приложения или скачивание документов — достаточно открыть сайт, выбрать дату и свою группу.
Schedule не зависит от внешней информационной системы и не требует отдельного сервера СУБД. Его можно развернуть на собственном веб-сервере образовательной организации и использовать как самостоятельное решение для публикации расписания.