Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама
Новини 03 листопада 2026

Skuul 3: відкрита система управління школою на Laravel 13 і Livewire 4

Skuul - відкритий застосунок для управління школою від Marvellous Ifezue - вийшов у третій версії, повністю переписаній на Laravel 13 і Livewire 4. Це не пакет, який підключають через Composer, а цілий продукт: зарахування, відвідуваність, журнал оцінок, розклад, рахунки й портал для батьків в одній інсталяції. Проєкт має близько 470 зірок на GitHub і ліцензію MIT.

Реліз v3.0.0 вийшов 16 жовтня 2026 року, за ним того ж дня - два патчі з правками порталу. Свіжі v3.1.1 (24 жовтня) і v3.1.2 (28 жовтня) нових можливостей не додають: перший налаштовує Release Please і політику безпеки, другий відкриває документацію прямо із застосунку. Проєкт помітив і Laravel News.

Що вміє

Одна інсталяція тримає кілька організацій, а кожна організація - кілька кампусів. За нотатками до релізу, у v3 є:

  • учні й родини - лист очікування на зарахування, зв'язки учня з опікунами, переведення учнів між кампусами; кампус може запросити записи учня в іншого кампусу, і кожен такий запит потребує схвалення;
  • навчання й оцінювання - навчальні цикли, курси, журнали оцінок, розклад іспитів і результати, які перед публікацією проходять перевірку; табелі й транскрипти формуються з опублікованих результатів;
  • фінанси - платежі, повернення коштів і кредит учня проводяться через бухгалтерську книгу, а фінансові періоди визначають, коли проведення дозволені;
  • портал для родини - відвідуваність, оцінки, розклад, рахунки, документи, оголошення й звернення до школи;
  • опційні модулі кампусу - дисципліна й добробут, персонал, календар, гуртожиток, бібліотека, гуртки й програми, імпорт даних;
  • звіти - експорт у CSV, XLSX і PDF збирається у фоні;
  • експлуатація - зашифровані резервні копії за розкладом, щотижнева репетиція відновлення, health-ендпоінти і команди skuul:release-readiness та skuul:update.

Інтерфейс побудований на April UI - бібліотеці компонентів того ж автора (yungifez/april-ui у composer.json). Подивитися все можна в демо, яке скидається щогодини.

На чому побудований

У composer.json - laravel/framework ^13.0, livewire/livewire ^4.0, laravel/jetstream ^5.0, spatie/laravel-permission ^8.0, brick/money для грошових сум і barryvdh/laravel-dompdf для PDF. Для розробки - Pest 5, Larastan, Pint і Laravel Boost.

Вимоги з README:

  • PHP 8.4.1 або новіший (Sail працює на PHP 8.5, CI тестує 8.4 і 8.5);
  • Composer 2, Node.js 24 і npm;
  • MySQL 8 і Redis;
  • Docker із Compose для локальної розробки через Sail.

Як запустити

Для робочої інсталяції README радить брати тег релізу, а не гілку main, і йти за інструкцією зі встановлення. Локально все запускається через Sail:

  git clone --branch v3.1.2 https://github.com/yungifez/skuul.git skuul
  cd skuul
  composer install --no-interaction --prefer-dist
  cp .env.example .env

  vendor/bin/sail up -d
  vendor/bin/sail npm ci
  vendor/bin/sail npm run build
  vendor/bin/sail artisan key:generate --no-interaction
  vendor/bin/sail artisan migrate --no-interaction
  vendor/bin/sail artisan db:seed --class=WorldSeeder --no-interaction
  vendor/bin/sail artisan storage:link --no-interaction

Далі браузерний інсталятор створює першого адміністратора платформи, організацію і перший кампус і завантажує потрібні ролі та дозволи. Пароля за замовчуванням немає. Після входу лишається пройти чекліст налаштування школи: навчальний рік, звітні періоди, класи, шкали оцінювання. Для фонових задач потрібні queue:work і schedule:work. Демо-дані README радить завантажувати лише в тестову інсталяцію і ніколи не запускати сідер за замовчуванням на продакшн-базі.

Що подивитися в коді

Навіть якщо школу ви не автоматизуєте, Skuul корисно почитати як великий відкритий застосунок на актуальному стеку.

Ролі в межах кампусу. У config/permission.php увімкнено 'teams' => true, а team_foreign_key - це school_id: кампус у коді називається школою. Middleware SetActiveSchool один раз на запит визначає, у якій школі працює користувач, а сервіс App\Services\School\SchoolContext зберігає її в сесії й викликає setPermissionsTeamId() у PermissionRegistrar. Коментар у middleware пояснює задум: усі подальші запити, політики й перевірки ролей читають школу з цього контексту, тож решті коду не треба пам'ятати про умову за школою. За оглядом Laravel News, інсталятор створює вісім ролей - від platform-admin і organization-admin до teacher, accountant, student і parent, а кампус може скопіювати роль і зробити з неї власну.

Модулі, що вимикаються. Middleware EnsureFeatureIsEnabled приймає назву модуля з enum App\Enums\Feature і віддає 404, якщо кампус його вимкнув. Записи при цьому лишаються: закривається лише вхід, і після повторного ввімкнення історія на місці.

