SELMai est une application web de gestion d'un système d'échange local (SEL) pour les communes de Martignas-sur-Jalle et Saint-Jean-d'Illac. Cette plateforme permet aux habitants d'échanger services et biens en utilisant une monnaie locale : le radis.
- Place du marché : Consultation et recherche des services disponibles
- Mes services : Création, modification et suppression d'annonces de services
- Négociations : Gestion des négociations d'achat et de vente
- Porte-monnaie : Suivi du solde en radis et historique des transactions
- Communauté : Annuaire des membres avec leurs notes et soldes
- Notifications : Réception de messages sur les négociations et transactions
- Gestion des utilisateurs : Création, modification, suppression et activation/désactivation
- Gestion des soldes : Ajustement des soldes des utilisateurs
- Gestion globale des services : Administration de tous les services
- Gestion des négociations : Supervision et modération
- Notifications : Envoi de messages ciblés ou en diffusion
- Docker et Docker Compose
- Git
-
Clonez le dépôt
git clone https://github.com/[votre-username]/SELMai.git cd SELMai -
Lancez l'application
docker compose up -d
-
Accédez à l'application
- Frontend : http://localhost:3000
- API : http://localhost:3001
- Nom d'utilisateur :
admin - Mot de passe :
1234
L'application utilise une architecture moderne en conteneurs :
SELMai/
├── frontend/ # Application React TypeScript
├── backend/ # API Node.js Express
├── database/ # Scripts SQL MariaDB
└── docker compose.yml # Configuration des conteneurs
Frontend
- React 18 avec TypeScript
- React Router pour la navigation
- Axios pour les requêtes HTTP
- CSS-in-JS pour le styling
Backend
- Node.js avec Express
- JWT pour l'authentification
- bcryptjs pour le hashage des mots de passe
- Middleware de sécurité (helmet, cors, rate limiting)
Base de données
- MariaDB 10.9
- Schema avec tables relationnelles optimisées
DevOps
- Docker et Docker Compose
- Configuration multi-conteneurs
- Volumes persistants pour les données
users: Utilisateurs du systèmecategories: Catégories de servicesservices: Annonces de servicesnegotiations: Négociations entre utilisateurstransactions: Historique des paiementsnotifications: Messages et alertesratings: Évaluations des utilisateurs
Le backend utilise les variables suivantes (configurées dans docker compose.yml) :
DB_HOST=database
DB_PORT=3306
DB_NAME=selmai
DB_USER=selmai_user
DB_PASSWORD=selmai_password
JWT_SECRET=your-secret-key-here- 3000 : Frontend React
- 3001 : Backend API
- 3306 : Base de données MariaDB
POST /api/auth/login: ConnexionGET /api/auth/verify: Vérification du tokenPOST /api/auth/logout: Déconnexion
GET /api/services: Liste des servicesPOST /api/services: Créer un servicePUT /api/services/:id: Modifier un serviceDELETE /api/services/:id: Supprimer un service
GET /api/negotiations: Mes négociationsPOST /api/negotiations: Créer une négociationPUT /api/negotiations/:id/respond: Répondre à une négociation
[Documentation complète de l'API disponible via les commentaires dans le code]
-
Backend
cd backend npm install npm run dev -
Frontend
cd frontend npm install npm start
Frontend
src/
├── components/ # Composants réutilisables
├── pages/ # Pages de l'application
├── context/ # Contextes React (auth, etc.)
├── services/ # Services API
├── types/ # Types TypeScript
└── utils/ # Utilitaires
Backend
backend/
├── routes/ # Routes Express
├── middleware/ # Middlewares personnalisés
├── config/ # Configuration (DB, etc.)
└── server.js # Point d'entrée
- Authentification JWT avec expiration
- Hashage des mots de passe avec bcrypt
- Protection CORS configurée
- Rate limiting pour prévenir les abus
- Validation des données d'entrée
- Protection contre les injections SQL
# Tests backend
cd backend
npm test
# Tests frontend
cd frontend
npm testL'application inclut :
- Logs structurés
- Gestion d'erreurs centralisée
- Health check endpoints
- Métriques de base
-
Configuration
# Copiez et modifiez les variables d'environnement cp .env.example .env -
Build et déploiement
docker compose -f docker compose.prod.yml up -d
- Utilisez des secrets sécurisés pour JWT_SECRET
- Configurez Apache comme reverse proxy (voir DEPLOYMENT.md)
- Activez HTTPS avec Let's Encrypt
- Configurez des sauvegardes automatiques de la DB
- Monitoring et alertes
- Fork le projet
- Créez une branche feature (
git checkout -b feature/AmazingFeature) - Committez vos changements (
git commit -m 'Add AmazingFeature') - Push sur la branche (
git push origin feature/AmazingFeature) - Ouvrez une Pull Request
- ✅ Système d'authentification complet
- ✅ Gestion des services et annonces
- ✅ Négociations entre utilisateurs
- ✅ Système de paiement en radis
- ✅ Interface d'administration
- ✅ Notifications en temps réel
- ✅ Annuaire de la communauté
Consultez les Issues GitHub pour les problèmes connus et les demandes de fonctionnalités.
Pour obtenir de l'aide :
- Consultez cette documentation
- Vérifiez les issues GitHub existantes
- Créez une nouvelle issue si nécessaire
- Équipe SELMai - Développement initial
- Communautés de Martignas-sur-Jalle et Saint-Jean-d'Illac
- Projet open source inspiré des SEL français
- Contributions de la communauté
Ce projet est sous licence Apache 2.0 - voir le fichier LICENSE pour plus de détails.
SELMai - Échanger local, vivre solidaire 🌱