Passa al contenuto principale

Introduzione a Efesto

Efesto è un framework con routing basato sul filesystem per costruire API HTTP documentate e type-safe. Crei un file, Efesto trasforma la sua posizione in una rotta e i tuoi schemi diventano sia validazione sia documentazione OpenAPI. Funziona su due stack:

  • Express (efesto) — lo stack originale. Classi di servizio con metodi _get/_post, OpenAPI scritto in file .yaml generati, validazione tramite express-validator e un sistema di generazione dei tipi TypeScript in grado di modificare i file di servizio in-place.
  • Bun / Elysia (efesto/elysia) — un entrypoint separato. Le rotte sono idiomatiche, native di Elysia (o l'opzionale classe BaseApiService di Efesto); validazione e OpenAPI provengono nativamente da TypeBox.

Entrambi gli stack condividono un'unica idea: il percorso del file è la rotta. routes/user/index.ts serve /user, routes/user/[id].ts serve /user/:id.

Scegli il tuo stack

Express (efesto)Bun/Elysia (efesto/elysia)
RuntimeNode.js + ExpressBun + Elysia
File di rottaclass extends BaseApiServiceistanza Elysia nativa oppure class extends ApiService
Handler_get(req, res, next)(ctx) => value
Validazioneexpress-validator (_<m>Validation)schema TypeBox (body/query/params)
OpenAPI.yaml generato + Magic Types@elysiajs/openapi nativo da TypeBox
Tipi.d.ts generato (+ modifica in-place)inferiti nativamente da TypeScript
Statostabilebeta

Se hai già un'app Node/Express, usa lo stack Express. Se parti da Bun, usa lo stack Elysia. I concetti (routing da filesystem, permessi ABAC) valgono per entrambi; l'implementazione differisce e ogni guida mostra entrambi tramite tab.

Cosa ti offre Efesto

  • Routing da filesystem — cartelle e file [param] mappano percorsi e parametri di rotta.
  • OpenAPI guidato dagli schemi — documenta un endpoint dove lo scrivi; Efesto emette il documento OpenAPI.
  • Magic Types (Express) — scrivi string::email! invece di un verboso oggetto schema. Vedi Magic Types.
  • Generazione dei tipi (Express) — mantieni i tipi TypeScript sincronizzati con i tuoi schemi, riscrivendo opzionalmente per te le firme dei metodi. Vedi Generazione dei tipi.
  • ABAC — dichiara permission: [action, model] su un endpoint; Efesto lo verifica rispetto a un'ability CASL che fornisci tu. Vedi Permessi ABAC.
  • Hook, non lock-in — autenticazione, gestione degli errori, caching e upload di file sono integrazioni leggere attorno a strumenti standard (express-validator, Multer, Redis), non sottosistemi su misura.

Cosa Efesto non è

Efesto collega gli hook; non implementa strategie di autenticazione, storage su cloud, rate limiting o un framework di caching. Quelli vivono nel tuo codice, usando le librerie che scegli tu. Ogni guida è esplicita su dove finisce il framework e inizia il tuo codice.

Comincia da Installazione.