Project Description
The DigitalPlant is a web application for industrial plants and factories, for example, Nuclear Power Plant, Chemical plants, Metal Manufacturing Plants, and similar. The application aims to digitalize information about the equipment, processes, documentation, reports, and various assets, keep it in one single place in a convenient form.
The platform helps the staff of the plant efficiently get the relevant data about various assets of the plant. It aims to help and improve the employee’s productivity in performing operations, repair, training, and engineering functions where these assets are involved.
The DigitalPlant platform allows users to work with different types of information such as 3D and 2D models, videos, images, various document extensions used in different plants.
The Platform has two different interfaces.
– Administration interface, where admins could manage(create, edit, delete) all application entities, including staff permissions.
– Regular user interface, where the staff can only view available information
Part of the workflow was generating unique QR codes for each asset in the application once it is added by the admin to the database. QR code will be further printed and attached to the real asset on the plant. Thus plant workers can easily access necessary information about the asset by scanning the code with their tablet or cell phone. For these reasons, the web application was planned as mobile-first.
Technical Challenges & Solutions
- Overriding and extending the Django admin interface. The client needed a bit more layman’s interface than the one which Django provides by default. Part of our task was to extend the default admin interface with the custom views, templates. The basement for our solution was found in the Django Jazzmin theme. As the result, we have overridden default views and templates according to project requirements.
- 3D models viewer. A significant part of the future unique proposition by the application is the work with 3D models. One of the main requirements by the client was the so-called «Exploded view» of the model. As the solution, we integrated Autodesk Forge (https://forge.autodesk.com/) to work with 3D models. This tool allows manipulating and interacting with the model in all possible ways. Though we had to customize something we could not get from the original tool. We implemented the functionality that lets users select model parts from the viewer, check the corresponding information about the part in the custom sidebar, and vice versa. Another challenging feature was automatically created asset parts in our system based on the information provided in the original 3D model file.
- Background jobs:
- converting the 3d model.
- sending the emails when the user is invited to join the system
- sending the emails to admin staff when the issue report is created.
- Integrating the different documents of viewers. Different departments of the plant work with documentation in a variety of formats. Our task was to support most of the, which included the implementation of the viewers for the following file extensions: pdf, CSV, txt, xls, doc, png, jpg, and various video formats.
- Bulk import. Plants may have thousands of assets, which means tons of information, which needs to somehow get into the system. We have come up with a human-readable structure for the import. It describes the format, which plant workers need to follow when preparing the existing information which will be further imported into the system automatically.
Technologies
Python, Django, PostgreSQL, Autodesk Forge, Three.js, D3.js, Mailgun, Celery, Redis, Microsoft Azure, Sentry