Plans are nothing. Planning is everything. Dwight D Eisenhower
I realised I missed a step in my original plan for the project: planning. The reason I like this quote is that it is clear that the plan might not be followed, however the process of planning forces you to think about what you want to do.
So I've done some initial planning around this. Since I'm reading a book on documenting software architecture, I've dug into that for the most appropriate view to use.
Some notes on this:
- I want to clearly separate the UI layer from the business layer in order to facilitate adding an API
- The data access layer might be swapped out with a completely different data backend in the future, so that needs to be separated out. I'm currently thinking that I'll implement these Entity Framework for the first version. I'll avoid generic repositories to create a clean interface that doesn't require implementing a LINQ interface over a NoSql database that might not cleanly support it.
- I want the Authentication to be clearly separate from the business layer in order to keep this as dependancy free as possible. This tends to be a rather complex area that is well worth ensuring it doesn't have any dependencies.
- Cross cutting concerns like logging aren't covered in this diagram