DearYou
Personalized pages for couples. Over 100k surprises delivered.

[ The project ]
The product with the most production mileage of the four. Love and friendship pages with photos, music and a counter, sold as a one-off purchase. This is where operations actually bite: two swappable Pix gateways, attribution across three ad platforms, lifecycle emails on cron and an in-house blog for organic traffic.
[ stack ]
- Next.js 16
- React 19
- TypeScript
- Supabase
- AbacatePay
- Woovi
- Meta CAPI
- TikTok Events
- Kwai
- Spotify API
- Sentry
- Vercel
[ Technical decisions ]
- 01
Two Pix providers behind one interface: if AbacatePay goes down, an environment variable and a redeploy move Pix to Woovi without touching code. Pix is roughly 95% of sales, so it's the dependency that can't have a single point of failure. Card stays fixed on AbacatePay.
- 02
Reconciliation queries both providers, since the same page could have been paid through either, deduplicating when they coincide. It runs both in the payment screen's polling and in a cron that sweeps pending orders.
- 03
Server-side attribution across three platforms — Meta, TikTok and Kwai — on top of a custom UTM layer that captures, sanitizes and persists the source, plus funnel tracking between visit, signup and purchase.
- 04
Lifecycle email on cron: pending payment, remarketing for people who dropped mid-flow, and the page's anniversary email that brings the couple back a year later.
- 05
Plans have a single source of truth: webhook, checkout, activation and admin all import from the same file. A new price, coupon or plan lands in one place, never duplicated across routes.
- 06
Two page types on one engine (romance and friendship), with QR codes, a guestbook, a shareable story card, discount coupons and Spotify music search with caching.
- 07
Sentry instrumented on client, server and edge, plus rate limiting and email validation — whatever breaks in production has to reach me before the customer complains.