|
Build and Deploy Web App / build-and-deploy (push) Successful in 24s
Details
Build and Deploy API / build-and-deploy (push) Successful in 1m21s
Details
|
||
|---|---|---|
| .. | ||
| bruno-api/Finnow | ||
| sample-data | ||
| source | ||
| sql | ||
| .gdbinit | ||
| .gitignore | ||
| README.md | ||
| currency_codes_ISO4217.csv | ||
| dub.json | ||
| dub.selections.json | ||
| finnow-api.service | ||
README.md
Finnow API
The Finnow API is primarily implemented as an HTTP REST API using D, and the handy-httpd library.
Architecture
This project is set up as a modular monolith, where the API as a whole is broken up into mostly-independent modules. Each module can be found under source/, like source/auth for example.
Within each module, you'll usually find some of the following submodules:
model.d- Defines models for this module, often database entities. Unless there's a very good reason for it, all entity attributes are marked asconst. Entities are not mutable. They simply represent a view of what's in the database.data.d- Defines the data access interfaces and associated types, so that other modules can interact with it.data_impl_*.d- A concrete implementation of a submodule's data access interfaces, often using a specific technology or platform.api.d- Defines any REST API endpoints that this module exposes to the web server framework, as well as data transfer objects that the API endpoints may consume or produce.service.d- Defines business logic and associated types that may be called by theapi.dsubmodule or other modules. This is where transactional business logic lives.