EduFin · Trading Education

Celindra — building a live options trading education platform

Celindra runs live options trading courses with Cristian Sima — 2-day intensive in Bucharest plus 3-day retreats in Covasna. Around them: an active Discord community with materials, live Q&A, and 1:1 consultancy. The model worked. The tech behind it didn't. Each new student meant 2-3 hours of admin work for a single course.

IndustryEduFin / Trading
Duration3 months
StatusLive · ongoing iterations
Team2 developers
CountryRomania

Business context

The traditional admin process was completely manual: Cristian received intent emails, replied with IBAN, waited for bank confirmation (sometimes 2-3 days), manually sent Discord invites, manually added to spreadsheet. For a single course with 30 people, that meant ~30 admin hours that ate into prep time for materials.

The required solution: site with interactive menu, direct online ordering, integration with own courier (or Sameday for unreached zones), online payments, SMS notifications for order status, kitchen dashboard with auto-print. Plus integration with the existing POS system.

Tech stack & key decisions

Stack chosen for maintainability

The restaurant had no technical team. We picked Next.js + Supabase — a stack a junior dev could pick up immediately if they hire one in 2 years. Stripe Checkout for payments. Discord automation via webhook + dedicated bot.

Discord integration via webhook + bot

When someone pays a course, Stripe webhook → backend creates DB record → backend generates single-use Discord invite (24h expiry) → Resend sends email with credentials in <30 seconds → Discord bot moves user to right channels.

Cost-conscious infrastructure

Hetzner CPX31 + Cloudflare = €35/month total. Same app on AWS would have run €300-€500/month.

Next.js 14 TypeScript PostgreSQL Prisma ORM Stripe Checkout Discord API Resend Hetzner VPS Cloudflare

Measured outcomes

−95%Admin time per registration (3h → 5min)
+40%Concurrent registration capacity
€35Monthly infrastructure cost (vs €400 on AWS)
99.6%Uptime in first 6 months
100%Code ownership at client (private GitHub)
0Lost payments after webhook fix

Key takeaways

  1. Idempotency is mandatory for any payment integration. Failed webhooks will exist — the question is whether you respond or lose money.
  2. Discord rate limits aren't well documented. Plan with buffer — queue with delay is safer than naive retry.
  3. Hetzner + Cloudflare delivers 90% of AWS at 10% of the cost for stable, EU-bound workloads under 100k MAU.
  4. Stripe Checkout pre-built > custom checkout for projects under 10,000 transactions/month.
  5. Code ownership from first commit is the only way to win client trust. It's not marketing — it's business hygiene.

«In the first 6 months we increased monthly courses from 1 to 3 without adding a single second of manual admin. Faintech delivered exactly what we asked, on time, with code that looks clean when I open GitHub.» — Cristian Sima, founder Celindra

Have a similar project?

Written discovery in 48h with detailed technical specification.

Discuss your project