Atlas-Flora — Plant Atlas with Species Cards and Gardening Guides

Atlas-Flora is a plant atlas — a reference portal with species cards, gardening guides and a disease encyclopedia, engineered from the ground up for search engines (Google, Bing) and generative search (ChatGPT Search, Perplexity, Gemini), in three languages.

Atlas-Flora homepage with a grid of plant categories
Homepage: search and category grid — navigation across two taxonomy axes.

The challenge

Build a service that scales to thousands of species cards while maintaining editorial quality and a full set of structured data on every single one — in three languages, with user accounts and cross-device sync, at near-zero infrastructure cost.

Tech stack

The core is Astro with Content Collections and Zod schema validation — species data lives as files in the repository and is checked on every build. The whole thing runs on Cloudflare Pages in hybrid mode: 700+ content pages are served statically from the edge, and server code handles only the accounts API. User data lives in Cloudflare D1 (SQLite) in the EU region. Search (Pagefind) builds its index from the finished HTML — no search server required.

What sets it apart

  • Data in the repository instead of a database — a Zod schema breaks the build on a typo in a species name or a broken reference, and every editorial fix goes through review like a pull request.
  • Three languages without content triplication — the canonical Polish card is the single source of data, and translations are overlays that override only the prose, field by field. URL segments are translated too (/roslina/, /de/pflanze/, /en/plant/), tied together with full hreflang.
  • Accounts without an auth library — custom OAuth (Authorization Code + PKCE) and JWT: access token kept only in browser tab memory, a rotating refresh token in an HttpOnly cookie, stored in the database only as a hash.
  • Complete SEO and GEO — Schema.org (Article, Dataset, FAQPage, HowTo, BreadcrumbList), sitemap, hreflang, and llms.txt in three languages for citability by language models.
AI-generated photo of a Swiss cheese plant (Monstera deliciosa)
AI-generated species photo — Monstera deliciosa, prompt built from the specific plant's traits.
Species card on Atlas-Flora with botanical data
Detailed species card with growing requirements, companion plants, and structured data.

Result

169 species cards, 70 botanical families and 12 guides — every element in three languages, 711 static pages and 324 original photos in total. Lighthouse: SEO 100/100. Infrastructure cost stays within Cloudflare's free tier — even after adding accounts and a database.

See it live: atlas-flora.com

Tech stack: Astro · TypeScript · Zod · Cloudflare Pages · Cloudflare D1 · Pagefind · generative AI.

Planning something similar?

I'm happy to help design and build a service that scales for SEO and content.

Get in touch