Flexible Data Management, Not Your Usual CRUD.
Raise your hand if you, as a developer, have ever crafted at least one CRUD (Create, Read, Update, Delete) management interface in your career. I anticipate numerous affirmations. Now, raise your hand if you've designed dozens or even hundreds.
The venerable CRUD never loses its allure; invariably, there's that entity that cannot be sourced from another system, lacks an API, and necessitates management within the application.
A frequently encountered conversation:
A scenario many have experienced.
A minimum set of functionalities
A records management system is indispensable for several functionalities:
- Tabular viewing
- Creation
- Editing
- Deletion
- Basic access control
- Formal and application-specific validation for both creation and editing
For more complex applications, this essential set of functionalities is expanded to include:
- Both physical and logical deletion
- Logging of changes and the identities of the changemakers
- Linked actions (such as activate/deactivate, notify, etc.)
- Management of workflows following core operations
- On a case-by-case basis, a myriad of other specific features may be required
In simpler scenarios, the developmental effort is manageable (albeit monotonous). In more intricate cases, it becomes challenging and prone to errors.
A Feasible Solution?
Depending on the technology of the application, there exist both open-source and commercial libraries dedicated to managing this task (in Python, for example, NiceGUI, Streamlit, etc.). Any third-party library or component needs to be integrated with potential customizations, validation logic, and UI style. Open-source libraries sometimes face deprecation and might not support all required functionalities.
A custom solution? For a versatile tool logic, functionalities might include:
-
Tabular Viewing:
- Columns
- Filters
- Formatting
- Permission management
-
Creation and Editing:
- Fields tailored to the operation
- Formatting
- Permission management
- Capability to extend features on a case-by-case basis
- Graphic Theme
- Callbacks
- Creation of call-to-action elements
- Import and export capabilities (Excel?)
- Low-code approach (preferably)
With some effort, this outcome is attainable:
Would you like to be part of a close-knit team?
At AND EMILI, we are looking for a WEB DEVELOPER
Data Editor UI: a steroid-boosted GUI for record management
Thanks to the capabilities of the Microsoft .NET framework [and a bit of creativity], it's possible to create a tool with these features:
- Creation of an editor with strongly typed code
- Management of any entity, whether through a database or API
- Automated and customizable database access management via Entity Framework Core
- Integration with popular databases (PostgreSQL, MySQL, Microsoft SQL Server)
- Full customization of the tabular view: sorting, columns, pagination, formatting, search, predefined filters, etc.
- Management of creation and editing forms with customization of layout, fields, values, permissions, and texts
- Integrated and extendable validation
- Extended and customizable access management
- Import and Export via Excel
- Integrated callback system
- 100% asynchronous
- Integrated and extendable logging
- Extensible through custom editors and calls to action
- Ready to use with just a few lines of code. Customizable if necessary.
This same component can also be used as a standalone form, both in creation and editing, and integrated into any section of the web app to standardize management logic.
The implementation is based on several .NET features and characteristics:
- Use of generics: every element is strongly typed in relation to the entity being managed (thus minimizing the use of reflection)
- Creation of controllers at runtime: during the site's bootstrapping phase, editors are compiled and injected into the application's pipeline and routing. Integration is possible through ASP.NET's feature providers
- Use of view components
- Use of partial views in Razor Class Library, which can be overridden
- Possibility of both functional and visual customization and extension
- Limited need for using libraries to allow for rapid technological updates and minimize external dependencies
Would you like to be part of a close-knit team?
At AND EMILI, we are looking for a WEB DEVELOPER.
Use Cases
Any data management/back-office system can be realized through Data Editor UI. Let's look at two representative examples.
Back-Office Module for Risk Management Software
This software deals with calculating and reducing the risk associated with the design of mechanical elements. The database is comprised of 95 tables, including 40 record tables that detail individual properties and relationships. These tables are crucial for describing technical aspects and conducting calculations related to reliability. The need is to manage all these records flexibly, user-friendly, with high customization, and with permissions management defined at the entity and individual field level (R, RW).
Data Editor UI is inherently low-code; in this specific application, interfaces have been defined to differentiate the necessary behaviors, and based on these, the respective interfaces for management have been defined. This approach has made it possible, with just a few hundred lines of code, to manage all the application's concepts.
User Management
Users are also entities in computer terminology and as such can be managed by Data Editor UI. In our case, we use ASP.NET Core Identity for login management, which we have extensively customized to integrate OAuth, OpenId Connect, SAML2, custom login providers, and all related user flows. The library includes a system for accessing user tables (UserManager); Data Editor UI allows for the native integration of this module, thus leveraging the underlying library to reduce code, potential bugs, and maintain all features. In a forthcoming article, we will also analyze this component.
Would you like to be part of a close-knit team?
At AND EMILI, we are looking for a WEB DEVELOPER.
This page has been translated using automated translation tools and artificial intelligence technologies. We strive to ensure that the content is accessible in multiple languages, but please be aware that the translation may not be perfect. If you have any doubts or need clarifications, please feel free to contact us.