
Hey r/buildinpublic — I spent the last 7 days building a side project solo, and wanted to share what I built and what I learned along the way.
**The project:**
tradeoff.life is a habit cost calculator. It takes a daily/weekly/monthly habit (cigarettes, coffee, subscriptions, etc.) and shows you the 30-year invested cost — but through multiple lenses: months of rent, Europe trips, years of life lost (for health-affecting habits), ETF shares, etc.
**Tech stack:**
- Vue.js 3 + Nuxt 3
- Deployed on Cloudflare Pages
- No backend — everything runs client-side with computed properties
- I18n for EN/DE locales
- URLs are shareable and parameterized (no login needed)
**What I learned:**
**State management is tricky even for "simple" apps.** With 5 presets, multiple time horizons, adjustable rates, and different currencies — keeping the state clean without Vuex/Pinia was a challenge. Ended up using Nuxt's built-in reactivity and a few composables.
**I18n is harder than it looks.** Native EUR pricing for DE and USD for US meant I couldn't just do a string replace. Had to think about locale-aware number formatting, currency positioning, and region-specific "lenses" (like DAX ETF for DE vs S&P 500 for US).
**The compound interest formula is deceptively simple, but the UX around it isn't.** People want to see numbers shift as they drag the horizon bar. Smooth animations + accurate math = more re-renders than I expected.
**Deploying on Cloudflare Pages was shockingly easy.** Literally `npx nuxi generate` + connect repo. Zero config.
**Monetization:** Free, no ads, no popups, no tracking. One Amazon affiliate recommendation per result page (a book or relevant product). That's it.
**Links:**
Launching on Product Hunt tomorrow. Would love feedback on the tech decisions, UX, or anything else!
What would you have done differently?