Academico is an open-source, Laravel-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, or Docker Engine with the Compose plugin
Nothing else is needed on your machine: PHP, Composer and Node run inside the containers.
- Clone the repository:
git clone https://github.com/academico-sis/academico.git
cd academico- Start the containers and wait until the application is ready:
docker compose up -d --waitThe first run builds the image and installs the dependencies, which takes a few minutes. You can follow the progress with docker compose logs -f app.
This starts three services:
- app β the FrankenPHP application server on
http://localhost:8080 - assets β builds the frontend assets, and rebuilds them when you edit
resources/cssorresources/js - mariadb β a MariaDB 11 database server on port
3306
On startup, the app container creates .env from .env.example if it does not exist, installs the Composer dependencies, generates the application key and runs the database migrations.
- Create the administrator account and the reference data:
docker compose exec app php artisan db:seed- Open
http://localhost:8080in your browser and log in withacademico@thomasdebay.com/secret.
To explore the application with sample courses, students and enrollments, rebuild the database with the test seeder instead. This deletes all existing data.
docker compose exec app php artisan migrate:fresh --seeder=TestSeederThen log in with contact@thomasdebay.com / secret.
If port 8080 or 3306 is already used on your machine, set other ports when starting the containers:
APP_PORT=8081 FORWARD_DB_PORT=3307 docker compose up -d --waitYou can also add these two variables to your .env file.
All PHP and artisan commands should be run inside the app container:
# Run tests (they use an in-memory SQLite database, not the MariaDB data)
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>Your checkout is mounted into the containers, so code changes are visible immediately. The vendor and node_modules directories are kept in Docker volumes rather than on your machine, which avoids slow file sharing on macOS and Windows. These two directories therefore stay empty on the host.
After pulling changes that modify composer.lock or package-lock.json, restart the containers to install the new dependencies:
docker compose restartSet AUTO_MIGRATE=false in the app service environment if you prefer to run the migrations yourself.
docker compose down # Stop containers (data is preserved in Docker volumes)
docker compose down -v # Stop containers and delete the database and dependency volumesdocker-compose.yml is meant for development. A production image is built from the same Dockerfile and published on Docker Hub as academicosis/academico.
The 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.
See CONTRIBUTING.md for how to set up a development environment and submit changes. Notable changes are listed in CHANGELOG.md.
To report a security problem, follow the security policy instead of opening a public issue.
Academico is open-source software licensed under the MIT License.