NextPage - Shipping an app in 100 days
28 Apr 2024

Note: This is a work in progress. I'll be updating this post as I make progress. The goal is to ship an app in 100 meaningful days of work, not 100 consecutive days. I'll be documenting my journey here, sharing my progress, learnings, and the challenges I face along the way. I am excited to see how this turns out.

Elevator Pitch.

NextPage keeps you active by rewarding daily fitness goals with new chapters of an LLM-generated book in the genre you choose during onboarding. Each chapter ends on a cliffhanger, compelling you to meet your next day's goal. This simple, effective approach blends exercise with reading, maintaining your physical and mental fitness.

So here is the plan.

My Plan

Sounds simple. Right?

I sure hope I don't run into issues (Foreshadowing, Maybe?)

Day 1: (28th April 2024)

I started with the basic setup. I created a new Flutter project and added the necessary dependencies. I also created a new repository on GitHub to keep track of my progress.

Day 2: (29th April 2024)

I worked on the UI of the app. I created the home screen and added a bottom navigation bar.

Found design inspiration on Dribble. I am focusing on five metrics: steps, distance, sleep, stairs, and energy burned.

Not happy with the design yet. I'll change it soon, probably before I integrate the Health SDK.

Day 3: (30th April 2024)

I've taken some major decisions today. This app is going to be iOS only.


- Development for HealthKit is controlled and predictable on iOS, unlike Android where there are multiple vendors and versions like Google Fit, Samsung Health, etc.
- Smaller user base, so I can focus on the core features and not worry about fragmentation.
- Flutter HealthKit plugin is more stable on iOS than the Android counterpart.
- In the future, I can always expand to Android if I see a good response.

Another major decision is I'll be focusing on three main metrics: Steps, Sleep, and Energy burned. I'll add more metrics in the future if I see a good response.

Changed the design to a minimalistic one. I am happy with the color tone and the minimalistic look of the home screen.

Features of the new design:

- Light and Minimalistic design
- Dynamic emoji in the top left corner that changes with the time of day and aligns with the moon phase at night (becasue why not?, I like it, deal with it. It's my product.)
- Retained the bottom nav, Since I love the interaction I came up with

Starting with the HealthKit integration tomorrow.

Day 4: (1st May 2024)

I started with the HealthKit integration today. It was quite easy to set up. I was able to fetch the decided metrics (Steps, Sleep, and Energy burned).

Also added the settings screen, which I think I nailed it.

There are two issues. The steps and sleep don't seem to be accurate.

- For Steps, it seems to be adding the last two days' data even though I am fetching the data for the current day.
- The Health app shows I slept around 10 hours, but the app shows 0 hours.

I'll look into it tomorrow. I really hope it's something I am doing wrong and not a bug in the plugin.

Day 5: (2nd May 2024)

I fixed the issues with the step count; it was a silly mistake. I was fetching the data for the last 24 hours instead of the current day.

The sleep data is still not accurate. I believe it shows 0 hours because I was not wearing my watch while sleeping. I'll test it again tonight.

In terms of the design, I added a new splash screen which then transitions to the auth screen. I am happy with the design and the transition.

Day 6: (3rd May 2024)

Spoke to some of my friends about the app. The home screen design needs a little more work. Here is the updated design.

I also added the onboarding screen. I am happy with the design. The onboarding screen will have four screens:

- Get permission screen
- Enter name screen
- Setup Goals
- Select genre screen (Pending)

Day 7: (4th May 2024)

Improved haptics all over the app. I am happy with the feel of the app now. This may seem like a small thing, but haptics are important for the overall feel of the app.

I'll be working on the goal setup screen tomorrow. I am thinking of setting up the goals in a fun way. Maybe a slider or a wheel picker; I'll decide tomorrow. Maybe even Rive animations.

Day 8: (8th May 2024)

I took a break for a few days. I was feeling a little burnt out. I am back now. I worked on the goal setup and genre selection screen today.

For the goal setup, I went with a wheel picker. I think it's fun and easy to use and it fits the overall theme of the app.

For the genre selection, I went with looping Tinder-style cards. I think it's fun and engaging. I am happy with the design.

I think the overall design of the app is coming along nicely. I am happy with the minimalistic design and the color tone. I'll show this to a few designer friends and get their feedback.

Here is the updated onboarding flow.

From tomorrow, I'll be working on the main feature of the app, the reward system.

First, let's scope out what's possible and what's not. Secondly, let's also zero in on which LLM I'll be using and how each book will be generated and stored.

My first foray into LLM and backend. I am excited.

Day 9: (9th May 2024)

Started learning about LLMs. It's quite interesting. I am testing Apple's OpenELM, Lamda, and a few others. I am excited to see how this turns out.

Also on the UI side, I added a sleep breakdown component. This gives better insights into the sleep data.

Day 10: (14th May 2024)

Over the last few days, I've been testing different LLMs using Ollama. It's quite interesting how these models generate text. The problem is, the generated text is not always coherent or somethimes the content is very short. I know, I can give a higher word limit, but that adds a lot of filler rather than setting up the scene.

I am thinking of learning what makes good story. I am not a writer, but I think I can learn the basics and then use the LLM to generate the content. Atleast I'll have a better understanding of what the LLM is generating.

This is wild. I was watching Google I/O and they announced AI competion. I am thinking of participating. I'll be using the same LLM to generate the content for the app. I think it's a good opportunity to learn more about LLMs and also get some feedback on the generated content.

Now that I have a tigher and focused goal, I'll be working on the reward system tomorrow.

Day 11: (16th May 2024)

Spoke with few of my designer friends. Walked them through the app. They seem to think the USP of the app is really cool. They also suggested a few changes to the design.

Changes suggested: (In order of priority)

- On the genre selection screen, make sure to call out AI will be doing the heavy lifiting.
- On the personal details screen, we should be also asking for the age, height and weight along with name.
- On the goal setup screen, it's good to recommend the base goal based on the age, height and weight.
- Work on the copy. Stick to one tone.
- Learn more about color theroy and try to align my app's idea to that pallete. The current color is usually used in app that's is related to luxury or shopping.

New Features suggested: (In order of priority)

- Color code the metics grids to progress indicator, so it's visually linked, thus eliminiating the need of legends on the chart
- Ability to view previous day's progress.

These are really good suggestions. I'll start to work on these once I figure of the AI part.

I created my first ever API.

Made some progress on the AI front. Set up the API repository for the backend. I am using nodeJS and Express for the backend, Along with @google/generative-ai, for the LLM. I am happy with the progress. Created a dummy endpoint to test the LLM. It was working fine. Now I have a rough idea of how the API will look like and how the LLM will be integrated.

Over the next few days, I'll draw out the list of API's I'll be needing and start working on them and will also start working on the frontend integration.

Story beats.

I am also learning about story beats. I learned about the three-act structure and the eight-point arc. I am excited to see how this turns out. I'll be using this to generate the content for the app.

< Back