summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.envrc12
-rw-r--r--.gitignore11
-rw-r--r--README.md194
-rw-r--r--devenv.lock103
-rw-r--r--devenv.nix46
-rw-r--r--devenv.yaml15
-rw-r--r--go.mod3
7 files changed, 382 insertions, 2 deletions
diff --git a/.envrc b/.envrc
new file mode 100644
index 0000000..cc5c18b
--- /dev/null
+++ b/.envrc
@@ -0,0 +1,12 @@
+#!/usr/bin/env bash
+
+export DIRENV_WARN_TIMEOUT=20s
+
+eval "$(devenv direnvrc)"
+
+# `use devenv` supports the same options as the `devenv shell` command.
+#
+# To silence all output, use `--quiet`.
+#
+# Example usage: use devenv --quiet --impure --option services.postgres.enable:bool true
+use devenv
diff --git a/.gitignore b/.gitignore
index aaadf73..765b18c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -30,3 +30,14 @@ go.work.sum
# Editor/IDE
# .idea/
# .vscode/
+
+# Devenv
+.devenv*
+devenv.local.nix
+devenv.local.yaml
+
+# direnv
+.direnv
+
+# pre-commit
+.pre-commit-config.yaml
diff --git a/README.md b/README.md
index 5a85770..03706ff 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,192 @@
-# sovrabase
-A suitable alternative to Firebase, Supabase and any BaaS existing on the market.
+# Sovrabase
+
+> Une plateforme Backend-as-a-Service (BaaS) open source, souveraine et composable — conçue pour reprendre le contrôle de votre infrastructure.
+
+[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
+[![Go Version](https://img.shields.io/badge/go-1.25.2-00ADD8.svg)](https://go.dev/)
+
+---
+
+## 🎯 Vision
+
+**Sovrabase** est une alternative moderne et souveraine aux plateformes BaaS existantes (Firebase, Supabase, Appwrite). Elle répond aux besoins des entreprises et développeurs qui cherchent :
+
+- **L'indépendance technologique** : aucun vendor lock-in, aucune dépendance à Google Cloud ou AWS
+- **La souveraineté des données** : hébergement on-premises ou cloud privé (RGPD-friendly)
+- **La flexibilité architecturale** : infrastructure modulaire et composable
+- **La scalabilité multi-région** : distribution géographique native des données
+- **La transparence totale** : open source, auditable, gouvernance claire
+
+---
+
+## 🚀 Pourquoi Sovrabase ?
+
+### 1. **Contrôle total et indépendance technologique**
+
+Contrairement aux solutions propriétaires (Firebase) ou aux infrastructures rigides (Supabase, Appwrite), Sovrabase offre :
+
+- ✅ **Zéro vendor lock-in** : déployez où vous voulez, comme vous voulez
+- ✅ **Liberté technologique** : choix libre de votre base SQL/NoSQL, moteur temps réel, stack cloud
+- ✅ **Extensibilité native** : intégration d'APIs internes, middlewares custom, logique métier spécifique
+- ✅ **Souveraineté des données** : hébergement sur vos serveurs (France/Europe, conformité RGPD)
+
+**💡 Cas d'usage** : Proposer un backend modulable pour les entreprises nécessitant une solution souveraine et hébergeable en interne.
+
+---
+
+### 2. **Architecture multi-tenant et multi-région native**
+
+Les solutions open source actuelles (Supabase, Appwrite) sont principalement **mono-tenant** : une instance = une base de données.
+
+**Sovrabase révolutionne cette approche** :
+
+- 🌍 **Multi-région** : vos utilisateurs se connectent automatiquement à la région la plus proche
+- 🏢 **Multi-tenant** : isolation physique des données par tenant (conformité RGPD/HIPAA renforcée)
+- 📈 **Scalabilité horizontale** : architecture inspirée d'AWS S3 avec réplication et failover automatique
+- ⚡ **Performance optimale** : latence réduite grâce au placement géographique intelligent
+
+**💡 Cas d'usage** : La première plateforme BaaS open source véritablement multi-tenant avec isolation physique et placement géographique des données.
+
+---
+
+### 3. **Gestion avancée des rôles et permissions**
+
+Ni Firebase ni Supabase ne gèrent profondément les rôles multi-projets et multi-organisations.
+
+**Sovrabase intègre** :
+
+- 🔐 **RBAC centralisé** : `Organisation → Projets → Teams → Users → Policies`
+- 🎨 **Politiques visuelles** : gestion intuitive via tableau de bord (au-delà de Firebase Rules)
+- 🔄 **Sécurité dynamique** : règles appliquées en temps réel sur tous vos projets
+- 🤝 **Partage inter-projets** : permissions partagées au niveau organisationnel
+
+**💡 Cas d'usage** : Sécurité administrative, visuelle et mutualisée — inexistante dans les BaaS open source actuels.
+
+---
+
+### 4. **Orchestration modulaire des services cloud**
+
+Sovrabase propose une **infrastructure composable** type *Kubernetes-as-a-Backend* :
+
+- ☁️ **Stockage objet flexible** : support de Cloudflare R2, MinIO, AWS S3, ou votre provider custom
+- 🗄️ **Bases modulaires** : PostgreSQL, MongoDB, Redis, etc. — par projet
+- 📦 **Configuration déclarative** : définissez votre stack via YAML/API
+- 🔌 **Extensibilité illimitée** : ajoutez vos propres services et middlewares
+
+**💡 Cas d'usage** : Contrairement à Firebase qui impose ses services propriétaires, Sovrabase s'adapte à votre infrastructure existante.
+
+---
+
+### 5. **Transparence et gouvernance**
+
+Sovrabase est conçu pour les entreprises exigeantes en matière de conformité et d'auditabilité :
+
+- 📊 **Analytics internes** : KPI, métriques système, billing simplifié
+- 🔍 **Auditabilité totale** : code open source, logs transparents, traçabilité complète
+- 🏛️ **Hébergement hybride** : on-premises, cloud privé, ou hybride
+- 🇪🇺 **RGPD by design** : respect natif des réglementations européennes
+
+**💡 Cas d'usage** : Avantage majeur pour le marché européen (secteur public, santé, SaaS B2B).
+
+---
+
+## 📦 Fonctionnalités principales
+
+- [ ] **Authentication & Authorization** : système d'auth modulaire (JWT, OAuth2, SSO)
+- [ ] **Database Management** : support multi-bases (PostgreSQL, MongoDB, Redis)
+- [ ] **Storage** : stockage objet compatible S3 avec providers multiples
+- [ ] **Real-time** : WebSocket et Server-Sent Events natifs
+- [ ] **Functions** : exécution serverless de fonctions custom
+- [ ] **Multi-tenancy** : isolation et gestion par organisation/projet
+- [ ] **Multi-region** : réplication géographique automatique
+- [ ] **RBAC avancé** : gestion fine des rôles et permissions
+- [ ] **Dashboard** : interface d'administration intuitive
+- [ ] **CLI** : outil en ligne de commande pour l'automatisation
+- [ ] **SDK** : bibliothèques client (JavaScript, Go, Python, etc.)
+
+---
+
+## 🛠️ Technologies
+
+- **Backend** : Go 1.25+
+- **Infrastructure** : Conteneurisé (Docker, Kubernetes ready)
+- **Bases de données** : PostgreSQL, MongoDB, Redis (extensible)
+- **Stockage** : Compatible S3 (MinIO, R2, AWS S3, Garage)
+- **Monitoring** : Prometheus, Grafana (intégration native)
+
+---
+
+## 🚧 Statut du projet
+
+**⚠️ En développement actif** — Sovrabase est actuellement en phase de conception et développement.
+
+### Roadmap
+
+**Phase 1 : Fondations (Q1 2026)**
+- Architecture de base multi-tenant
+- Système d'authentication
+- Gestion des organisations et projets
+
+**Phase 2 : Core Services (Q2 2026)**
+- Database management
+- Storage S3-compatible
+- RBAC avancé
+
+**Phase 3 : Scalabilité (Q3 2026)**
+- Multi-région
+- Réplication automatique
+- Dashboard administrateur
+
+**Phase 4 : Écosystème (Q4 2026)**
+- SDK multi-langages
+- CLI complète
+- Documentation exhaustive
+
+---
+
+## 🤝 Contribution
+
+Sovrabase est un projet open source. Les contributions sont les bienvenues !
+
+**Comment contribuer :**
+
+1. Fork le projet
+2. Créez une branche (`git checkout -b feature/amazing-feature`)
+3. Committez vos changements (`git commit -m 'Add amazing feature'`)
+4. Pushez vers la branche (`git push origin feature/amazing-feature`)
+5. Ouvrez une Pull Request
+
+---
+
+## 📄 Licence
+
+Ce projet est sous licence AGPLv3. Voir le fichier [LICENSE](LICENSE) pour plus de détails.
+
+---
+
+## 🌟 Pourquoi "Sovrabase" ?
+
+**Sovra-** vient du latin *supra* (au-dessus) et évoque la **souveraineté** — le contrôle total sur votre infrastructure et vos données.
+
+**-base** représente la **fondation** — une base solide, modulaire et indépendante pour vos applications.
+
+> **Sovrabase = Souveraineté + Base** : Reprenez le contrôle de votre backend.
+
+---
+
+## 📞 Contact & Support
+
+- 🐛 **Issues** : [GitHub Issues](https://github.com/ketsuna-org/sovrabase/issues)
+- 💬 **Discussions** : [GitHub Discussions](https://github.com/ketsuna-org/sovrabase/discussions)
+- 📧 **Email** : *À venir*
+- 🌐 **Site web** : *À venir*
+
+---
+
+<div align="center">
+
+**⭐ Si ce projet vous intéresse, n'hésitez pas à lui donner une étoile !**
+
+Made with ❤️ for developers who value sovereignty and transparency.
+
+</div>
diff --git a/devenv.lock b/devenv.lock
new file mode 100644
index 0000000..cc0af55
--- /dev/null
+++ b/devenv.lock
@@ -0,0 +1,103 @@
+{
+ "nodes": {
+ "devenv": {
+ "locked": {
+ "dir": "src/modules",
+ "lastModified": 1761427990,
+ "owner": "cachix",
+ "repo": "devenv",
+ "rev": "7419c04fc798d5d5918413d4cb6c8629f9d4e8a3",
+ "type": "github"
+ },
+ "original": {
+ "dir": "src/modules",
+ "owner": "cachix",
+ "repo": "devenv",
+ "type": "github"
+ }
+ },
+ "flake-compat": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1747046372,
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
+ "type": "github"
+ },
+ "original": {
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "type": "github"
+ }
+ },
+ "git-hooks": {
+ "inputs": {
+ "flake-compat": "flake-compat",
+ "gitignore": "gitignore",
+ "nixpkgs": [
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1760663237,
+ "owner": "cachix",
+ "repo": "git-hooks.nix",
+ "rev": "ca5b894d3e3e151ffc1db040b6ce4dcc75d31c37",
+ "type": "github"
+ },
+ "original": {
+ "owner": "cachix",
+ "repo": "git-hooks.nix",
+ "type": "github"
+ }
+ },
+ "gitignore": {
+ "inputs": {
+ "nixpkgs": [
+ "git-hooks",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1709087332,
+ "owner": "hercules-ci",
+ "repo": "gitignore.nix",
+ "rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "gitignore.nix",
+ "type": "github"
+ }
+ },
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1761313199,
+ "owner": "cachix",
+ "repo": "devenv-nixpkgs",
+ "rev": "d1c30452ebecfc55185ae6d1c983c09da0c274ff",
+ "type": "github"
+ },
+ "original": {
+ "owner": "cachix",
+ "ref": "rolling",
+ "repo": "devenv-nixpkgs",
+ "type": "github"
+ }
+ },
+ "root": {
+ "inputs": {
+ "devenv": "devenv",
+ "git-hooks": "git-hooks",
+ "nixpkgs": "nixpkgs",
+ "pre-commit-hooks": [
+ "git-hooks"
+ ]
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/devenv.nix b/devenv.nix
new file mode 100644
index 0000000..5104a4c
--- /dev/null
+++ b/devenv.nix
@@ -0,0 +1,46 @@
+{ pkgs, lib, config, inputs, ... }:
+
+{
+ # https://devenv.sh/basics/
+ env.GREET = "devenv";
+
+ # https://devenv.sh/packages/
+ packages = [ pkgs.git ];
+
+ # https://devenv.sh/languages/
+ languages.go.enable = true;
+
+ # https://devenv.sh/processes/
+ # processes.dev.exec = "${lib.getExe pkgs.watchexec} -n -- ls -la";
+
+ # https://devenv.sh/services/
+ # services.postgres.enable = true;
+
+ # https://devenv.sh/scripts/
+ scripts.hello.exec = ''
+ echo hello from $GREET
+ '';
+
+ # https://devenv.sh/basics/
+ enterShell = ''
+ hello # Run scripts directly
+ git --version # Use packages
+ '';
+
+ # https://devenv.sh/tasks/
+ # tasks = {
+ # "myproj:setup".exec = "mytool build";
+ # "devenv:enterShell".after = [ "myproj:setup" ];
+ # };
+
+ # https://devenv.sh/tests/
+ enterTest = ''
+ echo "Running tests"
+ git --version | grep --color=auto "${pkgs.git.version}"
+ '';
+
+ # https://devenv.sh/git-hooks/
+ # git-hooks.hooks.shellcheck.enable = true;
+
+ # See full reference at https://devenv.sh/reference/options/
+}
diff --git a/devenv.yaml b/devenv.yaml
new file mode 100644
index 0000000..116a2ad
--- /dev/null
+++ b/devenv.yaml
@@ -0,0 +1,15 @@
+# yaml-language-server: $schema=https://devenv.sh/devenv.schema.json
+inputs:
+ nixpkgs:
+ url: github:cachix/devenv-nixpkgs/rolling
+
+# If you're using non-OSS software, you can set allowUnfree to true.
+# allowUnfree: true
+
+# If you're willing to use a package that's vulnerable
+# permittedInsecurePackages:
+# - "openssl-1.1.1w"
+
+# If you have more than one devenv you can merge them
+#imports:
+# - ./backend
diff --git a/go.mod b/go.mod
new file mode 100644
index 0000000..0ccb5d9
--- /dev/null
+++ b/go.mod
@@ -0,0 +1,3 @@
+module github.com/ketsuna-org/sovrabase
+
+go 1.25.2