We have built Frappe Framework [1] as a platform to re-use code for our massively complex application (ERPNext with 900+ models). While it does not have a drag-and-drop UI builder, object creation and migration is fully automated via configuration. The key reason why this works as low-code is:
1. Automated UI generation (via metadata)
2. Automated database management (schema and migrations)
3. Abstracted functionality that can run on any object (like permission rules, workflows, assignments, file attachments, PDF generation etc)
The configurations are stored as JSON files that can be used for source code management [2]. Frappe Framework is still under the radar, but of late we have seen many teams using it massively for internal tooling.
[1] https://frappeframework.com/
[2] https://github.com/frappe/erpnext/tree/develop/erpnext/selli...