Web application for managing maintenance tasks for a fleet of vessels of the Hellenic Coast Guard. The application allows for maintaining a list of boats each with its own components and maintenance sessions and notifies for overdue as well as future jobs.
Functionality at a glance:
- Boats are created based on built-in templates. Each boat/template includes:
- Components: Include their own maintenance schedule and record of maintenance sessions. Maintenance schedule can be based on operation hours and/or elapsed time.
- Slots: Used to distinguish multiple components of the same type (e.g. main engine 1 and main engine 2 in slots starboard and port respectively).
- Operation groups: Associated with components in order to track the component operation hours. Components that always operate simultaneously are mapped to the same operation group.
- Components are created based on built-in templates. Components may be removed or moved to a different boat. When moving components between boats the maintenance history and operation hours are transferred to the new boat.
- Operation hours are tracked by entering operation intervals such that they are contiguous and non-overlapping. Operation intervals consist of a start/end time and the corresponding operation hours for all operation groups.
- A comprehensive boat maintenance overview page displays information about the boat operation hours as well as the overdue and pending jobs.
- Both the boat overview and the session lists may be downloaded in pdf format.
- Complete user management system supporting the following roles:
- User: Allowed to manage maintenance information for his/her designated boat(s).
- Viewer: Allowed read-only access to all boats and maintenance information.
- Supervisor: Allowed to change configuration and manage maintenance information for all boats.
- Administrator: Same as supervisor but also allowed to manage users and associate them with boats.
Key technologies:
- ASP.NET Core WebAPI on .NET Core as the main application framework.
- Identity Server 4 SPA authentication over OIDC.
- Entity Framework Core ORM for object-oriented, type-safe database access.
- SQL Server database server.
- DinkToPdf/wkhtmltopdf for dynamic report creation in pdf format.
- React front-end.
Boat overview:

- Allows for upload/deletion of the boat image.
- Displays information about:
- The boat and the contact person.
- The operation hours of all operation groups.
- Includes links to:
- Boat editing page.
- Jobs pdf creation.
- Components list.
- Operation intervals list.
- Sessions list.
- Secondary jobs pop-up.

- Includes three tables for:
- Overdue jobs sorted by date.
- Future hours-based jobs sorted by component (user-selectable number of future jobs for each component).
- Future time-based jobs sorted by job date (user-selectable number of future jobs for each component).
- Maintenance sessions can be automatically created from a listed job by clicking on the job “CREATE” button.
Components list:

- Allows for paging, selecting the number of displayed items, searching and sorting. Searching and sorting can be done according to various columns.
- Allows for in-place slot/operation group assignment displaying only compatible and available slots.
- Provides links to component information editing, deletion, move to another boat and sessions list.
Sessions list:

- Allows for filtering sessions by job (task or level) and start/end dates.
- Allows for creating a pdf report out of the results.
- Contains links to add new session, visit a session control panel and delete the session.
Session control panel:

- Contains links for editing basic session information and deleting session.
- Allows for adding/removing levels or tasks to the maintenance session:
- Protects the user from adding overlapping tasks such as:
- Levels that share tasks or already selected levels.
- Tasks contained in the selected levels or already selected tasks.
Users list:

- Allows for paging, selecting number of items per page, searching, and sorting by the desired column.
- Provides links for editing, deleting, changing password and associate/disassociate with boat.