This project is a web application designed to facilitate timetable generation for a college. Users can input the necessary data, and the application utilizes a genetic algorithm to generate timetables on demand. The development of this web application involves using the Laravel PHP framework and jQuery.
The timetable generation process occurs as a background job within Laravel when users request timetables.
Looking ahead, the project aims to improve its architecture by decoupling the genetic algorithm and transforming it into a reusable library that can be integrated into other applications. Additionally, there are plans to enhance the user experience further.
To get started with the application, follow these installation steps:
-
Ensure you have PHP 8.1+ installed.
-
Clone the repository using the following command:
git clone git@github.com:olaysco/timetable-generator.git
-
Move into the project directory:
cd timetable-generator
-
Install the required dependencies by running:
composer install
-
Create an environment file:
cp .env.example .env
-
Generate the application key:
php artisan key:generate
-
Create a local database and update the
.env
file with the database credentials. -
Run the database migration to set up the necessary tables:
php artisan migrate
-
Seed the application with initial data:
php artisan db:seed
-
Access the application URL in your web browser. If prompted for a password, use the default password:
admin
. -
Before generating timetables, configure the Queue driver in the
.env
file. Refer to the Laravel documentation on queues for more information: https://laravel.com/docs/10.x/queues#database. Using thesync
driver will not work due to the time-consuming nature of the Genetic Algorithm. -
Start the queue to enable timetable generation:
php artisan queue:listen --timeout=0