I’ve been a developer a long time, however I’ve always found it fascinating to learn how people structure their solutions and by extension the applications that they build.

With its infinite flexibility, I’ve found that C# (and most other languages/frameworks with configuration over convention) lend themselves to just about any architecture anyone could ever think up. However, I’ve often found that same flexibility lends itself to over-complicated or over-architected codebases or codebases without any architecture at all.

What do you find is the best way to structure your solutions and applications?
I really like vertical slices personally. It is fairly simple to start and scales well to larger codebases:
https://jimmybogard.com/vertical-slice-architecture/

With this, the vast majority of the time when adding new features, I’m only adding new (testable) classes, rather than having to modify service layers and change code all over the place.

One project for the dal (ex dapper), one project for the service/core layer, one project for the front ( can be ui or controller layer in case of api), maybe a common libs prj. The good old 3 layers is the strict minimum.. For my preference… After that it depends a lot on the project itself, the goal, the team you work with… But if you are alone and you think it will take 15 days to dev the main features maybe no need to have 20 layers of abstraction…

This is what I do as well. Api project, service layer project, data project, test project, and depending on the solution I might have a separate project for models and for general utilities.

source