Damba
Un framework Express pensé pour l'IA, piloté par les schémas. Vous déclarez vos entités TypeORM et une carte de services une seule fois ; Damba câble les routes REST, la validation, l'authentification, les docs, les files BullMQ et Socket.io autour d'elles. Ses conventions plates et greppables — sans magie DSL — rendent chaque service facile à lire, générer et relire pour les humains comme pour les agents de code IA.
Schémas / Entités → Services → Routes → DocsCe que vous obtenez
- Pensé pour l'IA — une forme prévisible
schéma → service → route → docset des conventions plates et greppables (sans magie DSL) que les LLM et agents de code savent générer et relire de façon fiable. - CRUD auto-généré à partir de n'importe quelle entité TypeORM, avec des hooks
before/afteroptionnels. - Comportements typés — fonctions factory avec un contexte de requête de première classe (
api.DSave,api.env,api.enqueue, …). - Politiques — étapes d'autorisation composables avec des formes d'erreur JSON stables.
- Temps réel — Socket.io encapsulé dans le même contexte tenant + corrélation que vos routes HTTP.
- Files d'attente — producteurs + écouteurs BullMQ partageant le contexte ALS de la requête, avec sharding par tenant.
- Erreurs — hiérarchie centrale
DambaErrorproduisant des réponses JSON standardisées. - Docs — pages API + Extras générées automatiquement.
Un aperçu en 30 secondes
ts
import { createDambaService, type BehaviorOf, type DambaApi } from "damba-v2";
import { z } from "zod";
import { User } from "./entities/User";
const CreateUserBody = z.object({
name: z.string().min(1),
email: z.string().email(),
});
const createUser: BehaviorOf = (api?: DambaApi) => async (e) => {
const body = e.in.body; // validé + parsé par le schéma Zod
const saved = await api!.DSave(body);
return e.out.status(201).json(saved);
};
export default createDambaService({
service: { name: "user", entity: User },
behaviors: {
"/users": {
method: "POST",
behavior: createUser,
config: { validators: { body: CreateUserBody } },
},
},
});C'est tout le pattern. La clé de route est le chemin ("/users") et le verbe est porté par le champ method, les behaviors sont des factories typées, et api expose un repository typé, des helpers d'environnement, des producteurs de files d'attente, et plus encore.
Pour aller plus loin
- Installation — installer Damba dans un projet existant.
- Démarrage rapide — de
npm installà un endpoint en live en cinq minutes. - Services — le cœur du framework.
- Modèle starter —
git cloneet c'est parti.
Liens du projet
- npm :
damba-v2 - Source : github.com/bmarcella/Damba
- Starter : github.com/bmarcella/damba-starter
- Issues : github.com/bmarcella/Damba/issues