About one month has passed since the initial idea for this app came to me. I was able to write it down and create a repository for executing the idea fairly immediately. Since then I have spent no time on a UI for the app but some time working on backend code and an API for the UI to call. I have attempted to document some of my decisions because I know from experience, that when making infrequent visits to a code base, there is a fear of making changes when you can’t remember why things were done a certain way. The decisions I have documented are all available in the repository. It is probably not possible for me to document all decisions because there are certainly some that I am less aware that I am making. For example I have a preference for some ideas from Domain Driven Design, such as using a code-first approach to creating domain objects, rather than designing a schema or API endpoints first.
I also have a strong preference for keeping the code, documentation, build definitions, etc in the same place, so that a project is self contained. I believe (without much evidence) that this will help people remember to keep documentation up to date as they make changes to the project. At least I hope it will reduce the friction of such updates. One day I would like to play around with writing some tests that check that certain kinds of commits contain changes to the documentation too. I think it should be possible to do this and reduce the incidence of false positives in much the same way as the project ensures that commit messages are linted. In any case, I chose to make the repository for this project a monorepo that contains the documentation site, the API and the front-end app in a single repository, but I did not document this decision in the architecture decision records.