A habit tracker that refuses to die.
Pick the habits you want to build. Check off days. Watch your streaks grow. That's it.
Rootein was first built in 2009 by Amit and Kunal — Ruby on Rails, hand-written CSS, no frameworks, no shortcuts. We were learning as we went, writing every line by hand over a few months. It worked. Green meant you were on target. Red meant you were slacking. Simple, and effective.
Then, like most side projects, life happened. The app went offline. The code gathered dust.
Seventeen years later, I dusted it off. Same idea. Same feel. But this time, Claude Opus 4.6 drove most of the implementation — the UI, calendar logic, drag-and-drop reordering, email reminders, and the about page. I handled the scaffolding and made the tech stack decisions.
What took months in 2009 took hours in 2026.
Here's a video of the original Rootein from back in the day.
| Layer | Choice |
|---|---|
| Framework | Rails 8.0 |
| Language | Ruby 3.2 |
| Database | PostgreSQL |
| Frontend | Hotwire (Turbo + Stimulus) |
| Styling | Tailwind CSS |
| Asset Pipeline | Propshaft + Import Maps |
| Web Server | Puma + Thruster |
| Auth | has_secure_password (bcrypt) — no Devise |
| Deployment | DigitalOcean App Platform |
No frontend frameworks. No unnecessary gems. Just Rails, the DHH way.
- Ruby 3.2.2
- PostgreSQL
# Clone the repo
git clone https://github.com/ajot/rootein.git
cd rootein
# Install dependencies, create DB, run migrations
bin/setup
# Start the dev server (Rails + Tailwind watcher)
bin/devThe app will be available at http://localhost:3000.
For local development, the defaults should just work. For production, you'll need:
| Variable | Purpose |
|---|---|
DATABASE_URL |
PostgreSQL connection string |
RAILS_MASTER_KEY |
Decrypts config/credentials.yml.enc |
Claude and I kept notes along the way. Every decision, every lesson, every phase of the plan — it's all in the repo.
| File | What's in it |
|---|---|
| WHY.md | The vision — why this exists and what it's intentionally not solving |
| PLAN.md | The build plan — 10 phases from "one rootein in the database" to deployment |
| DECISIONS.md | Every stack decision, logged as we made them. Rails 8, no Devise, no SPA |
| LEARNINGS.md | What I learned — Rails concepts, DHH philosophy, gotchas, and patterns |
Built by Amit. Originally co-created with Kunal in 2009.
Rebuilt in 2026 with Claude Opus 4.6 doing the heavy lifting.
Inspired by the DHH way of building for the web.
