Applications

Skuul: Open-Source School Management Built on Laravel

Published
Skuul: Open-Source School Management Built on Laravel image

Skuul is an open-source school management application by Marvellous Ifezue. Version 3.0 was released on October 16 as a rewrite on Laravel 13 and Livewire 4. A school or a group of schools might use it to run admissions, attendance, gradebooks, timetables, and fees from one installation.

Here's what Skuul 3.0 includes:

  • Organizations and campuses: one installation holds several organizations, and each organization holds several campuses
  • Admissions and guardians: an admissions waitlist, and guardian links that connect parent accounts to learners
  • Assessment: course offerings, gradebooks, exam schedules, and results that a reviewer approves before publication
  • Official documents: report cards and transcripts generated from published results
  • Finance: payments, refunds, and student credit post to a ledger, and financial periods control when postings are allowed
  • Optional campus tools: discipline and wellbeing, staff operations, a campus calendar, boarding, a library, clubs and programmes, and student and staff imports, each turned on or off per campus
  • Report exports: CSV, XLSX, and PDF files built in the background
  • Operations: scheduled backups with an encrypted database dump, a weekly restore rehearsal, health endpoints, and the skuul:release-readiness and skuul:update commands

Campuses, Roles, and Permissions

Skuul uses Spatie Permission for team-scoped roles, so a user's permissions apply to one campus at a time.

The installer creates eight roles: platform-admin, organization-admin, admin, teacher, accountant, librarian, student, and parent. A campus can copy a role to make its own, such as an admissions office role. Learners can move between campuses. A campus can also request records from another campus, and each request needs approval.

Family Portal

Students and guardians sign in to a portal that shows a learner's published results, attendance, timetable, invoices, documents, and notices. Families can also send requests to the campus. Portal access comes from the learner's own account or a guardian link. Staff permissions don't apply to the portal.

Each campus chooses which portal pages to show. Some pages also depend on a campus tool, so the Library page stays hidden while the Library tool is off.

Current Limitations

The documentation lists these gaps in V3:

  • There is no public REST API, and API tokens are disabled
  • A Stripe payment channel exists, but no checkout or callback routes are connected. Families can view invoices in the portal but can't pay them there, and staff record cash, bank transfer, and other payments by hand
  • There is no staff appraisal workflow
  • The numeric grade calculator can count a blank, missing, absent, or incomplete mark as zero, so check for those marks before you publish results

A school that wants families to pay fees online, or that needs to sync records with another system, would have to build that part itself.

Upgrading From V2

V3 replaces the V2 data model. Its migrations delete legacy exam results, grading systems, and gradebooks without a course offering, and rollbacks don't restore them. The docs recommend testing the upgrade on a copy of your data first, and keeping a full database backup, the uploaded files, and the original APP_KEY.

Try the Demo or Install It

The Skuul demo has one-click sign-in for staff, student, and family accounts. It resets every hour, and deletions are disabled.

To run it yourself, you need PHP 8.4.1 or later, Node.js 24, MySQL 8, and Redis. Clone a release tag and follow the installation guide, which uses Laravel Sail:

git clone --branch v3.0.2 https://github.com/yungifez/skuul.git skuul

Skuul is MIT licensed. You can find the source on GitHub and the full documentation at skuul.org.

Yannick Lyn Fatt photo

Staff Writer at Laravel News and Full stack web developer.

Sponsored

masteringlaravel logo
Laravel Code Review

Get expert guidance in a few days with a Laravel code review

Visit Laravel Code Review

The latest

View all →
Decide with Jev: Turn AI Answers into Decisions with PHP Rules image

Decide with Jev: Turn AI Answers into Decisions with PHP Rules

Read article
Laravel Read Replicas: Prevent Stale Reads After a Write image

Laravel Read Replicas: Prevent Stale Reads After a Write

Read article
Screenshot: Capture Images and PDFs with PHP and Laravel image

Screenshot: Capture Images and PDFs with PHP and Laravel

Read article
Reset Sticky Database Connections Between Laravel Queue Jobs image

Reset Sticky Database Connections Between Laravel Queue Jobs

Read article
PHP Security Releases Fix Two Critical RCE Vulnerabilities image

PHP Security Releases Fix Two Critical RCE Vulnerabilities

Read article
Prevent Stale Database Reads in Laravel 13.38 image

Prevent Stale Database Reads in Laravel 13.38

Read article