Now that I have the domain name and a place to store my work it's time to start making a list of what needs to be built (both infrastructure and code).
Long term I know I want to have an api, web ui and native mobile ui (not sure about desktop or not) so I want a way to keep track of which features are implemented in each part of the application. For the MVP I only care about the web ui and api. For now I'm going to turn on "Issues" and "Projects" within my github repo, create a project for the api, web ui and native mobile ui and use Kanban (get the book) to track my work.
Part of Kanban is visualizing your workflow. At this stage of the project I want to keep it simple so I'm just going to have a Backlog list where I track reminders of conversation/analysis for stuff that needs to happen later, an In Progress list to track things that I'm currently working on and a Done list to store items that I've completed. I can (and will) update that later as things get more complicated but this is good enough for now.
Initial Brain Dump
Now that I have a place to keep track of stuff that needs to get done I can do an initial brain dump based on what I know needs to happen for this particular application as well as stuff that I've picked up in experience over the years. Initially I'm just going to "rough in" the features that I want the application to have. I'll create GitHub issues for each of these and can detail them out later as they get prioritized. Here is my initial list for the MVP:
1. User Registration - Users can signup with email verification. Collect absolute minimum data necessary. This would be their Account within the application.
2. Manage Assets - Users can perform create/read/update/delete (CRUD) operations for their assets (api keys, domain names, ssl certs, etc)
3. Manage Communication Profiles - Users can define different ways (text/email/webhooks/etc) and frequencies (30/15/10/5/1 days) to be notified before assets expire.
4. Manage Asset Groups - Users can define groups that contain one or more assets. These groups are associated with a communication profile and can be secured where other team members can have varying levels of access (CRUD).
5. Manage Teams - The User who created the registration can perform CRUD operations on teams where they can invite other users to be able to manage assets in the specified asset groups.
6. Cancel an Account - When a user no longer wishes to have an account with TheHarbinger.io they should be able to easily cancel and have all related data permanently removed from the system.
I think that is enough for building the MVP. A user can register, create assets, get notified before they expire and cancel their account. There is plenty more I'd like to do later but we'll save that for .... later! :)
In addition to the functional requirements above, there are also some things that I want as the platform administrator in order to monitor the system as a whole and to help me make decisions about future work. I'm going to go ahead and add those as well and fill in the details later.
7. Healthchecks - I want a simple way to know if the system is running and also a way to verify that all dependent 3rd party services are available and responding well.
8. Metrics - I want to know how much traffic the system is handling and how well that traffic is being handled so that I know when there is a problem or when I need to scale out/up. There will be a lot of metrics over time but for the MVP I want:
- How many api calls are being made
- How long api calls take to execute
- How much data is returned from the api calls
- How long do 3rd party api calls take to execute
I've put these 8 cards in GitHub and I think this is enough for an MVP. If not, I'll just add more cards as I think of more requirements.
Next up, I'll pick the highest priority card, analyze it in detail to come up with specifications and start the implementation.