For about year and a half I am working on fully dynamic, zero-downtime, reconfigurable API. Main target is me, hobbyists, self-host enthusiasts and small-to medium companies.
Idea is to be able to configure API with JSON schema definition of an object that API should store and allow you to manipulate (with CRUD operations). In future I plan to add FE for building those schemas based on data and some LLM helper.
* There is possibility of adding relations between schemas (1-to-n, n-to-n, 1-to-1)
* API allows to filter and transform responses to your own arbitrary schema via custom query language
* support Oauth with custom Oidc of your choice and API tokens for easily configurable but strong security
* from the start I designing it with extensibility in mind so there is built-in system of flows and custom extensions
* flows support running via custom http endpoints, and system events (i.e. data changes); cron schedules and external events are planned
* flows are defined via Json files
* flows are also customisable and allows to define your own blocks and flows that can be injected into other flows for bigger pieces of logic.
* all json files are source for code generation so performance should be the same as using your own manually written code or at least very close.
* there is built-in template subsystem, used for flows (i.e. for saving files with content from template) that I also plan to use to generate static files for FE.
* custom pieces of logic are supported by flows so you can create flow to update some read-only values based on other values (i.e. FullName from first and surname).
To achieve that I had to write my own fluent API for C# code generation. I had idea mainly during writing my own API for my house automation: 'Why I have to write another DAL layer, and auhorization, and filtering, and database schema? I did this dozens of times already?!' There is no need to figure this one out every time.
* There is possibility of adding relations between schemas (1-to-n, n-to-n, 1-to-1)
* API allows to filter and transform responses to your own arbitrary schema via custom query language
* support Oauth with custom Oidc of your choice and API tokens for easily configurable but strong security
* from the start I designing it with extensibility in mind so there is built-in system of flows and custom extensions
* flows support running via custom http endpoints, and system events (i.e. data changes); cron schedules and external events are planned
* flows are defined via Json files
* flows are also customisable and allows to define your own blocks and flows that can be injected into other flows for bigger pieces of logic.
* all json files are source for code generation so performance should be the same as using your own manually written code or at least very close.
* there is built-in template subsystem, used for flows (i.e. for saving files with content from template) that I also plan to use to generate static files for FE.
* custom pieces of logic are supported by flows so you can create flow to update some read-only values based on other values (i.e. FullName from first and surname).
To achieve that I had to write my own fluent API for C# code generation. I had idea mainly during writing my own API for my house automation: 'Why I have to write another DAL layer, and auhorization, and filtering, and database schema? I did this dozens of times already?!' There is no need to figure this one out every time.