---
title: "Documentation Nodefony"
source: docs/index.md
url: https://nodefony.github.io/nodefony-core/docs/
---


> Nodefony est un framework Node.js **fullstack** en TypeScript : un serveur HTTP/HTTP2 et un serveur
> WebSocket qui partagent le **même contexte de contrôleur**, une injection de dépendances, un noyau
> de modules et une couche de sécurité complète. Tout est rangé ci-dessous par type — chaque card
> mène au hub qui détaille sa brique.

```nodefony-cards
[
  { "icon": "🧭", "title": "Par où commencer", "href": "demarrer/", "featured": true,
    "desc": "Cinq parcours ordonnés selon qui tu es : directeur technique, exploitation, développeur front, développeur back, architecte. Chaque étape dit pourquoi elle vient là.",
    "meta": "commence ici si tu débutes" },
  { "icon": "🎓", "title": "Tutoriel : ta première application", "href": "tutoriels/premiere-application/", "featured": true,
    "desc": "De zéro à une app qui répond en HTTP, en WebSocket, et persiste des données — pas à pas.",
    "meta": "le premier geste, guidé" }
]
```

## 🏛️ Fondations

Comment l'ensemble tient. Ces pages ne relèvent d'aucun module en particulier.

```nodefony-cards
[
  { "icon": "🗺️", "title": "Vue d'ensemble", "href": "architecture/vue-ensemble/",
    "desc": "La carte du territoire : ce qu'est Nodefony, ce qu'il n'est pas, ses partis pris et leur coût." },
  { "icon": "🔄", "title": "Cycle de boot du Kernel", "href": "architecture/cycle-boot-kernel/",
    "desc": "L'ordre d'allumage, les hooks où brancher son code, l'arrêt propre." },
  { "icon": "💉", "title": "Injection & portées", "href": "architecture/injection-portees/",
    "desc": "Le conteneur de services : déclarer, injecter, choisir une portée." },
  { "icon": "⚙️", "title": "Configuration", "href": "architecture/configuration/",
    "desc": "`defineConfig`, `use()`, l'environnement — et la validation au boot." },
  { "icon": "🔀", "title": "Pipeline de requête", "href": "architecture/pipeline-requete/",
    "desc": "Le trajet d'une requête, de l'octet reçu à l'octet renvoyé. HTTP et WebSocket." }
]
```

## 🧱 Le cœur

Le socle : présent dans toute application, quelle que soit sa forme.

```nodefony-cards
[
  { "icon": "🧩", "title": "nodefony", "href": "modules/core/",
    "desc": "Service, Container, Kernel, Event, Syslog.", "meta": "toujours présent" },
  { "icon": "🔌", "title": "@nodefony/http", "href": "modules/http/",
    "desc": "Serveurs HTTP/HTTP2/WebSocket, contextes de requête, sessions, TLS.", "meta": "le transport" },
  { "icon": "🧭", "title": "@nodefony/framework", "href": "modules/framework/",
    "desc": "Routeur, contrôleurs, décorateurs, idempotence.", "meta": "tu écris des routes" }
]
```

## 🔐 Sécurité & identité

```nodefony-cards
[
  { "icon": "🛡️", "title": "@nodefony/security", "href": "modules/security/",
    "desc": "Firewall par zones, sept authenticators, autorisation par voters, CSRF/CORS/en-têtes, 2FA, passkeys, webhooks, audit.",
    "meta": "17 pages — le module le plus fourni" },
  { "icon": "👤", "title": "@nodefony/user", "href": "modules/user/",
    "desc": "L'identité `IUser` et son stockage.", "meta": "comptes utilisateurs" }
]
```

## 🗄️ Données

Un contrat commun, plusieurs implémentations. Écris contre le contrat, choisis le backend ensuite.

