u/Hochul-Song

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:**

  1. **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.

  2. **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).

  3. **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.

  4. **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:**

- https://tradeoff.life

- https://tradeoff.life/de

Launching on Product Hunt tomorrow. Would love feedback on the tech decisions, UX, or anything else!

What would you have done differently?

u/Hochul-Song — 24 days ago