ASP Developer and C# Developer
Website Aktura Technology
DC MEMBER The Dynamite Circle (the DC) is an exclusive community of more than 1,200 established entrepreneurs.
- 💥 Work for a DCer 💥
- ✈️ Digital Nomad Friendly ✈️
About The Project
We are currently developing an application for a very large global client that is designed to link together many of the engineering tools used by our client and their JV partners when designing large infrastructure projects such as toll roads, tunnels, train stations, train lines and other similar projects.
The engineering tools handle many aspects of design such as 3D positioning, electrical load calculations, power distribution, requirements, mechanical load testing and so on.
To link these tools we have been designing and building an application as follows:
1 – Database
A centralised cloud database holds common information that each of the design tools will share. The database will have an asset hierarchy (group, sub group, type, sub type, asset) with each asset allowing a dynamic list of attributes to be assigned to it. Attributes could be things like “Current (amps)” for motors or “Thickness (mm)” for plinths etc etc. Each asset could have dozens of attributes.
To make this more complicated, the client wants attributes to be inherited. So some attributes could be assigned to a higher hierarchy (e.g. asset type) and these are then cascaded down to the asset. The cascaded attributes have an option to say if they can be overridden at the lower levels.
Further complicating matters is that each attribute value is revision and version controlled. All revisions to be retained and snapshot versions to be created. It is possible for client to run a report that says “show me all the differences between revision 1 and current”. Finally, an asset has a location and this too is version controlled. Locations can also have attributes. Lastly, the client wanted the database to be easily readable at the database level – so they don’t want everything in one big table.
2 – API
The database is to be populated through an API. The API has user authorisation and role authentication. Users can be locked to one or more specific asset hierarchies or disciplines. Attributes are assigned a discipline (in the above example the “current (amps)” attribute will be locked to the electrical engineering discipline). User roles may allow reading of one asset hierarchy and writing to another. This is required as the database will also be populated by 3rd parties.
3 – Desktop Client
A C# windows forms client application is to be developed to allow information to be retrieved from the various engineering tools. These tools could be connected via excel import, csv, connection to local database, api or any other means.
The application will then upload the imported data to the database via the API. At first, we will only be importing from excel and also allowing manual data entry via datagrids within the client application.
The other connections will be developed using some sort of pluggable interface as the design tools may be different on different projects, thus requiring new interfaces to be developed. The application is a desktop application, not a SPA or cloud based solution. This is a requirement as many of the design tools exist on local networks and direct exposure to the internet is forbidden. Therefore, the local windows application will extract the data from the tools, normalise the data and communicate it to the API using HTTPS.
The UI is built using DotNetBar.
- Modify the application to allow for a multi-tentnat database solution allowing data from each project to be stored in separate databases.
- Optimize the API queries and move some of them to stored procuderes within the database to reduce delays.
- Update the API to add new and ongoing features – the project is being staged with new requirements added at each stage of the project.
- Work with front end developer to ensure existing API is adequate and optimized for front end requirements.
- Develop a C# application based on customer UI designs
- Be able to make key decisions on UX design when developing the application (eg selection of controls, workflow etc). The application is actually in use as a very basic PoC MVP application. As such the design is fluid and new features are being regularly added and we would expect the C# developer to suggest UX or UI changes to incorporate the new features.
- Communicate with the back end API to retrieve and upload data.
- Implement importing features to retrieve data from various sources including Excel, CSV files, local MS SQL databases and local API interfaces.
- Implement report exports with reports being created as Excel files.