Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
109 changes: 73 additions & 36 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,64 +1,101 @@
```
|__ __| | | | | /\ | __ \|_ _|
| | ___ _ __ ___ _ __ | | __ _ | |_ ___ / \ | |__) | | |
| | / _ \| '_ ` _ \ | '_ \ | | / _` || __|/ _ \ / /\ \ | ___/ | |
| || __/| | | | | || |_) || || (_| || |_| __/ / ____ \ | | _| |_
|_| \___||_| |_| |_|| .__/ |_| \__,_| \__|\___| /_/ \_\|_| |_____|
| |
|_|
```
# TemplateAPI

Générateur CLI pour créer rapidement une API Node.js structurée autour d'une architecture hexagonale, avec TypeScript ou JavaScript et des modules activables selon le projet.

## Fonctionnalités

- génération TypeScript ou JavaScript ;
- architecture hexagonale prête à étendre ;
- authentification et gestion des utilisateurs en modules optionnels ;
- portails client et administration optionnels ;
- configuration, validation, journalisation et observabilité ;
- modèles Docker, Jest, ESLint, Prettier et documentation API ;
- support npm, pnpm et yarn ;
- mode `--dry-run` pour inspecter une génération sans écrire de fichiers.

## Installation

## 🚀 Utilisation
Pour travailler directement depuis le dépôt :

```bash
# installer les dépendances du générateur
git clone https://github.com/ShHaWkK/TemplateAPI.git
cd TemplateAPI
npm install
npm test
npm run build
```

Après publication npm, le package sera utilisable avec :

```bash
npx create-shhawk-api my-api
```

# lancer le générateur (interactif)
Le binaire historique `create-template-api` reste également exposé pour compatibilité.

## Utilisation

Mode interactif :

```bash
npm run dev
# ou après build
npm run build
```

Ou après compilation :

```bash
node dist/cli/index.js
```

### Exécution directe
Exemple non interactif :

```bash
# générer une API TypeScript avec authentification et gestion utilisateurs
node dist/cli/index.js my-api \
--language typescript \
--features auth,userCrud,clientPortal,adminPortal \
--package-manager npm
```

## 🧭 Options disponibles
## Options

| Option | Description |
|--------|-------------|
| `--language` | `typescript` (par défaut) ou `javascript`. |
| `--features` | Modules à inclure séparés par des virgules : `auth`, `userCrud`, `clientPortal`, `adminPortal`. Les dépendances sont résolues automatiquement (ex: `userCrud` active `auth`). |
| `--package-manager` | `npm`, `pnpm` ou `yarn`. Détermine les scripts affichés dans le README généré. |
| --- | --- |
| `--language` | `typescript` par défaut, ou `javascript`. |
| `--features` | Modules séparés par des virgules : `auth`, `userCrud`, `clientPortal`, `adminPortal`. |
| `--package-manager` | `npm`, `pnpm` ou `yarn`. |
| `--dry-run` | Simule la génération sans écrire de fichiers. |

## 📦 Sortie générée
Les dépendances entre fonctionnalités sont résolues automatiquement. Par exemple, `userCrud` active les prérequis nécessaires à l'authentification.

## Projet généré

Selon les options sélectionnées, le générateur peut produire :

- couches domaine, application, infrastructure et interface HTTP ;
- authentification JWT et gestion des refresh tokens ;
- contrôle d'accès et rôles ;
- persistance en mémoire ou adaptateurs Prisma selon le template ;
- endpoints de santé et de statut ;
- OpenAPI/Swagger et collection Insomnia ;
- tests d'intégration ;
- Dockerfile et Docker Compose ;
- configuration ESLint, Prettier et Jest.

Le projet créé contient :
## Développement

- un dossier `src/` structuré par couches hexagonales,
- des tests (`tests/`) et utilitaires prêts à l'emploi,
- la documentation (`docs/insomnia`, `src/interface/http/docs/openapi`),
- des fichiers de configuration (ESLint, Prettier, Jest, Docker).
| Commande | Rôle |
| --- | --- |
| `npm run dev` | Lance le CLI via ts-node. |
| `npm test` | Vérifie le typage TypeScript. |
| `npm run build` | Compile le CLI dans `dist/`. |
| `npm pack --dry-run` | Vérifie le contenu qui serait publié sur npm. |

La version JavaScript est générée à partir des mêmes sources TypeScript et convertie automatiquement.
La CI valide actuellement Node.js 18, 20 et 22.

## 🛠 Développement
## Contribution

| Script | Description |
| ------ | ----------- |
| `npm run dev` | Lance le CLI en TypeScript (ts-node). |
| `npm run build` | Compile le CLI vers `dist/`. |
| `npm test` | Vérifie la compilation TypeScript sans émettre de fichiers. |
Les contributions sont bienvenues. Consultez [CONTRIBUTING.md](CONTRIBUTING.md) avant d'ouvrir une pull request et [SECURITY.md](SECURITY.md) pour signaler un problème de sécurité.

## 📄 Licence
## Licence

Ce projet est sous licence MIT.
MIT — voir [LICENSE](LICENSE).
8 changes: 6 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
{
"name": "template-api",
"name": "create-shhawk-api",
"version": "1.0.0",
"description": "Générateur d'API hexagonale modulaire sans base de données.",
"description": "CLI pour générer des API Node.js modulaires en TypeScript ou JavaScript avec architecture hexagonale.",
"main": "dist/cli/index.js",
"bin": {
"create-shhawk-api": "dist/cli/index.js",
"create-template-api": "dist/cli/index.js"
},
"type": "commonjs",
Expand Down Expand Up @@ -52,5 +53,8 @@
"@types/node": "^20.11.20",
"ts-node": "^10.9.2",
"typescript": "^5.9.2"
},
"publishConfig": {
"access": "public"
}
}
Loading