blob: 935f59670067198a93344353b73291c0ab832abd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
# Architecture Sovrabase API
Ce document décrit l'architecture des dossiers et fichiers pour l'API Sovrabase.
## Structure générale
```
sovrabase/
├── cmd/ # Points d'entrée de l'application
│ └── server/ # Serveur principal
├── internal/ # Code interne (non exporté)
│ ├── api/ # Gestion des API
│ │ ├── handlers/ # Handlers HTTP
│ │ └── routes/ # Définition des routes
│ ├── config/ # Configuration de l'application
│ ├── database/ # Connexion et gestion base de données (PostgreSQL, Redis...)
│ ├── middleware/ # Middlewares personnalisés
│ ├── models/ # Structures de données
│ │ ├── organization/ # Modèles liés aux organisations
│ │ ├── project/ # Modèles liés aux projets
│ │ └── user/ # Modèles liés aux utilisateurs
│ └── services/ # Logique métier
│ ├── auth/ # Service d'authentification
│ ├── project/ # Service de gestion des projets
│ └── user/ # Service de gestion des utilisateurs
├── pkg/ # Code réutilisable (exporté)
├── migrations/ # Scripts de migration base de données
├── scripts/ # Scripts utilitaires
├── docs/ # Documentation
└── tests/ # Tests unitaires et d'intégration
```
## Conventions
### Organisation du code
- **`cmd/`** : Contient les points d'entrée principaux (ex: `cmd/server/main.go`)
- **`internal/`** : Code privé au projet, non importable depuis l'extérieur
- **`pkg/`** : Code réutilisable et exportable
### Séparation des responsabilités
- **Handlers** (`internal/api/handlers/`) : Gestion des requêtes HTTP
- **Routes** (`internal/api/routes/`) : Définition et organisation des routes
- **Services** (`internal/services/`) : Logique métier
- **Models** (`internal/models/`) : Structures de données et validation
- **Middleware** (`internal/middleware/`) : Fonctionnalités transversales (auth, logging, etc.)
### Nommage
- Fichiers : `snake_case.go` (ex: `user_handler.go`)
- Packages : `lowercase` (ex: `user`, `auth`)
- Structs : `PascalCase` (ex: `User`, `Project`)
- Fonctions exportées : `PascalCase`
- Fonctions privées : `camelCase`
## Points d'entrée
- **`cmd/server/main.go`** : Point d'entrée principal du serveur API
## Dépendances externes
Les dépendances Go seront gérées via `go.mod` et incluront :
- Framework HTTP (Gin, Echo, ou net/http standard)
- ORM/Database driver (GORM, sqlx, etc.)
- JWT, Redis, etc.
## Tests
- Tests unitaires dans le même package que le code testé
- Tests d'intégration dans `tests/`
- Convention de nommage : `*_test.go`
|