diff options
| -rw-r--r-- | .envrc | 12 | ||||
| -rw-r--r-- | .gitignore | 11 | ||||
| -rw-r--r-- | README.md | 194 | ||||
| -rw-r--r-- | devenv.lock | 103 | ||||
| -rw-r--r-- | devenv.nix | 46 | ||||
| -rw-r--r-- | devenv.yaml | 15 | ||||
| -rw-r--r-- | go.mod | 3 |
7 files changed, 382 insertions, 2 deletions
@@ -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 @@ -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 @@ -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://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 @@ -0,0 +1,3 @@ +module github.com/ketsuna-org/sovrabase + +go 1.25.2 |
