This project was part of an internship task to manage the maintanence schedule for employees in the technical support department where users can track and manage their upcoming, in-progress, or finished maintenances.
This project was developed with PHP using MariaDB RDBMS (MySQL database) and Apache2 webserver (in XAMPP).
Fresh project installation welcomes the admin user with a pre-flight & setup page to configure their email, password, and personal information.
The MVC principles are applied to provide ease of navigation through the projet folder for maintainability and scalability.
-
Admin User
-
Manager User
-
Engineer User
Any finished maintenances are archived in the maintenance history section.
The project consist of the following sections based on the user role's POV:
- Dashboard
Admin and manager users are able to view a table that displays the on-going maintenance scheduled ONLY for the current month.
Manager users are able to view and track which users are late on their maintenance based on month or year from user input (by default the current month or year), that is visualized with a simple bar graph.
Engineer users ONLY has access to this page to keep track of their scheduled maintenances.
Engineer users can perform actions on every row to change the status of the on-going maintenance from scheduled date (available maintenance date set by the engineer), actual date (agreed schedule date between the engineer and the client), maintenance status (in-progress or finished), and report status (on which date the maintenance report was delivered).
- Maintenance
Admin and manager users are able to view a table that displays a history of past maintenance schedules.
Admin and manager users are able to delete records if necessary (e.g., unused maintenance schedules).
- Contract
Admin and manager users are able to view a table that displays the current contracts with existing clients.
Admin users are able to perform CRUD operations for contract.
Additionally, admin users can create a new maintenance schedule with respect to each contract.
- Client
Admin and manager users are able to view a table that displays existing clients.
Admin users are able to perform CRUD operations for client.
- User
Admin and manager users are able to view a table that displays existing users.
Admin users are able to perform CRUD operations for user.
- User Navbar Menu
All users are able to access this menu to either modify their profile (i.e., name, email, or photo change) or change password.
However, only admin users are able to change email and phone number support.
The tables utilize a third-party library called Bootstrap Table. The table from the library by default provides table functionalities that would be seen in a typical table as follows.
- search table input.
- refresh table.
- show/hide columns.
- full screen view of the table.
- sortable columns.
- resizable columns.
- pagination.
Additional functionalities added to the table are a filter feature and downloadable table data for certain cases.
Considering the relatively small size of the project and tight deadline, testing were performed manually that tests the common workflow of the web-application used by each user roles.
- ❌ Perform proper testing using PHPUnit.
These libraries were installed (with composer and NPM) to provide additional functionalities either to simplify creating web components or expand existing features. The following lists out the third-party libraries used in this project.
NPM
- Bootstrap Table ( 1.22.1 )
- Apache ECharts ( 5.4.3 )
- jquery-resizable-columns by dobtco ( 0.2.3 ) [dependent on StoreJS and JQuery]
- StoreJS ( 2.0.0 )
- tableExport.jquery.plugin by hhurz ( 1.28.0 )
- SweetAlert2 ( 11.7.23 )
External Source
- Bootstrap ( 5.3.0 )
- JQuery ( 3.7.0 )