Solve.rs
Case Study · Next.js migration & SEO

Vodostaj.rs: React SPA → Next.js, 2.6M impressions

How a React SPA — now migrated to Next.js — reached 2.6M impressions, 60K clicks and #1 Google rankings through July 2026, with 1,200+ daily users across Serbia, Bosnia, Croatia, Germany and beyond. SEO-first from day one, compounding ever since.

Visit Live Site
Vodostaj.rs — live site (mobile)
Pages we built
Station page
Station pagevodostaj.rs/stanice/dunav-novi-sad
Fishing seasons (Lovostaj)
Fishing seasons (Lovostaj)vodostaj.rs/lovostaj
Client
Vodostaj.rs
Industry
Environmental Data / Public Infrastructure
Timeline
8 weeks · Next.js since May 2026
Status
Live & Growing
The proof

The numbers, straight from Google.

Google's own numbers through July 31, 2026 — since launch, organic search has compounded into all-time highs, and it's still accelerating.

2.6M
Impressions
60K
Organic clicks
2.3%
Average CTR
#5
Average position
Daily search impressions
2-week averages · launch → Jul 31, 2026
15K
+53%
Monthly active users
31K
+30%
Monthly sessions
3.7K
+27%
Returning users
~1K
8×
Registered members
In-app engagementProduction database
727
Favourited stations
saved by registered anglers
134
Active alerts
100% still enabled
138
Logbook entries
catches logged by anglers
Top markets by clicksBalkans + Germany
Serbia
38,950
Bosnia & H.
5,909
Croatia
4,546
Germany
4,348
Slovenia
2,581
89% mobile

9 in 10 sessions happen on a phone — engineered mobile-first for anglers checking levels on the riverbank.

AI Assistant traffic

A brand-new channel — visitors now arrive from AI assistants like ChatGPT, a discovery source that barely existed a year ago.

Source: Google Search Console + Google Analytics 4 · vodostaj.rs · data through July 31, 2026.

The Challenge

Fragmented data, urgent need

  • No centralized platform for river water level data in Serbia
  • Data scattered across multiple government sources
  • No real-time monitoring the public could access
  • Speed mattered: flood season was approaching
  • The budget ruled out a slow, traditional build
The Solution

Modern platform, rapid execution

  • Built a React SPA with real-time data
  • Integrated 100+ monitoring stations from official government sources
  • Built an interactive map of all stations
  • Set up an SEO-first architecture with manual Google indexing
  • Deployed on modern, scalable hosting
  • Migrated to Next.js (SSR/SSG) in May 2026 for automatic indexing
The platform

More than a dashboard — a water & fishing platform

Vodostaj.rs turns fragmented government hydrology into a real-time, personalised tool for anglers across the Balkans — engineered to grow from a monitoring dashboard into a full fishing-intelligence ecosystem.

Live

Water level monitoring

Real-time and historical levels for 100+ RHMZ stations — interactive map, trend deltas and flood/drought thresholds across the connected river network.

Live

Lovostaj — fishing regulations

Closed seasons and minimum catch sizes per species, with plain-language summaries of Serbian fishing law and structured data. The single biggest traffic driver.

Live

Threshold alerts

Anglers set their own water-level thresholds per station and get a web-push notification the moment a river crosses them.

Live

Angler tools

Favourite stations, a personal catch logbook and per-user tracking — the engagement layer that turns visitors into registered members.

Roadmap

Tournaments & leagues

A structured database of competitions and editions, building toward a cumulative angler ranking system.

Roadmap

AI fishing intelligence

A composite fishing-condition score from water level, temperature, pressure, moon phase and season — explainable, premium-gated insight.

Under the hood
Next.js · SSR/SSGSupabase Postgres + RLSEdge FunctionsSupabase RealtimeRHMZ scraping pipelineWonderpush web pushGA4
Results

Measurable outcomes

2.6M
Impressions through July 2026
60K
Organic clicks from Google
#1
Rankings for key fishing terms
89%
Of all traffic on mobile
User Engagement

Real users, real engagement

Beyond traffic, the platform has an active audience: PWA installs, daily station tracking and a community that keeps coming back.

~1K
Registered members
Closing in on 1,000 registered anglers tracking favourite stations — up from ~120 at launch, roughly an 8× jump
1.2K+
Daily active users
Now regularly past 1,200 people a day checking water levels and lovostaj dates
15K
Monthly active users
July 2026 — up 52.8% month-over-month as organic search keeps compounding
31K
Monthly sessions
Up 30% MoM, with a healthy ~40% bounce rate and 3.7K returning users
Organic Growth

