id-idv est un coffre-fort multimédia destiné aux enfants accueillis dans une institution. Chaque enfant possède une enclave personnelle et chaque groupe une enclave partagée. Toutes les interactions passent par des tags NFC (URL NDEF) — pas de comptes utilisateurs, sauf pour l'archiviste.
Différents rôles sont gérés via des cartes NFC dédiées (admin, archiviste, adulte référent, drop-card de dépôt, lecture enfant). Les médias sont stockés dans un coffre filesystem (JSON + fichiers), une base SQLite ne gérant que les tokens et l'authentification.
⚠️ Cette application a été vibe codée, c'est-à-dire co-construite avec l'aide d'un LLM. Une vigilance accrue est donc de mise :
- Relire le code généré avant toute modification ou mise en production
- Ne pas déployer en l'état sans audit, en particulier sur un environnement exposé ou contenant des données sensibles
- Ne pas accorder de confiance par défaut au comportement de l'application : tester, valider, et challenger
Le projet se déploie via docker-compose. L'image est construite localement à partir du Dockerfile du repo (un service app Node.js + un service worker Python pour le traitement des médias).
Si vous souhaitez tester rapidement le service app seul (sans le worker de traitement média) :
docker run -p 3000:3000 \
-e PORT=3000 \
-e DATA_DIR=/data \
-e WORKER_URL=http://localhost:8000 \
-v id-idv-data:/data \
$(docker build -q .)Le déploiement recommandé utilise docker compose et lance les deux services (app + worker) :
cp .env.example .env # ajuster les variables d'environnement
docker-compose up -d --buildLe front sera disponible sur https://localhost:3000 (port modifiable via PORT dans le .env). Le worker écoute sur le port 8000 (modifiable via WORKER_PORT).
cp .env.example .env # ajuster les variables d'environnement
docker-compose up -d --build
docker cp id-idv-app-1:/app/node_modules .Adapter le nom du conteneur (
id-idv-app-1) selon le nom généré par votre installation de docker compose (docker pspour vérifier).
| Variable | Description | Défaut |
|---|---|---|
PORT |
Port d'écoute du service app |
3000 |
DATA_DIR |
Racine du coffre (médias + base SQLite système) | /data |
WORKER_URL |
URL du worker de traitement média | http://localhost:8000 |
WORKER_PORT |
Port d'exposition du worker (compose uniquement) | 8000 |
- app — serveur Express (Node.js 20), front en JS/HTML servi en statique
- worker — service Python pour le traitement des médias (transcoding, vignettes…)
- Stockage — fichiers et JSON dans
/data/kids/<id>/et/data/groups/<id>/, SQLite pour les tokens dans/data/system/app.db - NFC — chaque tag est un enregistrement NDEF de la forme
https://<host>/t/<token>
Voir PLAN.md pour les détails complets de l'architecture, des rôles et des routes API.
MIT — voir LICENSE.