init backend and dev docs
This commit is contained in:
8
.gitignore
vendored
Normal file
8
.gitignore
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# Secrets
|
||||||
|
.env
|
||||||
|
/doc_dev/.env
|
||||||
|
|
||||||
|
# Go build
|
||||||
|
/bin/
|
||||||
|
*.exe
|
||||||
|
*.out
|
||||||
25
backend/cmd/app/main.go
Normal file
25
backend/cmd/app/main.go
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
// Config simple : port via PORT, defaut 8080.
|
||||||
|
port := os.Getenv("PORT")
|
||||||
|
if port == "" {
|
||||||
|
port = "8080"
|
||||||
|
}
|
||||||
|
|
||||||
|
r := gin.Default()
|
||||||
|
|
||||||
|
// Route de sante pour verifier que le backend repond.
|
||||||
|
r.GET("/healthz", func(c *gin.Context) {
|
||||||
|
c.JSON(http.StatusOK, gin.H{"status": "ok"})
|
||||||
|
})
|
||||||
|
|
||||||
|
_ = r.Run(":" + port)
|
||||||
|
}
|
||||||
5
backend/go.mod
Normal file
5
backend/go.mod
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
module gitea.maison43.duckdns.org/gilles/matosbox
|
||||||
|
|
||||||
|
go 1.23
|
||||||
|
|
||||||
|
require github.com/gin-gonic/gin v1.10.0
|
||||||
28
doc_dev/01_analyse.md
Normal file
28
doc_dev/01_analyse.md
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
# Analyse - MatosBox
|
||||||
|
|
||||||
|
## Contexte
|
||||||
|
MatosBox est une application open-source self-hosted pour inventorier du materiel (electronique, informatique, outillage, cuisine). L'app vise ~5000 objets, avec simplicite, portabilite et extensibilite.
|
||||||
|
|
||||||
|
## Contraintes et consignes
|
||||||
|
- Langue : interface, messages et commentaires de code en francais. Noms des tables en francais.
|
||||||
|
- Backend : Go 1.23+, Gin, Ent, SQLite par defaut, Postgres optionnel.
|
||||||
|
- API : REST, endpoint upload multiple `/v1/objets/{id}/pieces_jointes`.
|
||||||
|
- Pieces jointes : images, PDF, Markdown.
|
||||||
|
- Schema : tables Objet, Categorie, Emplacement (noms FR), relations hierarchiques.
|
||||||
|
- Depot : gitea.maison43.duckdns.org/gilles/matosbox.git. Commit/push apres etapes clefs (token non fourni).
|
||||||
|
- Dossiers : `backend/`, `frontend/`, `data/`, `docs/`, `migrations/`.
|
||||||
|
|
||||||
|
## Fonctions coeur (MVP)
|
||||||
|
- CRUD Objets, Categories, Emplacements.
|
||||||
|
- Pieces jointes multiples par objet.
|
||||||
|
- Recherche et filtres de base.
|
||||||
|
|
||||||
|
## Risques / points d'attention
|
||||||
|
- Definition precise des schemas Ent en francais (noms et relations).
|
||||||
|
- Gestion multi-fichiers (taille, types MIME, stockage disque).
|
||||||
|
- Migration SQLite <-> Postgres.
|
||||||
|
|
||||||
|
## Livrables demandes
|
||||||
|
- Brainstorming et plan de dev.
|
||||||
|
- Fichiers intermediaires par etapes dans `doc_dev/`.
|
||||||
|
- Debut du developpement (progressif, par etapes).
|
||||||
23
doc_dev/02_brainstorm.md
Normal file
23
doc_dev/02_brainstorm.md
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# Brainstorming - MatosBox
|
||||||
|
|
||||||
|
## Axes produit
|
||||||
|
- Inventaire polyvalent : objets, categories, emplacements, tags.
|
||||||
|
- Experiences cle : ajout rapide, upload pieces jointes, recherche simple.
|
||||||
|
- Extensibilite : champs personalises, import CSV/JSON, scan hardware.
|
||||||
|
|
||||||
|
## Idees pour le MVP
|
||||||
|
- Formulaire objet minimal : nom, quantite, categorie, emplacement, statut.
|
||||||
|
- Widget pieces jointes : multi-upload + previsualisation.
|
||||||
|
- Liste objets avec filtres rapides (statut, categorie, emplacement).
|
||||||
|
|
||||||
|
## Questions a clarifier
|
||||||
|
- Chemin exact des pieces jointes (structure de dossiers par objet ou date).
|
||||||
|
- Limites d'upload par defaut (taille/fichier, total).
|
||||||
|
- Gestion des miniatures (server-side ou front).
|
||||||
|
|
||||||
|
## Sequencage propose
|
||||||
|
1. Initialisation structure repo + config.
|
||||||
|
2. Schema Ent (Objet, Categorie, Emplacement).
|
||||||
|
3. API CRUD basique.
|
||||||
|
4. Upload pieces jointes.
|
||||||
|
5. Frontend minimum.
|
||||||
23
doc_dev/03_plan_dev.md
Normal file
23
doc_dev/03_plan_dev.md
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# Plan de dev (court terme)
|
||||||
|
|
||||||
|
## Etape 1 - Setup et base technique
|
||||||
|
- Creer structure repo (backend/frontend/docs/data/migrations).
|
||||||
|
- Init module Go, dependances Gin.
|
||||||
|
- Point d'entree backend avec route de sante.
|
||||||
|
|
||||||
|
## Etape 2 - Schema Ent (FR)
|
||||||
|
- Tables : Objet, Categorie, Emplacement.
|
||||||
|
- Relations hierarchiques pour Categorie et Emplacement.
|
||||||
|
- Champs principaux Objet (nom, description, quantite, prix_achat, etc.).
|
||||||
|
|
||||||
|
## Etape 3 - API CRUD
|
||||||
|
- Endpoints CRUD Objets, Categories, Emplacements.
|
||||||
|
- Validation d'entree et reponses JSON coherentes.
|
||||||
|
|
||||||
|
## Etape 4 - Pieces jointes
|
||||||
|
- Endpoint POST /v1/objets/{id}/pieces_jointes (upload multiple).
|
||||||
|
- Stockage disque + enregistrement DB (PieceJointe).
|
||||||
|
|
||||||
|
## Etape 5 - Tests minimum
|
||||||
|
- Tests unitaires modeles et handlers critiques.
|
||||||
|
- Tests upload multi-fichiers.
|
||||||
15
doc_dev/04_etape1_setup.md
Normal file
15
doc_dev/04_etape1_setup.md
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# Etape 1 - Setup initial (realise)
|
||||||
|
|
||||||
|
## Objectif
|
||||||
|
Mettre en place la structure minimale et un point d'entree backend.
|
||||||
|
|
||||||
|
## Fichiers ajoutes
|
||||||
|
- `backend/go.mod` : module Go + dependance Gin.
|
||||||
|
- `backend/cmd/app/main.go` : serveur Gin minimal + route `/healthz`.
|
||||||
|
- `doc_dev/01_analyse.md` : synthese des consignes.
|
||||||
|
- `doc_dev/02_brainstorm.md` : idees MVP et questions.
|
||||||
|
- `doc_dev/03_plan_dev.md` : plan court terme.
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
- Aucune migration/Ent encore : prochaine etape.
|
||||||
|
- Token de commit non fourni, donc pas de commit/push.
|
||||||
Reference in New Issue
Block a user