Back to work

Ferri Schoedl Advocacia · Institutional site with shop and courses · 2026

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.

  • E-commerce
  • Paid content
  • Stripe
Client
Ferri Schoedl Advocacia, São Paulo
Status
In production; real shipping calculation in progress.
Ferri Schoedl homepage

Homepage — practice areas, publications and shop.

Context

A firm with six practice areas and a partner who has authored 10 books and 23 articles wanted a site that was simultaneously business card, publisher and school: selling print and digital books and courses with per-lesson materials.

The problem

Someone buying a legal book doesn't want to create an account before paying, but after paying they need one to read. The flow had to convert guest into user without friction.

Purchased PDFs and ePubs must sit behind authentication and be tied to the purchase.

My role

Sole developer, including DNS, domain and transactional email setup on a subdomain isolated from the client's legacy hosting.

Constraints

  • Buy without an account; read after buying with one. The flow had to convert without friction.
  • Transactional email on a subdomain isolated from the client's legacy hosting.

Solution

Next.js with live Stripe checkout, Purchase model, book reader, protected download routes, OTP checkout gate (verify email → sign in or register), guest-to-user conversion with post-purchase password setup, and an admin panel for books, courses, articles, site content and orders.

What was built

  • Six practice areas with their own pages; publications page with 10 books and 23 articles.
  • Courses with PDF materials per lesson.
  • Light/dark theme, LGPD compliance.
  • Resend on a dedicated subdomain (send.) with DKIM, without touching corporate email on cPanel.

Key decisions

OTP before payment, password after

Email is verified by code before checkout. If an account exists, sign in; if not, the purchase creates it and the password is set afterwards. Nobody abandons the cart because of a sign-up form.

Outcome

Site and shop in production with Stripe sales; panel operated by the firm's team.

Stack

Next.js 15 · TypeScript · MongoDB · NextAuth · Stripe · Resend · Cloudinary · Tailwind CSS v4 · Vercel

Next project

Centro Dentário Colombo — website

Bilingual digital presence with patient portal — where CDC Manager started.

Bilingual institutional website for a Lisbon dental clinic, with patient portal and admin panel. The project that led to CDC Manager.

View case study
Centro Dentário Colombo website