Hi guys, what are your best practices about folder scaffolding for service project?
A common practice I see in many places is to follow the MVC pattern, the same scaffolding that RoR auto generates. But I find it a little bit inconvenient and my solutions don't convince me at 100% all the time. So I made a demo project with the following scaffolding.
+-- config -- Server config files (.yml, .json, .env)
+-- scripts -- all build & deployments scripts
+-- logs -- daily rotatory log files
+-- src
| +-- api -- all the service endpoints
| | +-- endpoint1
| | | +-- controller.ts
| | | +-- model.ts
| | | +-- routes.ts
| | | +-- specs.ts
| +-- business -- the business layer (authentication, server audit)
| +-- components -- (such as loggers, external services consumption)
| +-- config -- configuration middlewares
| +-- data -- data layer
| | +-- repositories // all repositories needed for api/models
| | | +-- endpoint1Repository.ts
| | +-- providers // all data source providers the service could support
| | +-- adapters
With this approach I have all the logic related to an endpoint in the same folder. But I feel that the repositories are a little bit "far".
What do you guys think? Suggestion?
You can see a demo project here (I did it as a proof of concept and to learn a little bit about Firebase and CircleCI)