Back to work

GrowKind World · Publishing and courses platform · 2026

Publishing an educational method as a paid digital product, in two languages.

Educational and publishing platform for neurodivergent childhood: digital book with paywall, module-based courses, shop and full i18n.

  • Product
  • Paid content
  • i18n
Client
GrowKind World
Status
In production, Stripe in live mode.
30
chapters in the reader with paywall
433+
PT/EN translation keys
GrowKind book reader

Book reader — chapter navigation with paywall from a defined point.

Context

An author and educator wanted to publish his method (RDF) and a 30-chapter book as a digital product, with separate courses for families and professionals, in Portuguese and English from day one.

The problem

Paid content has to be genuinely protected — course PDFs cannot sit on a public URL — while the reader has to be pleasant to use on a phone at night.

Real i18n means two complete editorial copies, not translated labels.

My role

Sole developer: architecture, reader, paywall, Stripe integration, protected content delivery, i18n and SEO.

Constraints

  • Paid content genuinely protected: no PDF reachable by public URL.
  • Two complete editorial copies, not translated labels.
  • A reader that is pleasant on a phone, at night, for tired parents.

Solution

Next.js with per-locale routes (next-intl, 433+ keys), book reader with chapter navigation and paywall, course modules served by a protected, locale-aware route, Stripe checkout and an admin whitelist.

What was built

  • BookReader with 30 chapters, reading view and ChapterNav.
  • Course files outside /public, served via /api/curso/[curso]/[modulo] after purchase verification.
  • RDF method page with an animated SVG diagram.
  • Native Next.js SEO: per-locale metadata, JSON-LD, sitemap and robots.
  • Shop with Printful (print on demand) and Stripe; email capture with Brevo.

Key decisions

Private content outside the bundle

Modules live in a private/ folder read only by the server. The URL never points at the file; it points at a route that checks session and purchase before responding.

Outcome

Platform in production, bilingual, with real sales through Stripe.

What I would change

Serving private files through an authenticated route was simple and robust; the expensive part was keeping the two editorial copies in sync — next time the content would live in a CMS with a translation workflow.

Stack

Next.js 15 · TypeScript · MongoDB · NextAuth · Stripe · next-intl · Cloudinary · Resend · Vercel

Next project

Ferri Schoedl Advocacia

A law firm that is also a publisher and a school.

Institutional site for a São Paulo law firm with a legal bookstore, preparatory courses and publications — Stripe payments and protected reading.

View case study
Ferri Schoedl homepage