Skip to content

Developpement

Prerequis

  • Node.js 22+
  • pnpm 9.15+

Installation

bash
git clone <url-du-repo>
cd cadmin
pnpm install

Structure du monorepo

cadmin/
├── api/                # API Hono + SQLite
│   ├── src/
│   │   ├── db/         # Schema Drizzle, migrations, seed
│   │   ├── lib/        # Auth, Caddy API, generation Caddyfile
│   │   ├── middleware/  # Middleware d'authentification
│   │   ├── routes/     # Routes API (auth, vhosts, logs, agents, changelog)
│   │   └── index.ts    # Point d'entree
│   └── Dockerfile
├── admin/              # React SPA
│   ├── src/
│   │   ├── components/ # Composants (vhost-form, diff-view, ui/)
│   │   ├── lib/        # Client API, auth client
│   │   └── routes/     # Pages (TanStack Router, file-based)
│   └── Dockerfile
├── agent/              # Service leger par serveur
│   ├── src/
│   │   ├── lib/        # Client Caddy API
│   │   ├── middleware/  # Auth Bearer token
│   │   ├── routes/     # Routes (caddy, logs, health)
│   │   └── index.ts    # Point d'entree
│   └── Dockerfile
├── docs/               # Documentation VitePress
├── package.json        # Scripts racine
└── pnpm-workspace.yaml

Lancer en dev

bash
# Backend + Frontend
pnpm dev

# Individuellement
pnpm dev:api         # http://localhost:3001
pnpm dev:admin       # http://localhost:5173
pnpm dev:agent       # http://localhost:3002

TIP

Le serveur Vite proxifie automatiquement les requetes /api vers l'api.

Base de donnees

bash
# Generer les migrations (apres modification du schema)
pnpm db:generate

# Appliquer les migrations
pnpm db:migrate

# Creer le compte admin
pnpm --filter api db:seed

Conventions de code

  • TypeScript strict
  • type plutot que interface
  • Arrow functions
  • Export apres la declaration