~/Oriol Martí
es

Festam

A live map of local festivals: events on a map with a time slider, and your location shared with friends. Councils buy a licence and their local groups manage the events.

Visit festam.cat ↗

Festam
Type
Web app and B2B SaaS for councils
Backend
NestJS on Lambda + HTTP API
Data
MongoDB, DynamoDB and S3
Infrastructure
AWS CDK
Languages
Catalan, Spanish and English

Design decisions

Public reads never touch the database

The API writes a JSON read model to S3, split into 0.5° geographic cells. CloudFront serves it and it is invalidated on every change, so neither Lambda nor MongoDB sees anonymous traffic.

Each kind of data in the right store

MongoDB with 2dsphere indexes for festivals and events; single-table DynamoDB for each user’s data and shared locations, pushed to friends over WebSocket.

Layers enforced by the linter

Controller → Facade → services → repositories, with cross-layer dependencies checked by lint so the architecture doesn’t erode.

AI to import the festival programme

Bedrock turns the programme (PDF or image) into structured events that are reviewed in the dashboard before publishing.

Architecture

App PWAPanel ReactWeb AstroCloudFrontAPI · NestJS λS3 JSONMongoDBDynamoDBRebuild λBedrock
Tap a piece to see what it does.

Go deeper