arrow_back Torna ai Progetti
vue

Ceremly — SaaS Platform for Event Invitation & RSVP Management

Ceremly è una piattaforma SaaS che centralizza la gestione delle conferme di partecipazione per eventi privati nel mercato italiano — matrimoni, compleanni, lauree, battesimi. L'organizzatore carica gli invitati via CSV o li raccoglie tramite una landing page pubblica, gestisce le conferme in tempo reale da una dashboard dedicata, e sollecita chi non ha ancora risposto con un click tramite email o WhatsApp. Le landing page sono personalizzabili attraverso un editor drag & drop ispirato a Shopify Themes, con generazione automatica via AI.

Periodo

2026

Link

deployed_code

Ceremly — SaaS Platform for Event Invitation & RSVP Management

Il Progetto

Introduzione

Ceremly nasce da un'osservazione semplice ma concreta: in Italia, chi organizza un evento privato — un matrimonio, un compleanno importante, una laurea — gestisce ancora le conferme di partecipazione nel modo più caotico possibile. Telefonate sparse, messaggi WhatsApp individuali, fogli Excel aggiornati a mano. Non c'è visibilità su chi ha risposto e chi no, e sollecitare le persone che non si fanno viva è al tempo stesso tedioso e socialmente scomodo.

Ho progettato e sviluppato Ceremly per risolvere questo problema end-to-end: una piattaforma SaaS che centralizza l'intero flusso, dalla raccolta delle iscrizioni alla gestione delle conferme, fino ai solleciti automatizzati tramite email e WhatsApp.


Cosa fa il prodotto

L'organizzatore crea il proprio evento e può gestire i guest secondo due percorsi complementari: importando una lista di invitati via CSV (ognuno riceve un link RSVP personalizzato) oppure condividendo pubblicamente una landing page di registrazione sui social o nelle chat di gruppo. Entrambi i flussi convergono in un'unica dashboard dove tutti gli invitati sono visibili, filtrabili e gestibili.

Il cuore differenziante del prodotto è l'area solleciti: una sezione dedicata che mostra chi non ha ancora risposto e offre strumenti 1-click per inviare reminder via email o tramite deep link WhatsApp, con template personalizzabili e variabili dinamiche interpolate automaticamente (nome del guest, link RSVP, data evento, scadenza).

Le due landing page — quella di registrazione pubblica e quella RSVP personalizzata — sono completamente personalizzabili tramite un editor drag & drop ispirato ai Shopify Themes, con sezioni riordinabili, configuratore visuale per ogni sezione, anteprima live e generazione automatica tramite AI (Mastra con GPT-4o-mini).


Stack tecnico e architettura

Il progetto è costruito interamente su Nuxt 4 con Vue 3 (TypeScript strict, Composition API, <script setup>), con un'architettura backend a thin controller + service layer che mantiene le route API snelle e delega tutta la business logic a service dedicati. Il database è PostgreSQL gestito con Drizzle ORM type-safe, con UUID v7 e migrations versionabili.

L'autenticazione è gestita da Better Auth v1.4.5 con email/password, Google OAuth e 2FA, con sessioni cachate su Redis. I pagamenti sono integrati tramite Creem (Merchant of Record, plugin nativo Better Auth), con webhook auto-registrati e gestione completa del ciclo di abbonamento. I file vengono caricati su Cloudflare R2 con deduplicazione SHA-256, validazione magic bytes e rate limiting. Le email transazionali usano Resend con template React Email internazionalizzati.

L'editor landing è costruito su vuedraggable e un sistema di schema-driven configuration: le sezioni e i loro campi sono definiti in un unico file di schema (Zod) che guida sia la validazione che il rendering dinamico dei form di configurazione. L'integrazione AI con Mastra genera interi oggetti LandingPageData tramite structured output validato.

La sicurezza è trattata come requisito primario: CSP, HSTS, rate limiting granulare, spam protection con honeypot e timing validation, isolamento dati con RBAC (owner/editor/viewer), validazione Zod su ogni input e audit logging su tutte le operazioni di scrittura.

Stack Tecnologico

code vue
code NeonDB
code Creem
code drizzle ORM
code nuxt
code postgresql