SOGOMS v1.0.1 - Microservices logs, smtp et roadmap
Nouveaux services:
- sogoms-logs : logging centralisé avec rotation
- sogoms-smtp : envoi emails avec templates YAML
Nouvelles fonctionnalités:
- Queries YAML externalisées (config/queries/{app}/)
- CRUD générique paramétrable
- Filtres par rôle (default, admin)
- Templates email (config/emails/{app}/)
Documentation:
- DOCTECH.md : documentation technique complète
- README.md : vision et roadmap
- TODO.md : phases 11-15 planifiées
Roadmap:
- Phase 11: sogoms-crypt (chiffrement)
- Phase 12: sogoms-imap/mailproc (emails)
- Phase 13: sogoms-cron (tâches planifiées)
- Phase 14: sogoms-push (MQTT temps réel)
- Phase 15: sogoms-schema (API auto-générée)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
117
README.md
117
README.md
@@ -2,19 +2,49 @@
|
||||
|
||||
**Service Oriented GO MicroServices** - Plateforme SaaS modulaire multi-tenant.
|
||||
|
||||
## Architecture
|
||||
## Vision
|
||||
|
||||
SOGOMS est un framework backend léger en Go qui transforme un simple fichier de schéma YAML en API REST complète. Conçu pour héberger plusieurs applications SaaS sur une même infrastructure avec isolation totale des données.
|
||||
|
||||
```
|
||||
Client → Nginx(:443) → Sogoway(:8080) → Sogoms-db → MariaDB
|
||||
↓
|
||||
Unix Socket
|
||||
schema.yaml → SOGOMS → API REST + Auth + CRUD + Push
|
||||
```
|
||||
|
||||
| Binaire | Rôle | Port/Socket |
|
||||
|---------|------|-------------|
|
||||
| `sogoctl` | Superviseur PID 1, health checks, restart auto | - |
|
||||
| `sogoway` | Gateway HTTP, auth JWT, routing par hostname | TCP :8080 |
|
||||
| `sogoms-db` | Accès MariaDB, pool par application | Unix socket |
|
||||
## Caractéristiques
|
||||
|
||||
- **Léger** : binaires Go compilés (~10MB), pas de dépendances runtime
|
||||
- **Modulaire** : 1 fonctionnalité = 1 microservice
|
||||
- **Configurable** : SQL et routing en YAML, sans recompilation
|
||||
- **Sécurisé** : JWT, isolation par user_id, bcrypt
|
||||
- **Auto-supervisé** : health checks, restart automatique
|
||||
- **Temps réel** : push MQTT vers les applications (roadmap)
|
||||
- **Schema-driven** : génération d'API depuis la structure DB (roadmap)
|
||||
|
||||
## Services actuels
|
||||
|
||||
| Service | Rôle | Statut |
|
||||
|---------|------|--------|
|
||||
| `sogoctl` | Superviseur, health checks | Stable |
|
||||
| `sogoway` | Gateway HTTP, auth JWT, CRUD | Stable |
|
||||
| `sogoms-db` | Accès MariaDB | Stable |
|
||||
| `sogoms-logs` | Logging centralisé | Stable |
|
||||
| `sogoms-smtp` | Envoi emails, templates | Stable |
|
||||
|
||||
## Roadmap
|
||||
|
||||
| Phase | Service | Description |
|
||||
|-------|---------|-------------|
|
||||
| 11 | sogoms-crypt | Chiffrement données sensibles |
|
||||
| 12 | sogoms-imap/mailproc | Lecture et traitement emails |
|
||||
| 13 | sogoms-cron | Tâches planifiées |
|
||||
| 14 | sogoms-push | Push temps réel (MQTT) |
|
||||
| 15 | sogoms-schema | API auto-générée depuis schema |
|
||||
|
||||
## Applications
|
||||
|
||||
| Application | Description | URL |
|
||||
|-------------|-------------|-----|
|
||||
| **Prokov** | Gestion de projets et tâches | prokov.unikoffice.com |
|
||||
|
||||
## Déploiement
|
||||
|
||||
@@ -22,76 +52,17 @@ Client → Nginx(:443) → Sogoway(:8080) → Sogoms-db → MariaDB
|
||||
./deploy.sh
|
||||
```
|
||||
|
||||
Déploie sur le container `gw3` (Alpine) via IN3.
|
||||
## Documentation
|
||||
|
||||
## Lancement
|
||||
|
||||
Sur gw3 :
|
||||
|
||||
```bash
|
||||
/opt/sogoms/bin/sogoctl
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
Chaque application cliente a son fichier dans `config/routes/` :
|
||||
|
||||
```yaml
|
||||
# config/routes/prokov.yaml
|
||||
app: prokov
|
||||
hosts:
|
||||
- prokov.unikoffice.com
|
||||
database:
|
||||
host: 13.23.33.4
|
||||
user: prokov_user
|
||||
password_file: /secrets/prokov_db_pass
|
||||
name: prokov
|
||||
auth:
|
||||
jwt_secret_file: /secrets/prokov_jwt_secret
|
||||
jwt_expiry: 24h
|
||||
```
|
||||
|
||||
## Structure
|
||||
|
||||
```
|
||||
cmd/
|
||||
sogoctl/main.go # Superviseur
|
||||
sogoway/main.go # Gateway HTTP
|
||||
sogoms/db/main.go # Microservice DB
|
||||
internal/
|
||||
protocol/ # IPC Unix socket (JSON length-prefixed)
|
||||
config/ # Chargement YAML, registry par host
|
||||
auth/ # JWT (HS256), bcrypt passwords
|
||||
config/
|
||||
sogoctl.yaml # Services à superviser
|
||||
routes/*.yaml # Config par application
|
||||
scenarios/ # Scénarios YAML (V2)
|
||||
```
|
||||
|
||||
## API Endpoints
|
||||
|
||||
```bash
|
||||
# Health check
|
||||
curl http://localhost:8080/health
|
||||
|
||||
# Login
|
||||
curl -X POST http://localhost:8080/api/auth/login \
|
||||
-H "Host: prokov.unikoffice.com" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"email":"user@example.com","password":"secret"}'
|
||||
|
||||
# User info (avec token)
|
||||
curl http://localhost:8080/api/auth/me \
|
||||
-H "Host: prokov.unikoffice.com" \
|
||||
-H "Authorization: Bearer <token>"
|
||||
```
|
||||
- [Documentation technique](DOCTECH.md) - Architecture, API, configuration
|
||||
- [Roadmap](TODO.md) - Suivi des tâches et évolutions
|
||||
|
||||
## Prérequis
|
||||
|
||||
- Go 1.22+
|
||||
- MariaDB/MySQL
|
||||
- Container Alpine (gw3)
|
||||
- Container Linux (Alpine recommandé)
|
||||
|
||||
## Licence
|
||||
|
||||
Propriétaire
|
||||
Propriétaire - Tous droits réservés
|
||||
|
||||
Reference in New Issue
Block a user