Academico is an open-source, Lavarel-based school management platform. Its main features include course management, enrolments management, resources scheduling, reports and stats. It is primarily targeted at small and medium-sized institutions who need a simple and affordable solution to manage their school and courses.
The first versions of this project were built with the awesome Backpack for Laravel framework. However, the application was entirely rewritten with Laravel Filament. No changes in the database structure has been made, so the Filament version should work as a drop-in replacement of the Backpack version, with similar features. You can still access the Backpack version in the pro branch (but a Backpack license is required and the packages have not been updated in a long time). I strongly recommend switching to the Filament version.
The Filament version is still work in progress. Please use with caution, and report bugs if you encounter them. Contributions are welcome to make Academico a better, more usable software.
If you are using this applications and want to make some improvements for your own needs, or just willing to contribute to an open-source project, feel free to open an issue and make some suggestions. Contributions might go from writing code, to extending the documentation or the translations, or simply suggesting new features, UX improvements, and so on.
Thanks goes to these wonderful people for past or current version of this application (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!
This application runs in Docker using FrankenPHP (a modern PHP application server built on Caddy) and MariaDB.
- Docker Desktop (includes Docker Compose)
- Clone the repository and copy the environment file:
git clone https://github.com/academico-sis/academico.git
cd academico
cp .env.example .env- Start the containers (the first run builds the image, which may take a few minutes):
docker compose up -dThis starts two services:
- app — the FrankenPHP application server on
http://localhost:8080 - mariadb — a MariaDB 11 database server on port
3306
The app container waits for MariaDB to be healthy before starting.
- Generate the application key:
docker compose exec app php artisan key:generate- Run the database migrations:
docker compose exec app php artisan migrate- (Optional) Seed the database with sample data:
docker compose exec app php artisan db:seed- Open
http://localhost:8080in your browser.
All PHP and artisan commands should be run inside the app container:
# Run tests
docker compose exec app php artisan test
# Run the linter
docker compose exec app ./vendor/bin/pint
# Run any artisan command
docker compose exec app php artisan <command>docker compose down # Stop containers (data is preserved in a Docker volume)
docker compose down -v # Stop containers and delete the database volumeThe Docker setup supports an optional custom login page via a volume mount in docker-compose.yml:
- /path/to/custom-views/login.blade.php:/app/resources/views/filament/auth/login.blade.phpThe custom login class (App\Filament\Auth\Login) detects at runtime whether this Blade file is present. When the file exists, it renders the custom layout; otherwise, the standard Filament login page is shown.