- Shared types : ajout isCurrent sur ApiEntry et ApiEntryListItem - Backend entity : colonne is_current (boolean, default true) - Backend service : isCurrent calculé à la création, setCurrent() marque une version comme courante (siblings → false) - Backend controller : POST /api/apis/:id/set-current - Frontend ApiService : méthode setCurrent() - Browse/upload : affichage badge "Courante" via isCurrent - Seeder : données de démo mises à jour - Documentation : api-reference, architecture, local-setup, CLAUDE.md Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering>
88 lines
2.6 KiB
Markdown
88 lines
2.6 KiB
Markdown
# Datacat
|
|
|
|
Catalogue de données d'API. Importez des fichiers YAML (AsyncAPI ou OpenAPI) et générez automatiquement de la documentation HTML interactive.
|
|
|
|
## Architecture
|
|
|
|
Monorepo pnpm avec quatre sous-projets :
|
|
|
|
```
|
|
datacat/
|
|
├── back/ # API REST — NestJS + TypeORM + PostgreSQL
|
|
├── front-public/ # Interface web — Angular 19 + DSFR
|
|
├── shared/ # Types TypeScript partagés (@datacat/shared)
|
|
└── infra/ # Docker Compose, Dockerfiles, Kubernetes
|
|
```
|
|
|
|
## Prérequis
|
|
|
|
- [Node.js 22 LTS](https://nodejs.org/)
|
|
- [pnpm 10](https://pnpm.io/)
|
|
- [Docker](https://www.docker.com/) (recommandé)
|
|
|
|
## Démarrage rapide
|
|
|
|
```bash
|
|
# Démarrer tous les services (PostgreSQL + backend + frontend)
|
|
docker compose -f infra/docker-compose.yml up -d
|
|
|
|
# Suivre les logs
|
|
docker compose -f infra/docker-compose.yml logs -f
|
|
```
|
|
|
|
## URLs de développement
|
|
|
|
| Service | URL |
|
|
|---------|-----|
|
|
| Frontend | http://localhost:4200 |
|
|
| API | http://localhost:3010/api |
|
|
| Health check | http://localhost:3010/health |
|
|
|
|
## Utilisation
|
|
|
|
1. Ouvrir http://localhost:4200
|
|
2. Naviguer par catégories via **Parcourir** ou voir toutes les APIs via **Catalogue**
|
|
3. Cliquer sur **Importer** pour ajouter un fichier YAML AsyncAPI ou OpenAPI
|
|
4. Une fois la génération terminée (statut **GENERATED**), cliquer sur **Voir la documentation**
|
|
|
|
## Stack technique
|
|
|
|
| Couche | Technologie |
|
|
|--------|-------------|
|
|
| Backend | NestJS 11, TypeORM 0.3, PostgreSQL 17 |
|
|
| Frontend | Angular 19, DSFR |
|
|
| Types partagés | TypeScript 5.8 strict |
|
|
| Génération docs AsyncAPI | `@asyncapi/cli@6.0.0` |
|
|
| Génération docs OpenAPI | `@redocly/cli` |
|
|
|
|
## Développement sans Docker
|
|
|
|
```bash
|
|
# Backend (port 3000)
|
|
cd back && pnpm install && pnpm run start:dev
|
|
|
|
# Frontend (port 4200, avec proxy vers l'API)
|
|
cd front-public && pnpm install && pnpm run start
|
|
```
|
|
|
|
> Créer `front-public/proxy.conf.json` si absent :
|
|
> ```json
|
|
> { "/api": { "target": "http://localhost:3010", "secure": false } }
|
|
> ```
|
|
|
|
## Rebuild complet
|
|
|
|
```bash
|
|
docker compose -f infra/docker-compose.yml down
|
|
docker volume rm datacat_front_node_modules datacat_back_node_modules
|
|
docker compose -f infra/docker-compose.yml build --no-cache
|
|
docker compose -f infra/docker-compose.yml up -d
|
|
```
|
|
|
|
## Documentation
|
|
|
|
- [`documentation/architecture.md`](documentation/architecture.md) — flux, schéma DB, services
|
|
- [`documentation/api-reference.md`](documentation/api-reference.md) — référence complète des endpoints REST
|
|
- [`documentation/local-setup.md`](documentation/local-setup.md) — installation locale (sans Docker)
|
|
- [`documentation/CLAUDE.md`](documentation/CLAUDE.md) — guide d'implémentation interne
|