FireFeed Docs

Stack tecnico

Le componenti runtime di FireFeed e come comunicano.

┌──────────────────┐        HTTPS         ┌──────────────────┐
│  Browser utente  │ ───────────────────► │  exp.fire-feed   │ (web container)
└──────────────────┘                      │   Next.js 15     │
        ▲                                 │   App Router     │
        │  SSE pipeline events            │   API routes     │
        └─────────────────────────────────┤   NextAuth v5    │
                                          └────────┬─────────┘

                              ┌────────────────────┼──────────────────────┐
                              │                    │                      │
                              ▼                    ▼                      ▼
                       ┌────────────┐       ┌────────────┐         ┌────────────┐
                       │  Postgres  │       │   Redis    │         │  Keycloak  │
                       │ (managed)  │       │ (pubsub +  │         │   26 SSO   │
                       │ schemas    │       │  BullMQ)   │         │ (remoto)   │
                       │ per tenant │       └─────▲──────┘         └────────────┘
                       └────────────┘             │
                                                  │ jobs
                                          ┌───────┴────────┐
                                          │ worker Fastify │
                                          │ BullMQ workers │
                                          │ pipeline jobs  │
                                          └────────────────┘

Componenti

ComponenteTecnologiaRuolo
webNext.js 15 (App Router, React 19, Tailwind 4)Feed Manager UI + API REST
omsNext.js 15 (App Router, React 19, Tailwind 4)OMS UI + API operative tenant-scoped
workerFastify 5 + BullMQ + Node 20Esecuzione async dei job pipeline
sharedTypeScript libraryConnettori, regole, Prisma client, schemi OpenAPI
authNextAuth v5 wrapperAdapter Keycloak
mailResend SDK + react-emailMail transazionali
docsNext.js 16 + FumadocsQuesto sito
PostgresPostgres 16Persistenza, multi-schema per company
RedisRedis 7 (managed)BullMQ + pubsub SSE
KeycloakKeycloak 26 (remoto)SSO multi-client

Monorepo

Gestito con pnpm workspaces + Turborepo:

packages/
├── auth/       # NextAuth + Keycloak adapter
├── docs/       # Fumadocs site (questo)
├── mail/       # Resend templates + client
├── oms/        # Next.js OMS: ordini, stock, spedizioni e resi
├── shared/     # Connettori, regole, Prisma, schemi OpenAPI
├── *-sdk/      # SDK TypeScript indipendenti per marketplace e carrier
├── web/        # Next.js app (UI + API)
└── worker/     # Fastify + BullMQ

tools/
└── openapi-gen/ # CLI per generare openapi.json da Zod

Database

Una sola istanza Postgres. Tabelle control plane in public, dati prodotto in company_<companyId> e dominio operativo in oms_<companyId> per ciascuna company. Vedi Multi-tenant.

Prisma 7 come ORM per il control plane; per i dati prodotto (colonne dinamiche dai database_fields) si usa SQL diretto via pg driver, con identifier sanitization in SchemaService.

In questa pagina