# Analyse detaillee des consignes ## Objectif du projet MatosBox est une application self-hosted d'inventaire de materiel (electronique, informatique, outillage, cuisine). L'app vise ~5000 objets, avec un focus sur simplicite, portabilite et extensibilite. ## Langue et conventions - UI, messages et commentaires de code en francais. - Noms de tables et base en francais. - Timezone cible : Europe/Paris. ## Structure projet (mono-repo) - `backend/` : application Go (Gin + Ent) - `frontend/` : Nuxt 3 / Vue 3 - `data/` : DB + pieces jointes + backups - `docs/` : documentation Vitepress - `migrations/` : scripts Goose/Atlas - fichiers racine : `.gitlab-ci.yml`, `Taskfile.yml`, `docker-compose.yml`, `README.md`, `LICENSE` ## Outils de developpement Backend - Go 1.23+ - Gin (router HTTP) - Ent (ORM + schema) - Migrations : Goose ou Atlas Frontend - Vue 3 + Nuxt.js (SSR/PWA) - Tailwind CSS + shadcn-vue - pnpm Infra / DevOps - Docker + Docker Compose - GitLab CI - Vitepress (docs) - Weblate (i18n) - Swaggo (Swagger) ## Backend - attentes clefs - API REST versionnee `/v1`. - CRUD Objets/Categories/Emplacements. - Upload multiple : `POST /v1/objets/{id}/pieces_jointes`. - Gestion pieces jointes (images, PDF, Markdown). - Services annexes : QR, scan hardware (lsusb/lspci) dans une sandbox. - Auth JWT (securite). ## Frontend - attentes clefs - Pages principales : `/objets`, `/objets/[id]`, `/emplacements`. - Composants : `ObjetCard`, `FileUploader`, `MarkdownEditor`, `ThemeToggle`. - Modals pour ajout rapide, upload, analyse commande. - Themes : light, dark, monokai, gruvbox-dark (default style seventies). - Footer : version backend + frontend. - Onglets : settings (config.json), debug (logs). ## Pieces jointes - Multi-upload d'images/PDF/MD. - Thumbnails + image principale. - Stockage disque (ex: `data/pieces_jointes/`). - Association via table `PieceJointe`. ## Exigences BDD - SQLite par defaut, Postgres optionnel. - Tables en francais. - Arbres recursifs pour `Categorie` et `Emplacement`. - Champs customs via `ChampPersonnalise`. ## Tests - Go test (unitaires backend). - Vitest (frontend). - Cypress (E2E). - Tests specifiques sur parsing lspci/lsusb et imports CSV. ## Contraintes Git - Commit et push apres chaque etape clef. - Token Gitea dans `doc_dev/.env`. ## Risques / points sensibles - Conception Ent en francais + relations. - Migration SQLite -> Postgres. - Upload multi-fichiers et securite MIME. - Limites d'upload (50MB/fichier).