30 Days, One User: What Building My Own Habit App Taught Me

I got a lot stronger. The scale didn’t move. Twelve lessons from 31 days of my own data.

Ibrahim Elhag · · 5 min read

In one month I nearly doubled my squat and logged 228 habit check-ins. I also finished the month 1.4 pounds heavier, while chasing a body-fat goal. Every one of those numbers came from an app I was building at the same time, for exactly one user: me.

The app is DSCPLND, a habit and training tracker. I had a goal (body fat from 25.1% down to 20%) and a pattern I’d had for years: start strong, quietly stop a week later. So I built the tool and used it every day while I built it. Here’s what 31 days of my own data taught me, about discipline and about shipping software.

The numbers

30 / 31
days with a habit logged
228 check-ins total
20
workouts in 4 weeks
73 min average
29 / 29
days on my supplement
a perfect run
+1.4 lb
body weight
189.4 → 190.8 lb (+0.7%)
27 days
Water
longest run: 24
27 days
Meditation
longest run: 21
27 days
Five daily prayers
Estimated one-rep max, first week vs. fourth week
Estimated 1RM (lb)Week 1Week 4Change
Lat pulldown147187+27%
Romanian deadlift3360+82%
Back squat3260+88%
Overhead press2947+62%
Curls2042+110%

Stronger at everything I tracked. The scale didn’t move.

DSCPLND habits screen
Daily habits
DSCPLND workout logging screen
Workout logging

Part 1: What the data says about discipline

01Small habits stick. Vague ones die.

If you can’t say what “done” looks like in one sentence, it won’t happen.

My best habits take one step: take the supplement, drink the water, pray, sit for a few minutes. Every one of them landed at 27 days or more.

My worst habits need deep focus and have no clear finish line. “Patterns (no AI)”: 0 days. “Write a tweet a day” and “Home work”: 1 day each. That isn’t a willpower problem; it’s a definition problem. Those habits need to shrink (“solve one problem”) or leave the list.

02Never miss twice

Perfect streaks punish you for being human. Forgiving ones keep you going.

DSCPLND forgives one missed day a week, as long as the day before was kept. Water reached 27 kept days even though my longest unbroken run was 24. The chain survived the slips, and so did I.

03Training without nutrition doesn’t move the scale

Strength came from the gym. Weight loss was never going to.

I got stronger at everything I tracked: lat pulldown up 27%, squat and deadlift up more than 80%. After a month, I weighed 1.4 lb more. Some of that is probably muscle. I can’t prove it, because I only did one body-composition scan, on day one.

I added a “Calorie deficit” habit on day 29. It should have been habit number one.

The gym builds the engine. The kitchen decides the scale.

04Measure what you’re trying to change

You can’t steer by a number you don’t check.

My goal was body fat. I measured it exactly once. Meanwhile I logged my weight 8 times and every single workout set. I tracked what was easy, not what mattered. The next scan is on the calendar.

05The plan has to fit your real week

A plan you keep beats a better plan you keep falling behind on.

I started with a 5-day split and kept “falling behind” a week I’d made up. I switched to a 4-day upper/lower plan. I still averaged 5 sessions a week, and I stopped feeling like I was failing.

06Beginner gains are real. Don’t overread them.

Give every set a small, visible target and progress stops depending on motivation.

Doubling my squat in a month says more about learning the movement than about being strong. What helped most: for the weight I’m about to lift, the app shows how many reps beat my best. Each set is a tiny, winnable goal.

Part 2: What building it taught me

07Use what you build

Daily use found the bugs that mattered. Tests didn’t.

Every bug that mattered, I found as a user:

  • My best streak showed lower than my current one.
  • The new iOS tab bar hid the bottom of my list.
  • Habits not due today were impossible to reach.
  • My phone died mid-workout, and the app recorded a session that lasted hours.
No test suite would have found these. Using it every day did.

08Don’t wait on the App Store for small fixes

Small fixes should reach users in an hour, not a week.

My first update sat in review for more than a week. Now the app uses Shorebird, which delivers code fixes straight to the installed app. In one day I shipped three fixes, and each was on my phone within the hour.

09Fast updates need guardrails

Any way to change an app without review is also a way in. Lock it down.

Every patch is cryptographically signed, and the app rejects anything that isn’t, even if someone got into my account. On top of that, a regular check flags any patch I don’t have a record of shipping.

10One codebase, every screen, live

Flutter let one person ship an iPhone app and a web dashboard from the same code.

The same Flutter code runs the iPhone app and a web dashboard. I check off a habit on my phone and the browser updates within a second.

11Let the database guard the data

Put access rules where a bug in the app can’t reach them.

There’s no custom server. Rules in the database make sure each person can only read and write their own rows, and only an admin can change app settings. A bug in the app can’t get around them.

12Build with AI, but write things down

AI moves fast. Documentation keeps it from moving in circles.

I built DSCPLND with Claude as my pair programmer. Speed wasn’t what made it work; documentation was. A guide for how to ship and verify. A changelog for everything that goes out. A list of mistakes never to repeat.

The next 30 days

  • Make the calorie deficit the first habit of the day.
  • Get a second body-fat scan.
  • Shrink or drop the habits that never started.
  • Open-source the app so anyone can learn from it or build their own version.

I’ll report back with the scan.