Plateforme d'échange sécurisé de fichiers gouvernementaux (SecNumCloud, RGS niveau élevé).
- Ruby 3.4.7
- PostgreSQL 18+
- Bundler 2.7+
git clone <repository-url>
cd hubeebundle install# Créer les bases de données (development + test)
bin/rails db:create
# Appliquer les migrations
bin/rails db:migrate# RSpec (tests unitaires et request specs)
bundle exec rspec
# Cucumber (tests E2E)
bundle exec cucumber
# Tests avec couverture de code (minimum 80%)
COVERAGE=true bundle exec rspecbin/rails serverL'application sera accessible sur http://localhost:3000
# Exécute TOUS les checks en une seule commande
bin/ciCette commande exécute automatiquement :
- ✅ Setup : Préparation environnement
- ✅ Style : StandardRB (linting)
- ✅ Security : bundler-audit + brakeman + importmap
- ✅ Database : Préparation DB test
- ✅ Tests : RSpec (models + requests) + Cucumber (E2E)
- ✅ Coverage : Vérification >= 80%
- ✅ Signoff : Marque le commit comme approuvé (si tous checks passent)
Durée : ~10 secondes Même workflow en local et sur GitHub Actions
# 1. Commit vos changements
git add .
git commit -m "feat: nouvelle fonctionnalité"
# 2. Lancer la CI locale
bin/ci # ✅ Si succès → commit marqué "approved"
# 3. Pusher (le status vert est déjà sur GitHub)
git pushPrérequis : gh CLI + extension gh-signoff (voir .ai/context/SECURITY_CHECKS.md)
# Tous les tests
bundle exec rspec
# Tests spécifiques
bundle exec rspec spec/models/
bundle exec rspec spec/requests/
bundle exec rspec spec/interactors/
bundle exec rspec spec/policies/
# Avec couverture de code
COVERAGE=true bundle exec rspec# Tous les scénarios E2E
bundle exec cucumber
# Un scénario spécifique
bundle exec cucumber features/nom_feature.feature# Vérifier le code
bundle exec standardrb
# Auto-corriger les violations
bundle exec standardrb --fix# Tous les checks de sécurité (Brakeman + bundler-audit)
bundle exec rake security:all
# Scanner les vulnérabilités de sécurité (Brakeman)
bundle exec rake security:brakeman
# Audit des dépendances (bundler-audit)
bundle exec rake security:bundler_audit- Framework: Rails 8.1.0
- Base de données: PostgreSQL 18+
- Jobs asynchrones: Solid Queue (PostgreSQL-based)
- Stockage fichiers: Active Storage + S3 compatible
- Tests: RSpec + Cucumber
- Linting: StandardRB
- Sécurité: strong_migrations, bundler-audit, Brakeman
- Autorisation: Pundit
- Authentification: bcrypt (has_secure_password)
Pour plus d'informations, consulter :
.ai/context/OVERVIEW.md- Vue d'ensemble du projet.ai/context/ARCHITECTURE.md- Architecture système détaillée.ai/context/DATABASE.md- Schéma base de données complet.ai/context/CODE_STYLE.md- Conventions Ruby/Rails.ai/context/TESTING.md- Stratégie et exemples de tests.ai/context/API.md- Documentation API REST complète.ai/context/SECURITY_CHECKS.md- Outils de sécurité (strong_migrations, bundler-audit, brakeman).ai/context/DEVELOPMENT_WORKFLOW.md- Workflow TDD feature par feature
# Base de données
bin/rails db:reset # Drop + create + migrate + seed
bin/rails db:rollback # Rollback dernière migration
# Console Rails
bin/rails console # Console interactive
# Routes
bin/rails routes # Afficher toutes les routes
# Jobs Solid Queue
bin/rails solid_queue:start # Démarrer les workersLe projet suit une approche TDD feature par feature. Consulter .ai/context/DEVELOPMENT_WORKFLOW.md pour le workflow détaillé.
- Feature 0: Setup (Rails, RSpec, Gems) ✅
- Feature 1: Organizations
- Feature 2: DataStreams
- Feature 3: Subscriptions
- Feature 4: DataPackages
- Feature 5: Attachments (avec jobs async)
- Feature 6: Notifications
- Feature 7: Events (audit trail)
- Feature 8: Jobs Retention
- Feature 9: 🔐 Authentification (CRITIQUE avant déploiement)
- Qualification: SecNumCloud (ANSSI)
- Conformité: RGS niveau élevé
- Chiffrement: DS Proxy (DINUM)
- Antivirus: ClamAV
- Audit: Trail complet (1 an DB, 5 ans S3)
- ✅ Tous les tests passent (RSpec + Cucumber)
- ✅ StandardRB sans erreurs
- ✅ Brakeman sans warnings critiques
- ✅ Coverage ≥ 80%
Ce projet est distribué sous licence GNU Affero General Public License v3.0 (AGPL-3.0).
- ✅ Liberté de modification : Vous pouvez modifier et adapter le code
- ✅ Liberté de distribution : Vous pouvez redistribuer le code modifié ou non
⚠️ Copyleft réseau : Toute modification déployée sur un réseau (SaaS) doit être partagée- 📄 Code source : Le code source complet doit être accessible aux utilisateurs
Copyright (C) 2025 DINUM (Direction Interministérielle du Numérique)
Pour plus d'informations, consultez le fichier LICENSE ou visitez https://www.gnu.org/licenses/agpl-3.0.html