Files
matosbox/doc_dev/05_analyse_detaillee.md

2.4 KiB

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