We have a multi-platform Flutter project focused on creating equipment maintenance reports.
The web/desktop admin panel focuses only on doing CRUD operations for all models of this app.
The app has already designed the next data models: user, user_role, user_permission, equipment, equipment_category, equipment_subcategory, reports, report_template, report_pdf_template, report_status, report_category, report_subcategory.
Searching, filtering, ordering, reading, updating, deleting data. All these CRUD operations for the User model are already implemented with Fireabase, but we need help to add this same CRUD operations but now on MySQL. And making sure all models make use of these CRUD operations on MySQL and firebase.
The admin panel UI is already created, navigation and routing is working fine as well, we just need to hook it up with the providers, data models, repositories, services and database. So that the UI becomes functional.
The main challenges on the Admin Panel besides of making sure CRUD data logic and UI is working fine, are few things:
– When creating a new equipment model record on the database, we must create a QR code that will be related to this equipment, this is needed since we later on the mobile app want to scan QR codes to load the equipment information such as reports done or reports to fill out for this specific machine. We should store this QR code in image format and also on some sort of data format to save images storage.
– The report template model, is like a blueprint, some sort of a way to store a list of inputs that a real report data will need to fill them with real report maintenance values. Is like a blue print of the inputs we should need in the final report maintenance record created for a specific equipment.
– The report pdf template model, should hold values to create a pdf template design who will retrieve report data to place that data on the pdf design. The admin panel will not have a pdf design screen, we will add few built-in designs and just let the user select one of them, also adding their logos, font sizes or colors, will just give them parameters to customize their pdf design.
– Having the above will allow us to export a report data by placing these data into a pdf design so the user can download it.
– Another challenge in the admin panel is the feature of being able to export/download a report data in a CSV format or import report data from an existing CSV file.
The mobile app will have 5-6 screens focused on reading equipments that belong to a certain user, creating reports for these equipment and others.
– if user role id is client, load list of all the equipments that belong to this client, and also be able to load (ordered by date) all the reports made to all equipments. Allow client to search, filter, order by their reports and to click on one to read the full report record.
– if user role id is engineer, then we should load all the next reports this user has to make in the current day or the next days. On selecting one of these reports, the app should ask the user to scan a QR code to make sure we load the right report template blue print, optionally a scan qr code button will be assigned in the center of the bottom navigation bar, that way user can simply click there and use the camera to scan the QR code.
– On successful scan, it should load the equipment data and the equipment reports to create in the current or next days.
– Selecting a report to make, will open a new Paged or Pagination style component on a screen. Each page in the paginated component must contain a form inputs group so we can fill out a report step by step to avoid having a large height screen. Instead we just fill out 1 screen which contains part of the report, and then we make it user friendly to use paginated pages to complete a large report.
– After successfully creating reports, we must re-use some screens that the user role id client is already accessing: If user role id is engineer load all reports and make sure we can search, filter, order by. Also on clicking a report, we must be able to fully read the report data. These is already done before for the user role id client.