Spartan Mode Planning

Spartan Mode Planning
Spartan on a dragon in the style of Francis Bacon (Stable Diffusion)

I'm going to try build and launch a smaller app this month called Spartan Mode. The idea for Spartan Mode came about after setting up a group chat with a few of my friends where we would keep each other accountable for things we wanted to keep doing and things we wanted to give up. You would identify the things you wanted to keep doing such gym, meditation, cooking dinner, assigning a positive score to those. And identify activities you wanted to stop such as drinking, smoking, eating take-aways and assign a negative score to those. At the end of each day you would add up your score and post your activities to the chat. The idea of the chat was not to have a competition, but to have accountability to your friends and to have support when you do mess up. This proved to be very helpful for me and it was the best month of my life in terms of making all the right choices and generally just feeling really good.

Although, I do think when you're doing things well, you shouldn't need other people to see that. It's better to recognise the things you're doing well privately and keep track of that over time. But when you do slip up, being accountable but also have support from friends is very helpful in getting back on track. So the app will be a way to track your positive/negative activities over time and when u do slip up send a text message to accountability buddies.

Current state of affairs (sidenote)

I have been working on Suvnas a white label mobile app for mental health clinic's to support their clients. It's been launched with Reborn Clinic on android and waiting on some business documents to go through before I can get approval from the iOS store. So I thought I'd get a head start on the next project. I'll be writing more progress updates with Spartan Mode as I didn't give any time to that with Suvnas.

Scoring System

There will be a max score for each day of 100pts. And a set of positive activities that will add up to 100pts. This will help in creating averages over a period of time (average 95pts over 10 days will be Spartan Mode 💪💪🚀🤯🥵). Activities will have flexible score values. So for example, I may have (Meditation +10, Gym +40, Study +20, Sleep at 10.30 +30) in the activities I want to do every day. If I add or remove activities from the daily list I must reassign the points for activities. Negative activities will have a minus score and can be any value the user wants. So if someone really wants to give up something they can assign -200pts, so if they do that negative activity it really mess up their 10 day rolling average. The user can also add a trigger to negative activities that will send a text message to their accountability buddies at the end of each day.

Tracking the scores for each day

I'll use SQLLite as a db inside the app to track the users scoring each day. Possibly overkill but it will give me room for adding more analytics features in the future. Tables that I can think of now will be activities and daily_reports.

activities
id int
title text
score int
enabled boolean // Indicates wether activity is selectable in daily activity list
daily_reports
id int
date timestampz
activities jsonb // json array snapshot of completed activities for that day with scores of activities at that time
total_score int

The average can then be calculated over all the 10 days using total_score field of daily_reports records. This will render a coin that transitions from wood, bronze, silver and gold with an emblem of a spartan helmet. The closer the user gets to average of 95pts over the 10 days the closer the coin will be to fully golden. This will hopefully gamify the experience of making good decisions and avoiding bad ones.

Onboarding flow

The onboarding flow will launch once the app is installed, there will be no signup/login process as all the data will be stored on the device. I like the progress UI Instagram have in their stories with the tabs indicating the current position of the image/video in the story. I'll do something similar for the onboarding. The onboarding screen will be as follows:

  1. Welcome screen with logo
  2. Explain concept of spartan mode
  3. Add positive activities minimum 2
  4. Add negative activities minimum 1
  5. Add daily reminder notification to complete daily activities report

I'd like there to be slick transitions between the onboarding screens possibly a slide and fade transition as move from one screen to the next. I'll do that at the end though once the functionality is there.

Accountability Buddies

When the user has selected a negative activity and completed the daily report we'll send a text message to their accountability buddies. We'll store the info in a table like this:

accountability_buddies
id int
name text
phone_number text
activity int(fkey)

When daily_report is completed we'll grab any accountability buddies linked to those negative activities and ping a Supabase Function with phone number and text body explaining the negative activity. The Supabase function will use Twilio to send the text message to the phone number. We'll also add in a link to download Spartan Mode in the text message as a way to organically market the app 👀.

Summary

This is what I'm thinking so far for how Spartan Mode will work. If you have an ideas for this app you can email me at brian@borealsoftwarelabs.com, I'd love to hear any suggestions. I'm hoping to publish weekly progress updates from now on so stay tune!

Thanks for reading,

Brian