Only66
The Challenge
I gave myself a challenge: build an app in less than 3 hours using whatever I wanted. No rules. Just one goal: have an idea, architect it, build it, deploy it, and see if the thing actually works.

The app became Only66, a gamified habit tracker that helps you build or break a habit in 66 days. The idea is simple: pick one challenge, protect your streak, and make it to the end. Inspired by the addictive streak system of apps like Duolingo, Only66 uses progress tracking, reminders, and pressure-based motivation to keep you from folding.
Live Site: https://only66.site/
Github: https://github.com/shuklashreyas/Only66
Starting With the Architecture
Before I even opened Lovable or Copilot, I started in the most ancient developer environment known to man: a notebook.
I wrote down the pages I needed, the data I needed to store, what the dashboard should feel like, and the core loop of the app. I knew I didn't want to build another generic habit tracker where you click a checkbox and feel nothing. That already exists. The whole point was to make discipline feel like a game.

The product loop was simple: pick one habit, survive today, and do it 66 times. That's basically the whole app. The reason I liked this idea is because building habits is boring until you turn it into something visual. Most people don't quit because they are incapable. They quit because the process feels invisible. You do the right thing for one day, and nothing really changes. You skip video games for one night, read 10 pages, go to the gym, or avoid TikTok, and your life looks exactly the same the next morning.
Making Effort Visible
That's why streaks are powerful. They make invisible effort visible. Only66 tries to make that effort feel real. Every day becomes a tile on the grid. Every check-in becomes proof. Every panic moment becomes something you can survive instead of something you immediately give into.

I also wanted the app to feel less like a wellness product and more like a survival game. A lot of apps are functional but forgettable. They technically work, but there is no identity. You open them, click around, and leave. I didn't want Only66 to feel like that. I wanted it to feel like you entered a mode and you're playing a video game.
The Video Game Style
That's why the style became such a big part of the app. Black background, red accents, aggressive typography, a 66-day grid, a panic button, soundtracks, and copy that talks to you like it is trying to keep you alive in a video game. Instead of "complete habit," the button says something like "I survived day 1." Instead of "daily quote," it becomes a transmission. Instead of "urge timer," it becomes a panic protocol.

That might sound dramatic, but that is the point. Most habit apps are too soft. Only66 is supposed to be a little intense. Not in a cringe way, hopefully.
The Panic Button
The most interesting feature to me is the panic button. If you are about to fold, you hit the button. The app gives you a countdown, reminds you why you started, and forces you to sit with the urge for a little bit. Is that going to magically cure bad habits? No. But the goal is to create friction between the urge and the action. Most bad habits win because there is no space between wanting and doing. Only66 tries to create that space.

The Tech Stack
From a tech perspective, the stack is extremely simple. It is a Vercel-deployed React/TanStack web app using localStorage for MVP persistence instead of a real backend or database. There is no Supabase, no MongoDB, and no full authentication system yet. The data is stored in the user's browser. That means if someone creates a habit on their laptop, the data stays on that browser. If they switch devices or clear site data, the run is gone. Is that ideal? No. Is it good enough for an MVP? Yes.
That was one of the bigger engineering decisions I had to make. I originally thought about using a real backend with auth and a database, but then I realized I was overbuilding before even knowing if the loop was fun. For this version, localStorage makes sense. It lets anyone use the site immediately without creating an account, keeps the app lightweight, and makes deployment way faster.
Notifications
The notifications are also simple right now. Only66 uses the browser Notification API with an in-page timer. Basically, if the dashboard is open and the user has allowed notifications, the app can remind them at the chosen time. But it is not a true background push yet. If Chrome is closed, the tab is closed, or the user is not on the dashboard, the reminder will not fire.

At first, I thought Chrome notifications meant actual reminders. Then I learned the difference between foreground browser notifications and real background push notifications. True push requires a service worker, push subscription, backend scheduling, and a place to store subscriptions. So for now, the MVP version is honest: browser reminders work while the dashboard is open. Background push and SMS can come later.
Vibe Coding Still Requires Judgment
This is the part of vibe coding people don't talk about enough. Yes, I wrote 0 lines of code manually. I used Lovable, Copilot, and Vercel to move fast. I was literally checking the build while playing Madden. But I still had to make actual decisions. What should the app be? What should the product loop feel like? Should I use Supabase or localStorage? Should the dashboard have a quote card? Should the app feel like Duolingo, a productivity tool, or a survival game? Should notifications be simple, or should I spend hours building real push before anyone even uses the app?
AI can write code faster than me. That part is obvious now. But AI doesn't automatically give you taste. It doesn't automatically know what to cut. It doesn't know if the product feels boring. It doesn't know if a feature is worth adding or if you are just procrastinating by making the architecture more complicated.

What's Next
That is what this project taught me. Vibe coding is fun, but good vibe coding still requires taste, judgment, and some engineering knowledge. If you don't understand what localStorage is, what a backend does, what deployment means, or why notifications behave differently in the background, you can still build something, but you won't really know what you built.
Only66 is still in progress. The next improvements are better background notifications using service workers and push, SMS reminders later, more gamification like levels, checkpoints, and boss fights, weekly recaps, better mobile polish, a real backend if people actually use it, stronger sound design, and better transmission unlocks for each day. But for now, I'm happy with it. It started as a random challenge to build something in under 3 hours, and it turned into a small product that I will actually use.
The Stoic Stack, in your inbox.
Get notified when I drop a new post. Software, AI, sports, philosophy, and life — unsubscribe anytime.
More Blogs Like This
Codex Automation Is Tuff
Codex doesn’t replace all the work. It just makes the boring parts way less painful.
Why I Am Building Refara
Eduardo Camavinga's red card, Joel Embiid's flopping, and Arsenal's dodgy VAR decisions. That's why I'm building my Refara AI referee computer vision startup.
Building Solo
When you're building a project solo, it's not the cakewalk it seems. Freedom is great until accountability disappears-and pressure is what actually makes you perform.
