Skip to content

urbanlab/id-idv

Repository files navigation

📼 id-idv

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

Installation

🐋 Docker

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

🚀 Déploiement

Quick start

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 .)
Docker Compose

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 --build

Le 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).

⚠️ Attention : il est important d'utiliser le https pour accéder au front car la caméra (capture photo/vidéo) et la Web NFC API (programmation des tags côté admin) ne fonctionnent pas en http. En production, placez l'app derrière un reverse proxy (nginx, Traefik, Caddy) qui gère le TLS.

⚙️ Utiliser comme environnement de dev

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 ps pour vérifier).

Variables d'environnement

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

Architecture

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

Licence

MIT — voir LICENSE.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors