Vai al contenuto principale
ProdottiIn produzione

Sealect

Il gestionale per scuole, centri e noleggi di sport acquatici, con il marketplace dove i clienti li trovano e prenotano.

Sealect tiene in un posto solo prenotazioni, calendario, staff, pagamenti e noleggi di una scuola di surf, vela, kitesurf o sub. Dall'altra parte c'è il marketplace dove le persone trovano un'attività e la prenotano, anche da un widget dentro il sito della scuola.

Calendario settimanale delle uscite nel gestionale Sealect
Il mio ruolo
Fondatore e unico sviluppatore: prodotto, front end, back end e infrastruttura.
Per chi è
Scuole, centri, circoli e noleggi di sport acquatici. E chi vuole prenotare un'uscita in mare senza telefonare.

Il problema

Una scuola di sport acquatici lavora con il meteo, con posti limitati per ogni uscita, istruttori, attrezzatura a noleggio e clienti che prenotano al telefono, di persona o online. Spesso tutto questo vive tra fogli di calcolo, chat e un sistema di pagamento a parte, e ogni cambio di programma va rifatto a mano.

Come l'ho costruito

Ho scritto Sealect da solo: il back end, il gestionale, il marketplace, il sito e l'infrastruttura.

È un monorepo con un'API REST in Node.js e MongoDB, un worker per code, email e pagamenti, tre front end in Next.js e una pagina di stato scritta in Go. Quello che vale per più app, come i contratti tra i servizi, i permessi e i fusi orari, sta in pacchetti condivisi con una regola: le dipendenze vanno in una direzione sola, e un test lo verifica.

Il percorso dei soldi è quello più protetto. Pagamenti con Stripe, eventi elaborati in coda, conferme e rimborsi calcolati in automatico secondo le regole della singola offerta. Ogni notte un test end to end fa una prenotazione completa contro l'ambiente di staging, dal pagamento alla conferma, con Stripe in modalità test.

Il lavoro ricorrente, come promemoria, chiusure e sincronizzazioni, gira su code con un controllo di salute che verifica che ogni job atteso sia davvero registrato. Sealect è anche il primo software collegato a Goable, l'altro mio prodotto, per le condizioni meteo-marine degli slot.

Scelte tecniche

  • Contratti tra i servizi

    API e worker si parlano attraverso schemi condivisi, e la specifica OpenAPI è generata dagli stessi schemi che validano le richieste. Documentazione e codice non si separano.

  • Il percorso dei soldi, testato ogni notte

    Un test end to end attraversa API, pagamento e worker contro staging, con Stripe in modalità test: è lo spazio che i test unitari non vedono.

  • Job che si controllano da soli

    I lavori ricorrenti girano su code Redis. Un controllo di salute confronta quelli attesi con quelli registrati, così un job che smette di girare non passa inosservato.

  • Backup e ripristino

    Ogni notte il database viene esportato su uno storage separato, con 30 giorni di conservazione in produzione, e un monitor segnala la notte che manca. Il ripristino è scritto in un runbook.

  • Monitoraggio a due livelli

    Una pagina di stato in Go controlla API, pagamenti e worker ogni minuto e avvisa quando qualcosa si rompe. Ai titolari arriva solo quello che li tocca, il resto lo vedo io. Sentry raccoglie gli errori di tutte le app.

  • Infrastruttura come codice

    Account cloud, DNS, variabili dei servizi e configurazione della CI descritti in Terraform, con il piano controllato in CI a ogni pull request.

In numeri

Contati sul codice sorgente del prodotto.

  • 7app: API, worker, gestionale, marketplace, sito, pagina di stato e backup
  • 13pacchetti condivisi
  • 2.903file di test su app e pacchetti
  • 28job ricorrenti sulle code
  • 6controlli della pagina di stato su API, pagamenti e worker
  • 3lingue: italiano, inglese e spagnolo
  • 2scenari end to end eseguiti ogni notte contro staging
  • 30giorni di backup notturni conservati in produzione

Stack

  • TypeScript
  • Node.js
  • Express
  • MongoDB
  • Redis
  • BullMQ
  • Zod
  • OpenAPI
  • Next.js
  • React
  • Tailwind CSS
  • TanStack Query
  • next-intl
  • Stripe
  • Resend
  • Go
  • Railway
  • Vercel
  • AWS S3
  • Terraform
  • Sentry
  • GitHub Actions
  • Vitest
  • Playwright
  • Turborepo
  • Board del mattino di Sealect: uscite di oggi, istruttori e attrezzatura
  • Banco noleggi di Sealect: noleggi aperti e attrezzatura da preparare

Prova Sealect

Ti serve qualcosa costruito così?

Le stesse scelte, dallo schema dell'API ai test e al monitoraggio, le porto nei progetti per agenzie e aziende. Raccontami cosa vuoi costruire.

Scrivimi
Chiedi all'AI