Commit Graph

9 Commits

Author SHA1 Message Date
f7ca7a0929 fix(mdns-scanner): browser par type au lieu d'une recherche globale
bonjour-service exige un `type` dans BrowserConfig ; il n'existe pas
d'option pour écouter "tous les services". Le scanner instancie
maintenant un browser par type mDNS courant en homelab (http, ssh,
smb, airplay, googlecast, homekit, ipp, etc.) et agrège les
annonces par IP via une fonction `ingest` partagée.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-15 14:21:45 +02:00
1273368c9a fix(arp-scanner): remplace map+filter null par flatMap typé
Le combo `map -> satisfies DiscoveryResult -> filter (r is …)` ne
passait pas le typecheck strict de Next : le type littéral produit
par `satisfies` n'était pas considéré sous-type valide du prédicat.
`flatMap<DiscoveryResult>` retourne [] quand la ligne ne matche pas,
ce qui évite la nullité intermédiaire et respecte la propriété
optionnelle `macAddress?: string`.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-15 14:10:07 +02:00
dc8dbc3cd7 fix(prisma): remplace les enums par des String (compat SQLite)
SQLite ne supporte pas les enums Prisma. Les 6 enums (HostStatus,
HostSource, Protocol, PortState, ScanType, ScanStatus) sont
convertis en champs String avec valeurs par défaut littérales et
documentation inline des valeurs autorisées. La validation reste
assurée par Zod côté app.

Adapte aussi les mappings statusVariant des pages hosts/scans
en Record<string, BadgeVariant> avec fallback 'default'.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-15 14:09:57 +02:00
6c020e7ee3 feat(docker): finalise le déploiement compose (sqlite + postgres)
- Compose nettoyé en deux profils isolés (sqlite, postgres) avec
  healthcheck HTTP et network_mode host pour la découverte LAN.
- Override docker-compose.bridge.yml pour les environnements où
  host mode n'est pas disponible (macOS/Windows).
- Entrypoint tolérant : fallback prisma db push quand aucune
  migration n'existe encore.
- Dockerfile robuste sans package-lock.json (npm install fallback).
- .env.docker.example et docker/README.md pour un démarrage en
  une commande.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-15 14:03:46 +02:00
Mathieu BOURBON
c18d831d89 feat(docker): script d'entrypoint avec attente DB + migrations auto
Le script docker/entrypoint.sh :
- Attend PostgreSQL (netcat sur host:port extrait de DATABASE_URL)
- Cree le dossier /app/data si SQLite
- Applique les migrations via prisma migrate deploy
- Execute le seed si RUN_SEED=true (non bloquant)
- Demarre server.js (mode standalone Next)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 16:45:11 +02:00
Mathieu BOURBON
db7ea77a63 chore(next): migre vers serverExternalPackages (Next 15)
La cle experimental.serverComponentsExternalPackages est depreciee depuis
Next 15 au profit de serverExternalPackages au niveau racine de la config.
Meme comportement, moins de warnings au build.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 16:40:52 +02:00
Mathieu BOURBON
676b7f9f88 fix(logger): ajoute pino-pretty en devDependencies
Le module src/lib/utils/logger.ts configure un transport pino-pretty
en developpement, mais le paquet manquait du package.json. Resultat:
crash au premier import du logger (donc au boot du serveur Next en dev).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 16:40:46 +02:00
Mathieu BOURBON
73d016ec24 fix(prisma): provider statique + scripts de bascule SQLite/PostgreSQL
Prisma ne supporte pas env() pour le champ `provider` d'un datasource
(uniquement pour `url`). Le schéma utilise maintenant `provider = "sqlite"`
en statique, et deux scripts npm (`db:use-sqlite` / `db:use-postgres`)
réécrivent le fichier pour basculer entre les deux moteurs.

Sans ce fix, `prisma generate` échoue au boot.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 16:38:03 +02:00
Mathieu BOURBON
fbb6138c28 first commit 2026-04-18 16:24:44 +02:00