Solution design
We will start by listing some high-level acceptance criteria for our solution and the approach we want to take:
The solution should create a snapshot of our files at regular intervals as we make changes to our source code projects
We want to control the interval at which the directories are checked for changes
Code projects are primarily text-based, so zipping the directories to generate archives will save a lot of space
We will build this project quickly, while keeping a close watch over where we might want to make improvements later
Any implementation decisions we make should be easily modified if we decide to change our implementation in the future
We will build two command-line tools: the backend daemon that does the work and a user interaction utility that will let us list, add, and remove paths from the backup service
The project structure
It is common in Go solutions to have, in a single project, both a package that allows other Go programmers to use your capabilities and...