Scry 1: Small Application Step by Step
Step 1. Define the Question or Problem to solve.
Problem: I would like an easy way to find out my personality type.
Step 2. Do some research about the problem set, alternatives and current solutions.
Research: Read papers on the subject. Search for apps that are already doing this. Find good subject matter experts and talk to them. Read some more.
Step 3. Define the hypothesis for solving the problem.
Hypothesis: Using the accumulated research and studies from multiple scientific sources, create an application that lets the end users pick from small set of words to discover their specific personality traits as defined by the Big Five Personality Traits.
Step 4. Pick a name.
Name: Scry. Spend hours coming up with random names. Hours turn into days and days into months. Names are important but not important enough to stop work. Pick one and move on, it can be changed later.
Step 5. Pick a good enough project management stack.
Result: GitHub. It has source control, project management, build and publish pipelines. This project could also be repeated in other major code management providers, such as, AWS, GCP, GitLab, JetBrains Spaces.
Step 6. MVP Requirements.
Decide on the features and document them. My initial documentation is usually scattered across sketches and notes in random notebooks. At some point, I start writing high level stories in the project management solution. No need to get super detailed here, this is for you to keep track and manage features. As time goes on, add more and more stories. Some will be completed and others deleted.
Step 7. Pick a Cloud Provider.
Result: Digital Ocean. Any cloud provider or services provider will do. I have a specific skillset to develop and try out in mind, so my requirements were as follows: Kubernetes, RDS, some sort of an infrastructure as code.
Step 8. Pick an API Stack.
Result: dotnet and directus. For my part, I decided to test out the some of the automatic API providers on top of databases that have been in development and growing in popularity. I picked Directus, although this experiment could be done with Supabase or PocketBase or Amplify or Firebase. Directus will allow me to create a database schema and some basic data input without having to create each and every API endpoint for some basic CRUD. After that is in a good place, I will code up a minimal BFF API in dotnet that will serve the data in a way that can be optimized for use.
Step 9. Pick a Front End Stack.
Result: React. I will be creating a front end in React, since it is the most recent framework that I used, and can throw together a UI quickly and start iterating on the experience as soon as possible. I think that this decision should be based around a framework that you are most familiar with. One of the requirements will be creating a mobile app and in the past I have tried out various hybrid frameworks like React Native, Flutter and Cordova. And for the most part the learning and various quirks would take over the project. So starting with a simple web UI and quickly iterating on it and then deciding on the best way to create the mobile apps later.