---
title: "Skuul 3: відкрита система управління школою на Laravel 13 і Livewire 4"
url: https://laravelukraine.com/blog/skuul-3-vidkrita-sistema-upravlinnia-skoloiu-na-laravel-13-i-livewire-4
date: 2026-11-03
---

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

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

Реліз [v3.0.0](https://github.com/yungifez/skuul/releases/tag/v3.0.0) вийшов 16 жовтня 2026 року, за ним того ж дня - два патчі з правками порталу. Свіжі [v3.1.1](https://github.com/yungifez/skuul/releases/tag/v3.1.1) (24 жовтня) і [v3.1.2](https://github.com/yungifez/skuul/releases/tag/v3.1.2) (28 жовтня) нових можливостей не додають: перший налаштовує Release Please і політику безпеки, другий відкриває документацію прямо із застосунку. Проєкт помітив і [Laravel News](https://laravel-news.com/skuul-school-management-laravel).

### Що вміє

Одна інсталяція тримає кілька організацій, а кожна організація - кілька кампусів. За [нотатками до релізу](https://github.com/yungifez/skuul/releases/tag/v3.0.0), у v3 є:

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

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

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

У `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`, і йти за [інструкцією зі встановлення](https://skuul.org/current/getting-started/installation). Локально все запускається через Sail:

```bash
  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](https://laravel-news.com/skuul-school-management-laravel), інсталятор створює вісім ролей - від `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`, а потім відкрийте [демо](https://demo.skuul.org) і подивіться, як це виглядає для різних ролей.