Organic search, straight from Google

Search Console totals through July 31, 2026 — SEO-first from day one on the React SPA, now compounding across the region after the Next.js migration.

Period
Since launch → July 31, 2026
Total Impressions
2.6M
Total Clicks
60,595
Avg CTR
2.3%
Avg Position
5.0

Top Ranking Keywords

Serbian search queries, exactly as people type them.

QueryPositionClicks
lovostaj riba 20261.42,696
vodostaj dunava6.31,499
vodostaj rs1.31,074
zabrana ribolova 20261.21,066
lovostaj ribe 20262.3903
vodostaj dunava novi sad3.9615
Last 28 days · July 2026

And it's still climbing

Growth hasn't plateaued — it's accelerating. In the 28 days to July 31, 2026 alone, the platform earned 693K impressions and 17.6K clicks — roughly 27% of all impressions and 29% of all clicks since launch. Nearly nine in ten of those clicks came from phones.

693K
Impressions
Google Search, last 28 days
17.6K
Organic clicks
2.5% average CTR
#5
Average position
Brand query “vodostaj rs” averages position 1.3
89%
Traffic on mobile
15.7K of 17.6K clicks from phones
Reaching
SerbiaCroatiaBosnia & HerzegovinaSloveniaGermanyAustriaMontenegro
Evolution

Next.js migration: from React SPA to v2.0

Strategic technology evolution based on proven results, not assumptions.

v1.0 · ShippedDone

React SPA Foundation

Fast time to market with proven SEO results. Manual indexing validated the strategy and reached #1 rankings.

  • 8-week launch
  • #1 rankings achieved
  • PWA installs
  • 200+ favourite stations in v1.0
v2.0 · LiveSince May 2026

Next.js Migration

Migrated to Next.js for automatic indexing, SSR/SSG and stronger Core Web Vitals — now past 2.6M impressions and 60K clicks through July 2026.

  • Automatic Google indexing
  • Improved Core Web Vitals
  • SSR for real-time data
  • 2.6M impressions through July 2026
Technology

Tech stack and architecture

Platform

  • • Next.js
  • • React 18
  • • TypeScript
  • • Tailwind CSS

PWA & Engagement

  • • Progressive Web App
  • • Push notifications
  • • Offline support
  • • Home screen install

Analytics & Tracking

  • • Google Analytics 4
  • • Data Layer events
  • • User behavior tracking
  • • Conversion funnels

SEO Strategy

  • • SSR/SSG auto-indexing
  • • Semantic HTML
  • • Meta optimization
  • • Structured data
Development Timeline

8 weeks from concept to launch

Week 1–2

Research & Architecture

  • • API research and data source identification
  • • Information architecture planning
  • • SEO-first URL structure design
  • • Tech stack finalization
  • • Design system creation
Week 3–5

Core Development

  • • API integration and data processing
  • • Map implementation and station markers
  • • Real-time data updates
  • • Station detail pages
  • • Search and filtering
Week 6–7

Polish & Optimization

  • • Performance optimization
  • • Mobile responsiveness
  • • SEO metadata implementation
  • • Analytics integration
  • • Error handling and edge cases
Week 8

Launch & Monitoring

  • • Final testing and QA
  • • Production deployment
  • • Performance monitoring setup
  • • Initial user feedback collection
  • • Documentation
Insights

Key learnings from this project

SEO Wins on Strategy, Not Just Stack

A pure React SPA hit #1 rankings through manual indexing — proof that SEO is strategy and content first. The later Next.js migration then unlocked scale: 2.6M impressions and 60K clicks in just over six months since launch.

PWA & Alerts Drive Real Engagement

Registered anglers have saved 727 favourite stations, keep 134 alerts active — every one still enabled — and have logged 138 catches. That level of engagement shows the product meets a real need.

Data Layer = Better Decisions

Comprehensive data layer tracking through GA4 captures every user interaction. This granular data enables evidence-based optimization and feature prioritization.

Evolution Over Perfection

Shipped v1.0 as a React SPA to validate market fit. The v2.0 migration to Next.js came only once real demand was proven — justified by data, not assumptions.

Ready to build your product?

We can help you build and launch your product using the same Growth Engineering principles that powered Vodostaj.rs. Fast execution, solid architecture, measurable results.

See Our Framework