OBBA Bulldogge Registry
2026-05Olde Bulldogge Breed Association, the Olde English Bulldogge registry rebuilt from a SiteGround WordPress site to a Next.js 16 + Postgres knowledgebase on Hetzner. 16,890 dog records imported from the PedX archive with 13,244 sire/dam pedigree links auto-resolved, atomic OB10200-26 reg-number allocation, dashboard, admin, Stripe checkout, Resend transactional email, and 30+ legacy WordPress URLs auto-301'd. The content layer has grown to 60+ silo pages covering breed encyclopedia (10), health & care (15), buying & owning funnel (12), breeding reference (10), comparison pages (8), and a complete registration silo with naming policy. Schema layer is deep: Organization, Person, WebSite, Animal on every breed-relevant page, MedicalCondition on 5 condition pages, HowTo on 7 process pages, Service + Offer on the registration hub, and dedicated AI-discoverability assets at /llms.txt and /llm-info. Privacy-correct breeder directory hides 1,938 PedX-import contact records that lack proper kennel names. Wave 2 added PDF registration certificates and 5-generation photo pedigrees rendered via @react-pdf/renderer, multi-photo galleries per dog (max 10, sortable), Kennel Pro perks (logo ticker, verified badge, clickable website link), stud listings with fee + terms, Featured Dog product ($24 homepage / $9 breed-index), promo codes, and a dual-registration intake flow with cert + pedigree upload + admin review queue at /admin/registrations. Stripe rotated to OBBA's own account in May 2026 (receipts now say OBBA, not ABRA) with auto-provisioning on Kennel Pro and Featured Dog purchases. Launch campaign on 2026-05-24 activated 1,131 historical breeders via one-shot magic-link tokens at /claim/[token] (auto-creates User, auto-links matching Kennel by name, sets session cookie, drops the breeder into their dashboard). Bento broadcast sent at 100/hr drip rate with personalized claim URLs, plus a Day 7 nudge and Day 14 final reminder both filtered to skip anyone who's claimed. Real-time monitoring at /admin/claims. May 28 mega-session shipped the full puppy-handoff workflow as a three-phase build that closes the loop between breeders and the buyers their dogs go home with. Phase A added schema columns (assigned_at, followup_count, last_followup_at, dormant_at, DogStatus dormant, User marketing_optin), the /assign-puppy/[id] breeder form, server-side prefix lock on the registered_name input (locked kennel-prefix span plus editable suffix, mirrors the ABRA naming policy), a read-only-after-handoff banner with a reassign link, a pinned 'Needs buyer' badge that pushes pending puppies to the top of the breeder dashboard, and a breeding-rights state machine where only the breeder of record can grant rights (permanent) and only an admin can revoke. Phase B ships a daily /api/cron/puppy-followup endpoint protected by Bearer auth (CRON_SECRET), 10 personalized nurture emails plus a dormancy notice via Resend, and a Hetzner /etc/cron.d entry firing at 14:05 UTC. Each email leads with a different benefit (photo, certificate, microchip, story, titles, pedigree, dormant heads-up, final notice) and reuses the puppy_handoff ClaimToken so one click logs the buyer in. Phase C ships /reactivate-dog and a $20 Stripe checkout that clears dormant_at, resets the cadence to zero, flips status back to pending, and emails the buyer welcome-back, the breeder a heads-up, and admin a notification. Same session quietly fixed a Traefik-related bug where every form submit on the entire site was returning Location: https://0.0.0.0:3000/... because new URL(path, req.url) was resolving to the container's internal bind address; the originUrl(req) helper now respects X-Forwarded-Host across 17 route handlers (login, register-dog, photo upload, account, checkout, contact, reset-password, admin actions). Plus photo reorder buttons on every gallery, a four-surface died_date treatment (edit-dog Mark-as-deceased collapsible, dashboard split into active + In memoriam sections, In memoriam line on the public dog page, automatic stud-availability clear), and a fix for the /admin Server Component event-handler 500 that had been live since the initial scaffold.
Next.js 16PrismaPostgreSQLDockerTraefikHetznerStripeResendBento@react-pdf/rendererHetzner /etc/cron.d
Knowledgebase moat the WordPress site never had: 16,890 indexable dog profiles, 60+ schema-rich silo pages, AI-discoverability surface for ChatGPT/Claude/Perplexity, and persona-coverage funnel for active breeders, prospective puppy buyers, cross-registry breeders, and casual owners. Activation campaign on 2026-05-24 reached 1,131 historical breeders with personalized one-click magic links into their own dashboards. May 28 puppy-handoff trilogy turns each litter registration into a long-running nurture loop: breeder assigns puppy via /assign-puppy/[id], buyer receives a magic-link claim email, then a 10-step Resend cadence every 3 days nudges any buyer who hasn't claimed, and a $20 Stripe reactivation reopens any record that goes dormant after step 10. Same-day fix to the systemic redirect bug rescued login, register-dog, photo upload, checkout, contact, and every admin action from silently failing with ERR_ADDRESS_INVALID for every end user on the site.
Visit →