We like to challenge the quality of what we build to make it better. To do so, we try to make the product intuitive, beautiful, and user friendly. Innovation and hard work help to fulfill these requirements. I believe in order to innovate we need to think differently. A few months ago I discovered there was no open source free school management software that met my quality standards. I happen to know a bit of programming so I decided to make one. I also believe that working with more people can push the standard higher than working alone. So I decided to make it open source and free.
See the news here
Unifiedtransform is 100% open source and free forever!!
Community contribution can make this product better!! See Contribution guideline before making any Pull request.
When you contribute to a Github project you agree with this terms of Github Terms of Service(Contributions Under Repository License).
Since this project is under GNU General Public License v3.0, according to Github's Terms of Service all your contributions are also under the same license terms. Thus you permit the user of this software to use your contribution under the terms of GNU General Public License v3.0.
- We want testable softwares. More than 115 tests with 245 assertions are written till now. You also can contribute by writing test case!
- To run Feature and Unit Tests use
./vendor/bin/phpunitand to run Browser Tests setAPP_URLenvironment variable in your.envfile. This value should match the URL you use to access your application in a browser. Then runphp artisan dusk.
GNU General Public License v3.0
This software has following features:
-
Roles: Master, Admin, Teacher, Student, Librarian, Accountant
(You can Impersonate User Roles in Development environment) See how Impersonation works. Cool !!
-
Attendance
-
Mark
-
Registration
-
Notice, Syllabus
-
Library
-
Exam
-
Grade
-
Accounts
-
Messaging (uses CKEditor 5)
- Laravel 5.5
- Bootstrap 3.3.7
- PHP >= 7.0.0
- OpenSSL PHP Extension
- PDO PHP Extension
- Mbstring PHP Extension
- Tokenizer PHP Extension
- XML PHP Extension
Docker is now supported.
You need to change Docker configuration files according to your need.
-
Change following lines in
docker-compose.ymlMYSQL_ROOT_PASSWORD: your password MYSQL_USER: root MYSQL_PASSWORD: your password -
To run this software in Docker containers run
sudo docker-compose up -d. -
Then run
sudo docker container ls --all. Copy Nginx Container ID. -
Then run
sudo docker exec -it <container id> bash -
Run
cp .env.example .envand change following lines in.envfileDB_HOST=db DB_PORT=3306 DB_DATABASE=school DB_USERNAME=root DB_PASSWORD=your password -
Run
composer install -
Run
php artisan key:generate -
Run
php artisan migrate:fresh --seed -
Visit
http:\\localhost:80.
Here are some basic steps to start using this application
Note: Instruction on cached data for Dashboard is given in Good to know segment below.
-
Run
php composer.phar installfor developer environment and runphp composer.phar install --no-devfor production environment to install Laravel packages -
Create
.envfile from.env.exampleand generateAPP_KEYusingphp artisan key:generate -
Set the database connection configuration and APP_ENV according to your application environment (e.g. local, production) in
.envfile -
Laravel Page Speed Package is installed but not activated. If you want to use it to optimize your site automatically which results in a 35%+ optimization. You need to uncomment some lines from
Kernel.phpfile and may need to runphp artisan vendor:publish --provider="RenatoMarinho\LaravelPageSpeed\ServiceProvider".app/HTTP/Kernel.php
//\RenatoMarinho\LaravelPageSpeed\Middleware\InlineCss::class, //\RenatoMarinho\LaravelPageSpeed\Middleware\ElideAttributes::class, //\RenatoMarinho\LaravelPageSpeed\Middleware\InsertDNSPrefetch::class, //\RenatoMarinho\LaravelPageSpeed\Middleware\RemoveComments::class, //\RenatoMarinho\LaravelPageSpeed\Middleware\TrimUrls::class, //\RenatoMarinho\LaravelPageSpeed\Middleware\RemoveQuotes::class, //\RenatoMarinho\LaravelPageSpeed\Middleware\CollapseWhitespace::class, -
To create a
Master, go to thedatabase\seeds\UsersTableSeeder.phpand change thename, theemailand thepasswordsettings to your likings. Leave the other settings (role, active, verified) unchanged! -
Laravel Passport package is included to support API. Key for Passport should be automatically generated by
php artisan passport:keysfrompost-install-cmdscript incomposer.jsonor you have to run this manually and to remove this package just follow these steps- Remove it from
composer.jsonrequire dependencies and remove command@php artisan passport:keysfrompost-install-cmdscript - Run
composer updateandcomposer dump-autoload. - And all classes that relies on passport must be edited as well. The most common classes are:
app\User.phpmodel, remove theHasApiTokentrait.app\Proiders\AuthServiceProvider, removePassport::routes();in your boot method.- In
config/auth.php, change your driver option forapifrompassporttoapiauthentication
- Remove it from
-
To create the tables, run
php artisan migrate.- If you don't want to use Passport package then remove the Passport Migrations in database
migrationstable and run commandartisan migrate:refresh
- If you don't want to use Passport package then remove the Passport Migrations in database
-
To seed the tables with fake data, use
php artisan db:seed. -
If you want to run the migration and the seeding together, use
php artisan migrate:refresh --seed -
You must seed
database\seeds\UsersTableSeeder.phpat least once in order to create the Master account. To do so, follow these steps:- comment all the seeders except
$this->call(UsersTableSeeder::class);indatabase\seeds\DatabaseSeeder.php; - then comment
factory(App\User::class, 200)->create();inUsersTableSeeder.php.
So your files will look something like this:
In
database\seeds\DatabaseSeeder.php:... //$this->call(SectionsTableSeeder::class); $this->call(UsersTableSeeder::class); //$this->call(AttendancesTableSeeder::class); ...In
database\seeds\UsersTableSeeder.php:... //factory(App\User::class, 200)->create(); - comment all the seeders except
-
Laravel 5 log viewer is used to view Logs using a UI at 'example.com/logs' while in development environment.
- Important: only a
mastercan create a new school and its admins! - Login at
example.com\loginusing yourMasteraccount credentials - Create a new
school - Create a new
adminfor the newly created school
- Important: A
masterCANNOT manage a school's data! - Login as
adminatexample.com\login - Now add data to the school as required.
- Setup your Mail configuration in
.envfile if you want to send email. Currently registered users are notified by invitation mail if Mail is configured properly. - This project uses Laravel Impersonate in development and staging environments, so you can view the application through another user's eyes, which is useful for testing. See the guide for using Impersonation.
- In
.env, turnAPP_DEBUGtofalsefor production environment. - Remove
Route::get('logs', '\Rap2hpoutre\LaravelLogViewer\LogViewerController@index');fromroutes/web.phpwhile in Production Environment. Cache::remember()generates cache files. To delete expired cache files LaravelCacheGarbageCollector package is used. Runphp artisan cache:gc.- You can switch to and from maintenance mode by running
php artisan upandphp artisan down. - Dashboard page contents(e.g. Student count, Teacher count, Notice, etc.) are cached because these are not frequently changed. If you don't want these to be cached, just remove the cache lines in
indexmethod inapp\Http\Controller\HomeController.phplike the following example. So your edit would be something like this:
From:
...
$classes = \Cache::remember('classes-'.$school_id, $minutes, function () use($school_id) {
return \App\Myclass::where('school_id', $school_id)
->pluck('id')
->toArray();
});
...
To:
...
$classes = \App\Myclass::where('school_id', $school_id)
->pluck('id')
->toArray();
...
You can do similar for other cache lines.
Auto generated fake data were used.


















