Παράκαμψη στο περιεχόμενο
← Όλα τα Case Studies

Event Marketplace / SaaS

Plannzy

SaaS event marketplace με multi-tenant organizers + Mailgun + Turnstile

Από idea σε LIVE σε εβδομάδες, Coolify auto-deploy + edge security

2026-04-18
Live since
Multi
Tenant model
organizer ↔ user bridge
Turnstile
Bot protection
all public forms
Auto
Deploy
Coolify GitHub webhook
GlitchTip
Error tracking
self-hosted
6 εβδομάδες από idea σε LIVE2026

Challenge

Τι έπρεπε να λυθεί

Greenfield SaaS με ζητούμενο γρήγορο time-to-market χωρίς compromise σε security. Δύο τύποι users (organizers, attendees) με τελείως διαφορετικά UX, transactional emails σε κάθε booking step (confirmation, reminder, post-event survey), και πιθανότητα bot signup spam που θα γέμιζε τη βάση με junk events.

Solution

Τι χτίσαμε

Next.js + Supabase με auth από day 1, Mailgun integration για όλα τα transactional emails, Turnstile σε signup + booking forms, και Coolify auto-deploy ώστε iteration να είναι instant. Multi-tenant data model: organizer tenants ξεχωριστά από user accounts, ένας user μπορεί να είναι organizer σε ένα brand και attendee σε άλλο.

Custom Modules

Τι το κάνει διαφορετικό

01

Multi-tenant organizer model

Tables: organizers (tenant), organizer_members (user-tenant bridge με role), events, bookings. Ένας user account μπορεί να είναι owner σε ένα organizer + admin σε άλλο + απλώς attendee αλλού. Switching context χωρίς logout.

02

Mailgun transactional pipeline

Booking confirmation email, reminder 24h πριν, post-event survey link. Templates με Mailgun template engine, fallback σε raw HTML αν template fail. Webhook tracking για bounces + opens, αυτόματο suppression σε hard bounces.

03

Cloudflare Turnstile σε όλα τα public forms

Signup, booking, contact, event submission. Server-side token verification με 2nd-attempt fallback αν αποτύχει network. Invisible mode σε mobile για να μη χαλάει UX, managed mode σε desktop.

04

Coolify auto-deploy από GitHub

Push σε main → Coolify rebuild + zero-downtime swap. Health check στο `/api/health` που τσεκάρει DB connection + Mailgun status πριν θεωρηθεί healthy. Rollback με ένα click αν health fail.

05

Custom auth με magic link + password fallback

Default flow: email magic link, χωρίς password. Power users μπορούν να set password για session persistence στο mobile. Rate limiting per IP + per email ώστε bot signups να μη γεμίζουν inbox.

06

Per-organizer dashboard με metrics

Bookings count, revenue, attendee list με export CSV, refund flow. Organizer βλέπει μόνο δικά του events + bookings μέσω RLS policy `organizer_id = auth.organizer_id()`.

07

GlitchTip error tracking + uptime

Self-hosted GlitchTip στο errors.wideview.dev. Frontend + backend errors capture, source maps για readable stacks. Uptime monitor κάθε 5 λεπτά στο public homepage + organizer login.

Live από production

Πώς δείχνει στην πράξη

Screenshots από το ζωντανό site. Τιμές, ονόματα πελατών και ευαίσθητα στοιχεία είναι μασκαρισμένα με skeleton blur ώστε να φαίνεται μόνο το functionality.

Marketplace landing page mobile με filter bar για event, category, location

Mobile

Hero mobile με 3-filter search για event vendors

Marketplace landing page desktop με cinematic hero και unified search

Desktop

Hero desktop με luxury wedding aesthetic

Vendor list mobile με featured tags και ratings

Mobile

Explore mobile, listing cards με reviews + location

Vendor list desktop με sidebar filters (categories, locations, distance, budget, rating)

Desktop

Explore desktop με 5-axis filtering

Modal signup desktop με Full Name, Phone, Email, Password

Desktop

Signup modal με optional phone και T&C checkbox

Tech Stack

Με τι χτίστηκε

Next.jsSupabaseMailgunCloudflare TurnstileCoolifyGlitchTipTypeScript

Όλο το stack είναι τυποποιημένο. Δεν βασίζεται σε κρυφά παραμετροποιημένα plugins ή proprietary cloud services. Μπορεί να μεταφερθεί ή να συντηρηθεί από οποιαδήποτε ομάδα γνωρίζει το stack.

FAQ

Συχνές ερωτήσεις

Πόσο γρήγορα μπορεί να βγει σε production ένα SaaS marketplace;

Το Plannzy πήγε από idea σε LIVE σε 6 εβδομάδες. Στήθηκε Next.js + Supabase με auth από day 1, multi-tenant data model, Mailgun integration για όλα τα transactional emails, Cloudflare Turnstile σε όλα τα public forms, και Coolify auto-deploy ώστε iteration να γίνεται σε λεπτά. Το secret είναι χρήση proven stack αντί για custom-everything: Supabase για auth + DB + RLS, Mailgun για deliverability, Cloudflare για security edge.

Πώς αποφεύγεται bot signup spam σε νέο SaaS;

Στήσαμε Cloudflare Turnstile σε signup, booking, contact και event submission forms, με invisible mode σε mobile για να μη χαλάει UX και managed mode σε desktop. Server-side token verification έχει 2nd-attempt fallback αν αποτύχει network. Επίσης rate limiting per IP + per email στο magic link auth ώστε scripted signups να μη γεμίζουν τη βάση με junk events πριν καν ξεκινήσει το product.

Μπορεί ένας user να είναι organizer σε ένα brand και attendee σε άλλο ταυτόχρονα;

Ναι. Το data model είναι organizers (tenant) + organizer_members (user-tenant bridge με role) + events + bookings. Ένα user account μπορεί να είναι owner σε ένα organizer + admin σε άλλο + απλώς attendee αλλού. Switching context γίνεται χωρίς logout, και τα RLS policies (organizer_id = auth.organizer_id()) εξασφαλίζουν ότι ο organizer βλέπει μόνο δικά του events + bookings.

Στηρίζεται email magic link login ή χρειάζεται password;

Default flow είναι email magic link, χωρίς password. Power users μπορούν να set password για session persistence στο mobile (όπου το magic link είναι λιγότερο convenient). Έτσι αποφεύγεις την password fatigue που έχει frustrate τους περισσότερους signups, και οι heavy users έχουν την επιλογή να κρατήσουν session ζωντανή.

Πώς γίνεται deploy νέας version χωρίς downtime;

Push σε main branch → Coolify rebuild + zero-downtime swap. Health check στο /api/health που τσεκάρει DB connection + Mailgun status πριν θεωρηθεί healthy το νέο container. Αν health fail, το παλιό container παραμένει live και rollback γίνεται με ένα click. GlitchTip στο errors.wideview.dev πιάνει frontend + backend errors με source maps, και uptime monitor κάθε 5 λεπτά τσεκάρει public homepage + organizer login.

Παρόμοιο project σε εξέλιξη;

Αν χτίζεις κάτι παρόμοιο και ψάχνεις partner που να ξέρει το τεχνικό terrain, πες μας. 30λεπτη συζήτηση χωρίς δέσμευση.