Livewire-компоненти. У app/Livewire - 168 класів, майже всі на верхньому рівні й названі за дією: CreateStudentForm, EditFeeInvoiceForm, ListStudentsTable, GradebookMarkSheet, LibraryLendingDesk, PortalRequestInbox. Спільна поведінка винесена в трейти в app/Livewire/Concerns. Окремо варто глянути AGENTS.md і теку .ai/rules: проєкт тримає правила для ШІ-агентів у репозиторії, поруч із гайдлайнами Laravel Boost.

Обмеження й оновлення з v2

Оновлення з v2 - ламальна зміна з втратою даних. Міграції v3 видаляють старі результати іспитів, журнали без прив'язки до курсу та системи оцінювання і не конвертують їх, а відкат міграцій нічого не повертає. Автор радить спершу прогнати оновлення на копії даних і зберегти повну резервну копію бази, завантажені файли та початковий APP_KEY. Версію 2 оголошено застарілою.

Laravel News, посилаючись на документацію, перелічує й прогалини v3:

  • немає публічного REST API, API-токени вимкнено;
  • платіжний канал Stripe існує, але маршрутів оплати до нього не підключено, тож родини бачать рахунки в порталі, але не оплачують їх там - платежі персонал вносить вручну;
  • немає процесу атестації персоналу;
  • числовий калькулятор оцінок може рахувати порожню, пропущену чи незараховану оцінку як нуль - такі оцінки варто перевіряти перед публікацією результатів.

Кому це стане в пригоді

Українським розробникам, які роблять проєкти для шкіл, курсів чи мереж навчальних закладів, Skuul дає готову основу під MIT: структуру з кампусами, ролями й порталом можна взяти і доробити під себе, а не будувати з нуля. Варто пам'ятати, що інтеграції із зовнішніми системами та онлайн-оплату доведеться писати самим - як і місцеву специфіку оцінювання та звітності.

Як навчальний матеріал проєкт цікавий будь-кому, хто будує застосунок із кількома орендарями (multi-tenant) на Spatie Permission: команда в репозиторії вже розв'язала, як тримати контекст кампусу в одному місці. Почніть із SchoolContext, SetActiveSchool і config/permission.php, а потім відкрийте демо і подивіться, як це виглядає для різних ролей.

20

Читати в документації

Коментарі

Увійдіть, щоб залишити коментар

Будьте першим, хто залишить коментар!

Читайте також

Новини 04 листопада 2026

Laravel 13.40: довгі завдання черги, insertBefore() для middleware і strict для запиту

Laravel 13.40.0 додає Queue::whenJobRunsLongerThan() і Schedule::whenTaskRunsLongerThan() для завдань черги та планувальника, що виконуються задовго, а також insertBefore() і insertAfter() для вбудованого стеку middleware. Крім того - прапорець strict для $request->integer() і string() та DB::hasCommitId() для перевірки реплік.

2
Новини 04 листопада 2026

Вразливість у Concurrency: вивід задачі міг призвести до виконання коду в Laravel

Laravel 13.40.0 і 12.71.0 закривають вразливість у драйвері process фасаду Concurrency: задача, яка друкує текст від користувача, могла підробити свій результат, а батьківський процес робив його unserialize(). Пояснюємо, кого це стосується і що зробити до оновлення.

2

Вакансії за темою

King Group Нова
Сьогодні

Middle PHP developer

Middle PHP розробник для високонавантаженої веб-платформи Social Casino/Online Casino: розвиток продукту, перехід монолітного проєкту на мікросервіси (Symfony), оптимізація баз даних, написання unit та functional тестів. Стек: PHP 7.4, Symfony 4, Yii, PostgreSQL 14, Redis, RabbitMQ, NGINX. Вимоги: 3-4+ роки продуктового досвіду з PHP, Yii, Symfony, PostgreSQL, розуміння REST API, Git, ООП та SOLID. Досвід з брокерами повідомлень і DDD буде плюсом.

Tech Lead — Fintech

Tech Lead для фінтех-платформи бізнес-витрат і платежів: активна розробка, архітектурні рішення, стабільність продакшену та менторство команди. Ключовий стек: PHP, Laravel/Lumen, MySQL, Redis, Docker, знання JavaScript (Vue.js, React на базовому рівні). Вимоги: розуміння життєвого циклу карткових транзакцій і криптовалют, досвід побудови надійних фінансових систем (баланси, звірка, аудит, безпечні API), DevOps-навички на Linux.

Bewort Нова
Сьогодні

Senior Full-Stack Developer (PHP/Laravel, Vue)

Розробка та розвиток ключових функцій корпоративної платформи на Laravel з обробкою бекенду та фронтенду на Vue. Потрібні глибокі знання внутрішньої архітектури фреймворку, досвід застосування SOLID, DDD, подій і черг, а також досвід роботи зі складними проєктами. Обов'язкове активне використання AI-інструментів для написання коду та англійська не нижче B2. Переваги: досвід із Vue, мультитенантними SaaS, AWS, CI/CD та LLM-інтеграціями.

Пакети за темою

Kalimera

welldigit/kalimera

Interactive installer that scaffolds Laravel applications the Well Digit way.

v1.0.0 16

Filament

filament/filament

Найпопулярніша адмін-панель для Laravel: ресурси, таблиці, форми та дашборди описуються PHP-класами поверх Livewire, Alpine і Tailwind. Замінює рутину CRUD-інтерфейсів декларативною конфігурацією.

31,852 v5.7.6 10