Files
datacat/documentation/local-setup.md
z3n 3abe5d2b85 docs: ajout guide et script d'installation locale sans Docker
- documentation/local-setup.md : guide complet (prérequis, install manuelle, démarrage, config, vérification)
- scripts/setup-local.sh : script automatisé (check prérequis, création DB PostgreSQL, install CLIs et dépendances)

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>
2026-05-22 14:10:47 +00:00

146 lines
3.6 KiB
Markdown

# Lancer Datacat en local (sans Docker)
## Prérequis
| Outil | Version | Lien |
|-------|---------|------|
| Node.js | 22 LTS | https://nodejs.org |
| pnpm | 10.33.0 | `npm install -g pnpm@10.33.0` |
| PostgreSQL | 17 | https://www.postgresql.org/download/ |
| git | toute version récente | https://git-scm.com |
> **git** est requis par le CLI AsyncAPI pour installer ses templates.
---
## Installation rapide (script)
```bash
bash scripts/setup-local.sh
```
Le script :
1. Vérifie les prérequis
2. Crée la base PostgreSQL `datacat`
3. Installe `@asyncapi/cli` et `@redocly/cli` globalement
4. Installe les dépendances npm des trois packages
---
## Installation manuelle
### 1. Base de données PostgreSQL
```bash
# Linux
sudo -u postgres psql << 'SQL'
CREATE DATABASE datacat;
CREATE USER datacat WITH PASSWORD 'datacat';
GRANT ALL PRIVILEGES ON DATABASE datacat TO datacat;
ALTER DATABASE datacat OWNER TO datacat;
SQL
# macOS (Homebrew)
psql postgres << 'SQL'
CREATE DATABASE datacat;
CREATE USER datacat WITH PASSWORD 'datacat';
GRANT ALL PRIVILEGES ON DATABASE datacat TO datacat;
ALTER DATABASE datacat OWNER TO datacat;
SQL
# Windows (PowerShell — depuis le dossier bin de PostgreSQL)
psql -U postgres -c "CREATE DATABASE datacat;"
psql -U postgres -c "CREATE USER datacat WITH PASSWORD 'datacat';"
psql -U postgres -c "GRANT ALL PRIVILEGES ON DATABASE datacat TO datacat;"
psql -U postgres -c "ALTER DATABASE datacat OWNER TO datacat;"
```
### 2. CLIs de génération de docs
```bash
npm install -g @asyncapi/cli@6.0.0
npm install -g @redocly/cli
```
### 3. Dépendances Node.js
```bash
cd shared && pnpm install
cd ../back && pnpm install
cd ../front-public && pnpm install
```
---
## Démarrage
Ouvrir **deux terminaux** depuis la racine du projet :
**Terminal 1 — Backend**
```bash
cd back
pnpm run start:dev
# API disponible sur http://localhost:3000
# Health check : http://localhost:3000/health
```
**Terminal 2 — Frontend**
```bash
cd front-public
pnpm run start
# Application disponible sur http://localhost:4200
```
---
## Configuration
Les variables d'environnement ont des valeurs par défaut. Aucun fichier `.env` n'est nécessaire si la base PostgreSQL est créée avec les identifiants par défaut (`datacat`/`datacat`).
Pour surcharger, créer `back/.env` :
```env
DATABASE_HOST=localhost
DATABASE_PORT=5432
DATABASE_NAME=datacat
DATABASE_USER=datacat
DATABASE_PASSWORD=datacat
# Répertoire de sortie des docs générées
DOCS_OUTPUT_DIR=./docs-output
# Port du backend (défaut : 3000)
PORT=3000
```
---
## Vérification
| URL | Attendu |
|-----|---------|
| http://localhost:3000/health | `{"status":"ok"}` |
| http://localhost:3000/api/apis | `{"items":[], "total":0, ...}` |
| http://localhost:4200 | Page d'accueil Datacat |
| http://localhost:4200/browse | Arborescence des dossiers |
| http://localhost:4200/upload | Formulaire d'import YAML |
---
## Fichiers YAML de test
Des exemples sont disponibles dans `documentation/` :
| Fichier | Type | Description |
|---------|------|-------------|
| `files-samples-oas/petstore.yaml` | OpenAPI 3.0 | CRUD animaux |
| `files-samples-asyncapi/user-events.yaml` | AsyncAPI 3.0 | Événements utilisateurs |
---
## Notes
- **Schéma DB** : TypeORM crée et synchronise automatiquement les tables au démarrage (mode `synchronize: true` hors production). Aucune migration manuelle nécessaire.
- **Génération de docs** : asynchrone — après l'upload, le statut passe de `PENDING` à `GENERATED` une fois le CLI terminé.
- **Proxy Angular** : le fichier `front-public/proxy.conf.json` redirige `/api` vers `http://localhost:3000`. Ne pas modifier.