# 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.