```nodefony-cards
[
  { "icon": "📐", "title": "@nodefony/orm-core", "href": "modules/orm-core/",
    "desc": "Le contrat ORM partagé par tous les backends.", "meta": "le contrat" },
  { "icon": "🐘", "title": "@nodefony/drizzle", "href": "modules/drizzle/",
    "desc": "SQL — PostgreSQL, MySQL/MariaDB, SQLite.", "meta": "l'implémentation par défaut" },
  { "icon": "🍃", "title": "@nodefony/mongoose", "href": "modules/mongoose/",
    "desc": "MongoDB — pour les données orientées document.", "meta": "document" },
  { "icon": "⚡", "title": "@nodefony/redis", "href": "modules/redis/",
    "desc": "Cache, sessions partagées, backplane temps réel.", "meta": "scaling horizontal" }
]
```

## 📡 Temps réel & interface

```nodefony-cards
[
  { "icon": "🛰️", "title": "@nodefony/realtime", "href": "modules/realtime/",
    "desc": "La socket Nodefony : une connexion qui multiplexe N canaux bidirectionnels, avec backplane.",
    "meta": "le différenciateur" },
  { "icon": "🎨", "title": "@nodefony/frontend", "href": "modules/frontend/",
    "desc": "Build Vite, rechargement à chaud, multi-framework (React, Vue, Angular, Svelte).", "meta": "servir une SPA" },
  { "icon": "🛠️", "title": "@nodefony/studio", "href": "modules/studio/",
    "desc": "L'administration web du framework : voir l'intérieur en marche.", "meta": "introspection" },
  { "icon": "📘", "title": "@nodefony/documentation", "href": "modules/documentation/",
    "desc": "Le portail qui rend ces pages, et son data plane.", "meta": "méta" }
]
```

## 📗 Guides

Orientés tâche : on suit le guide, on obtient un résultat.

```nodefony-cards
[
  { "icon": "⚙️", "title": "Configuration pas à pas", "href": "guides/configuration/",
    "desc": "La recette, quand l'architecture est déjà comprise." },
  { "icon": "🏗️", "title": "Générer du code", "href": "guides/generer-du-code/",
    "desc": "`nodefony create` : voir ce qui va changer avant que ça change — et l'appeler depuis un agent." },
  { "icon": "🗄️", "title": "Persistance", "href": "guides/persistence/",
    "desc": "Choisir et brancher sa base de données." },
  { "icon": "🗝️", "title": "Stockage de session", "href": "guides/session-storage/",
    "desc": "Le choix qui décide de ton scaling horizontal." },
  { "icon": "⚛️", "title": "Frontend React", "href": "guides/frontend-react/",
    "desc": "Servir une SPA avec le rechargement à chaud." },
  { "icon": "🐳", "title": "Docker & cloud-native", "href": "guides/docker-cloud-native/",
    "desc": "Un process = un conteneur, scaling délégué à l'orchestrateur." }
]
```

## 📚 Références

```nodefony-cards
[
  { "icon": "📖", "title": "Lexique général", "href": "lexique/",
    "desc": "Le vocabulaire du framework, en un seul endroit." },
  { "icon": "🏛️", "title": "Décisions d'architecture", "href": "https://github.com/nodefony/nodefony-core/blob/main/docs/adr/0001-docs-modules-emplacement-hybride.md",
    "desc": "Les ADR : pourquoi tel choix a été fait, et ce qu'il coûte." },
  { "icon": "🤖", "title": "Outillage agents", "href": "https://github.com/nodefony/nodefony-core/blob/main/docs/outillage-agents.md",
    "desc": "Les skills du dépôt de développement : ce que chacun fait, combien il sert réellement, sa conformité au standard Agent Skills, et lesquels réparer ou fusionner. Concerne le dépôt, pas le paquet publié." }
]
```

## 🔗 Pour aller plus loin

- 🧭 **Tu ne sais pas par où entrer ?** → [Par où commencer](demarrer/) : cinq parcours ordonnés.
- 🧪 **Qualité** : chaque page de brique porte l'inventaire de ses tests — unitaires, intégration, E2E,
  attaque, charge — **et dit ce qui manque**. Un trou de couverture nommé vaut mieux qu'un chiffre flatteur.
- 📊 **Ce que ça tient** : le dossier [Performance](../performance/) — où part le temps, ce
  que le chantier a rendu, ce qu'il a **annulé après l'avoir écrit**, et combien de pods il faut.
- 📡 **Voir tourner** : Studio expose la documentation, la configuration résolue, les routes, les
  sessions et le temps réel de l'instance en marche.
