DEV Community

M. Munir
M. Munir

Posted on

How I Built 1,781 Web Pages With Next.js and Deployed for Free

A solo developer's journey building two niche websites from scratch — finance calculators and writing tools — using Next.js, Vercel, and programmatic SEO.

Free Financial Calculators 2026 - Mortgage, Tax, Retirement, Debt | FreeFinCalc

470+ free calculators for mortgage, tax, retirement, investing, debt, and budgeting. Instant results in 40+ currencies.

favicon freefincalc.net

Free Word Counter & SEO Writing Tools | WordCounterTool.net

Free professional word counter and SEO writing tools. Word counter, keyword density checker, meta tag generator, readability checker and more. Instant results, no sign up.

favicon wordcountertool.net

I recently built two websites from scratch that now have a combined 1,781 pages — all deployed for free on Vercel. One is a finance calculator site with 1,441 pages. The other is a writing tools site with 340 pages. Both are live, fast, and generating organic impressions in Google Search Console.
Here's exactly how I did it, what I learned, and what I'd do differently.
The Two Sites
FreeFinCalc.net — 470+ free financial calculators covering mortgage, tax, retirement, investing, debt payoff, budgeting, cost of living by state, and head-to-head comparisons. It has 1,441 pages including 50 state-level cost of living calculators, 50 city mortgage calculators, 42 blog posts, 9 comparison pages, and hundreds of individual calculator pages.
WordCounterTool.net — Free word counter, character counter, reading time calculator, and SEO writing tools available in 15 languages. It has 340 pages including language-specific word counters (Arabic, Chinese, French, German, Japanese, Korean, Spanish, etc.), 22 words-to-pages converters, speech duration calculators, platform character limit guides, and 141 blog posts across 15 languages.
Both sites are completely free to use, require no sign-up, and run entirely client-side — nothing is sent to a server.
Tech Stack
The stack is intentionally simple:
Next.js 14 (App Router) — for static site generation and SEO
Vercel — free hosting with automatic deployments from GitHub
No database — all calculator logic runs in the browser
No auth — no user accounts, no login, no backend
Tailwind CSS + inline styles — for dark-theme UI
Google AdSense — for monetization (pending approval)
I chose Next.js because of its excellent SEO capabilities. The App Router with generateStaticParams and generateMetadata makes it trivial to create hundreds of pages with unique metadata, canonical URLs, and structured data — all statically generated at build time.
The Programmatic SEO Strategy
The real power move is programmatic SEO — using data and templates to generate hundreds of unique pages automatically.
Finance Calculator Example
For the cost of living calculator, I created a data file with 50 state objects containing: cost of living index, housing index, food index, transport index, utilities index, healthcare index, median income, median rent, median home price, top cities, gas prices, grocery costs, electric bills, childcare costs, tax rates, and descriptive text.
Then I created a dynamic route at /cost-of-living-calculator/state/[state] with a single client component that renders a completely unique page for each state. Each page has:
Affordability grade (A+ to F) with visual badge
6 visual cost cards (rent, groceries, electric, gas, healthcare, childcare)
Color-coded index bars for 5 categories
Interactive monthly budget calculator with salary slider
State comparison dropdown tool
8 unique FAQs with schema markup
1,500+ words of unique content
Breadcrumb and SoftwareApplication structured data
One data file + one component = 50 unique, SEO-optimized pages. The same approach generated 50 city mortgage calculator pages, 15 language word counter pages, 22 words-to-pages converter pages, and 8 speech duration pages.
Blog Content at Scale
For the writing tools site, I built 90 blog posts across 15 languages using a Node.js build script. Each language gets 6 unique articles:
How to Count Words in [Language]
[Language] Writing Tips
[Language] Character Count Guide
[Language] SEO Content Strategy
Common [Language] Writing Mistakes
[Language] Content Length Guide
The script generates each blog post as a separate Next.js page with unique content, SEO metadata, FAQ schema, article structured data, and internal links to the relevant language tool. Each post is 1,500+ words with language-specific data about speakers, countries, writing systems, word counting challenges, and SEO tips.
Architecture Decisions
Why Static Generation?
Every page is statically generated at build time. This means:
Sub-second load times — pages are pre-rendered HTML served from a CDN
Zero server costs — Vercel's free tier handles everything
Perfect Lighthouse scores — no JavaScript needed for initial render
SEO-friendly — search engines get complete HTML, not a JavaScript shell
The trade-off is build time. With 1,441 pages, the finance site takes about 8-10 minutes to build on Vercel's free tier. The writing tools site with 340 pages builds in about 3-4 minutes.
Client-Side Calculations
All calculator logic runs in the browser using React state and useMemo. When a user moves a slider, the results update instantly without any API call. This is important for two reasons:
Privacy — users trust financial calculators more when their data never leaves their device
Performance — no network latency means truly instant results
Component Architecture
Both sites share a similar component pattern:
Header.js — mega menu navigation (desktop) + hamburger drawer (mobile)
Footer.js — 8-column footer with category links
AdUnit.js — Google AdSense ad placements
FaqSchema.js — generates FAQ structured data for rich results
[Calculator]Client.js — each calculator is a client component with its own state
The server components (page.js) handle metadata and static params. The client components handle interactivity. This separation keeps the initial page load fast while enabling rich interactivity.
Structured Data
Every page has structured data for Google rich results:
FAQPage schema — 3-8 unique FAQs per page, targeting "People Also Ask" boxes
SoftwareApplication schema — marks each calculator as a free web application with aggregate ratings
BreadcrumbList schema — proper navigation breadcrumbs
Article schema — for blog posts with author, publisher, and dates
This structured data has already started appearing in Search Console's enhancement reports.
Internal Linking
I built an InternalLinks component that automatically detects the current page's category from its URL and displays related calculators, blog guides, comparisons, and cost of living state links. This component is injected on every page via the Footer, creating a dense internal link web that helps search engines understand the site structure and passes authority between related pages.
The Numbers
Here's where both sites stand after launch:
Metric FreeFinCalc WordCounterTool
Total Pages 1,441 340
Calculators/Tools 470+ 15+
Blog Posts 42 141
Languages 1 (40+ currencies) 16
Build Time ~10 min ~4 min
Lighthouse Performance 95+ 97+
Monthly Cost $0 $0
Lessons Learned

  1. Volume Matters, But Quality Matters More Having 1,781 pages sounds impressive, but Google doesn't rank pages just because they exist. Each page needs genuine value — unique content, useful tools, and proper SEO. Template pages with thin content get filtered out.
  2. Structured Data Is Underrated Adding FAQ schema to every page was one of the best decisions. Google shows FAQ rich results in search, which dramatically increases click-through rates. It takes 10 minutes to add per page and the ROI is enormous.
  3. Next.js App Router Is Perfect for Programmatic SEO The combination of generateStaticParams, generateMetadata, and server/client component separation makes Next.js the ideal framework for programmatic SEO sites. You can generate hundreds of pages with unique metadata in a single dynamic route.
  4. Vercel's Free Tier Is Incredibly Generous Both sites run on Vercel's free Hobby plan. Zero cost for hosting, CDN, SSL, and automatic deployments. The only limitation is build time (which can be slow with 1,400+ pages), but it works fine.
  5. Backlinks Are the Bottleneck Content and technical SEO are the easy parts. The hard part is getting other sites to link to you. Without backlinks, even perfect content won't rank for competitive terms. This is my current focus area. What's Next The immediate roadmap includes: Backlink building — directory submissions, guest posts, community engagement More blog content — 10 high-CPC finance blog posts targeting $5-15 keywords AdSense optimization — testing ad placements once approved User feedback — improving calculators based on actual usage patterns Try Them Out Both sites are live and free to use: FreeFinCalc.net

    Free Financial Calculators 2026 - Mortgage, Tax, Retirement, Debt | FreeFinCalc

    470+ free calculators for mortgage, tax, retirement, investing, debt, and budgeting. Instant results in 40+ currencies.

    favicon freefincalc.net
    — 470+ free financial calculators WordCounterTool.net

    Free Word Counter & SEO Writing Tools | WordCounterTool.net

    Free professional word counter and SEO writing tools. Word counter, keyword density checker, meta tag generator, readability checker and more. Instant results, no sign up.

    favicon wordcountertool.net
    — Word counter and writing tools in 15 languages The code architecture is straightforward Next.js — nothing exotic. The real work is in the data (researching accurate financial formulas, compiling state-level cost data) and the content (writing 1,500+ word guides that are genuinely useful). If you're thinking about building a programmatic SEO site, Next.js + Vercel is the stack I'd recommend. Start with a data file, build one template, and scale from there. --- Have questions about the architecture or approach? Drop a comment below — happy to go deeper on any of this. --- Tags: #nextjs #webdev #seo #javascript #react #vercel #programming #beginners

Top comments (0)