Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

868 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

KoAkademy

An open-source school administration platform that you run yourself.
Your students' records belong to your institution—not to a vendor subscription.

Why KoAkademy · The platform · Stack · Quick start · Operate it · Contributing

CI Latest release AGPL-3.0-or-later licence PHP 8.5 Laravel 12 Docker

KoAkademy administrator dashboard with institutional overview, enrolment monitoring, and finance shortcuts


Warning

KoAkademy is beta software and is not yet recommended for production use. Pre-v2 releases can contain breaking changes or incompatible upgrades. Evaluate it in staging, keep tested backups, and review the security guidance before storing institutional data.

The case for owning your system

School software holds more than a timetable. It holds student identities, grades, tuition, medical records, attendance, and years of institutional history. When that system is a hosted product, the school inherits someone else's pricing, roadmap, retention policy, and operational decisions.

KoAkademy takes a different position: the institution should own the system of record. It is a complete school administration and learning platform that runs on infrastructure you choose. The PostgreSQL database, object storage, backups, domains, and upgrade schedule are yours to manage and audit.

That is not a stripped-down self-hosted edition. Enrollment, academics, finance, staff tools, student and faculty portals, and optional modules are all part of the application. No per-student pricing and no feature gates hidden behind a sales conversation.

Screenshots

KoAkademy enrolment management table

Enrollment — track applicants, verification status, balances, and the registrar workflow in one place.

KoAkademy classes and academic scheduling workspace

Academics — manage sections, capacity, curricula, and schedules with the school context intact.

KoAkademy finance dashboard

Finance — assess tuition, receive payments, and issue records without exporting student data to another product.

KoAkademy searchable digital library catalogue

Library — catalogue physical holdings and publish rights-cleared digital editions through a controlled reader.

The platform

KoAkademy is built around the daily work of a school, not a generic database with education fields added later.

Administration Students, faculty, programs, courses, classrooms, terms, schedules, attendance, grading, reports, and institution branding.
Enrollment A registrar-to-cashier workflow driven by versioned enrollment blueprints. Rules can be scoped, simulated, staged, and rolled back instead of being buried in code.
Three portals Distinct administrator, faculty, and student experiences for the work each role actually needs: classes, attendance, submissions, grades, schedules, tuition, announcements, and digital IDs.
Finance Tuition assessment, payment posting, statements of account, receipts, public verification, and finance reporting.
Optional modules Library, inventory, cashier, student medical records, announcements, and notification tools can be enabled as the institution needs them.
Security and accountability Role-based permissions, multi-factor authentication, passkeys, audited impersonation, and an operator-controlled deployment boundary.

The public API is intentionally small while it is beta. Only the endpoints described in the API documentation are part of its supported contract.

The enrollment engine

Enrollment is where a school’s rules become visible: who can enrol, which documents they need, which checks must happen before payment, what tuition applies, and when an account becomes active. Those are institutional policies, not constants that should require a deployment to change.

KoAkademy models them as versioned blueprints with inheritance, availability and eligibility checks, academic and billing gates, approvals, notifications, simulations, staged publication, and rollback. The result is a workflow a registrar can understand and an institution can adapt without losing its audit trail. Read the blueprint overview for the model and the quick start to configure one.

The stack

A Laravel application with a React portal layer, packaged for self-hosting rather than split across vendor services.

Application Laravel 12 · PHP 8.5 · Filament 5
Portals Inertia · React 19 · TypeScript · Vite
Data and jobs PostgreSQL · Redis · Laravel queues, cache, sessions, and scheduled work
Documents Gotenberg for PDFs · S3-compatible object storage for uploads
Runtime nginx + PHP-FPM in a Docker image, with a FrankenPHP (Octane) variant · Docker Swarm installer or supported Docker Compose topology
Quality Pest · Laravel Pint · frontend and documentation builds · CI validation

Layout

Path
app/ Laravel application services, models, policies, jobs, and HTTP boundaries
resources/js/ Inertia React pages and shared portal components
Modules/ Optional domain modules
database/ Migrations, factories, and seeders
docker/ Production image and runtime processes
docs/ Operator, maintainer, API, and staff documentation
tests/ Pest feature and unit coverage

Quick start

The supported production installer is Linux-only. It installs Docker when needed, creates a single-node Swarm, deploys Caddy HTTPS with PostgreSQL, Redis, Gotenberg, and a private FrankenPHP application, then opens the one-time /setup wizard.

Linux

curl -fsSL https://github.com/yukazakiri/koakademy/releases/latest/download/install.sh | sudo bash -s -- install --domain school.example

Visit /setup when the installer finishes to create the institution, the first academic period, and the first super administrator. The setup route closes after initialization.

The installer runs privileged remote code. Inspect it first if that is not appropriate for your environment:

curl -fSLO https://github.com/yukazakiri/koakademy/releases/latest/download/install.sh
less install.sh
bash install.sh install --domain school.example

For a manually managed deployment, use Getting Started. It covers the supported Docker Compose topology, explicit migrations, S3-compatible storage, and the reverse-proxy requirements.

Operate it

Run a current stable release in production. Caddy owns ports 80/443; the application, PostgreSQL, Redis, and Gotenberg stay private. Use sudo koakademy update for an explicit backed-up release update and sudo koakademy configure storage|mail|search for Docker-Secret-backed provider changes.

Need Start here
Install, configure, or upgrade a server Getting Started · Deployment · Configuration
Plan backups, HTTPS, storage, or recovery Deployment runbook · Self-hosting FAQ
Understand the codebase and run it locally Development · Architecture guide
Configure enrollment policies Enrollment blueprints
Use the administrator, faculty, or student portals Staff user guide
Integrate with the supported API API overview

The hosted documentation site, when enabled for the repository, is available at yukazakiri.github.io/koakademy.

Contributing and security

Contributions are welcome when they are focused, tested, and safe for self-hosting institutions. Start with CONTRIBUTING.md. To report a vulnerability, use a private GitHub Security Advisory—not a public issue—and follow SECURITY.md.

License

KoAkademy is licensed under the GNU AGPL-3.0-or-later. If people use a modified version over a network, they must be able to obtain that modified source. The code that handles a school’s records should remain available to the people who depend on it.

Notes from the author

KoAkademy started in 2023 as a college feasibility project here in the Philippines. The first version was written in vanilla PHP, and in 2024 it was migrated to Laravel. My groupmates and I built it together until we graduated — after that, I kept going alone. The system eventually went live at our school, and it has been running there ever since as part of their core infrastructure. Every feature and every piece of logic in this codebase is modeled on that school's real, day-to-day workflow.

As time passed, managing the codebase on my own became increasingly hard, so I now lean heavily on Codex as my main development agent. I have also grown professionally since those college days and currently work as a Senior Software Developer.

Today, KoAkademy is being used by two different schools that run the same workflow. I will be honest: I am not very good at closing deals, and I have never been paid for this project. I have always treated it as my way of helping my school innovate, even just a little. That is why I decided to open source it and make it configurable — so that any institution that cannot afford its own SIS or LIS can use it freely, without handing student information to third-party providers.

You will notice that this project is only half complete, but it is usable today. If you have any suggestions or improvements, you are always welcome to share them. And if this project has been useful to you, I would also ask you to star this repository — it gives me motivation to continue.

Feel free to try it and give feedback. Even the harsh kind. I appreciate every single one.

About

🎓 Modern open-source and opinionated academic management platform for student lifecycle workflows. Built with Laravel 12, Inertia.js, React & Tailwind CSS. Features enrollment, billing, scheduling & admin tools with configurable branding and PWA support.

Topics

Resources

Contributing

Security policy

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages