Next.js + Supabase + Ollama. Zero API costs. 3,000+ articles generated for free.
Six months ago, I wanted to move abroad but couldn't find a single platform that gave me real, verified cost-of-living data without a paywall. Numbeo has data but no guides. NomadList has rankings but costs $99/year. Expatistan has comparisons but limited cities.
So I built ReloMap. It's free, has 208 cities, 3,000+ articles, and costs me approximately €0/month to run.
The Tech Stack
- Frontend: Next.js 15 (static export on Cloudflare Pages — free)
- Database: Supabase PostgreSQL (free tier, 500MB)
- AI: Mistral 7B via Ollama (self-hosted on a €8/month Hetzner server)
- Translations: Google Translate API (free for our volume)
- Search engines: IndexNow for instant indexing (free)
- CDN: Cloudflare Pages (free, unlimited bandwidth)
Total monthly cost: €8 (just the server for Ollama)
The Data Pipeline
The hardest part wasn't building the app — it was getting reliable data. Here's what I learned:
Numbeo has the best data but rate-limits aggressively (429 after ~20 requests). Solution: I wrote a gentle scraper that processes 1 city every 30 minutes via cron. After 4 days, I had all 208 cities.
Expatistan has no rate limit but fewer cities (70). Good for cross-validation.
Livingcost.org required Playwright (headless browser) because the data loads via JavaScript. Added 90 more cities this way.
For every city, I merge data from all three sources. Numbeo data takes priority (quality score 95/100), with Expatistan and Livingcost.org filling gaps.
Generating 3,000+ Articles for Free
Each city gets 15 article types (cost-of-living, neighborhoods, digital nomad guide, tax guide, etc.). That's 3,120 articles.
I generate them using:
- Groq API (free tier, Llama 3.3 70B) — primary
- Mistral API (free tier, Mistral Large) — fallback
- Ollama (self-hosted Mistral 7B) — emergency fallback
Each article injects real data from our Supabase database. The prompt includes verified prices, safety scores, and climate data — so the articles contain real numbers, not AI hallucinations.
Translation to Italian, Spanish, and Portuguese uses Google Translate (free for our volume). Not perfect, but good enough for SEO in non-English markets.
The Results
- 208 city profiles with verified data
- 3,000+ articles in 4 languages
- 432 static pages
- ~1 million words of content
- Total cost: €8/month
- Time to build: ~3 months
The site is live at relomap.app. Everything is free — no paywall on data.
What I'd Do Differently
- Start with fewer cities — 50 cities well-researched > 208 cities with gaps
- Build the audience first — I built the product before having users
- Focus on one language first — Translating 3,000 articles is a maintenance nightmare
If you're building something similar, the ReloMap dataset is freely available as a machine-readable file.
Follow me for more on building products with zero budget. The full platform is at relomap.app.
Top comments (0)