{"id":31807872,"url":"https://github.com/singman33/selmai","last_synced_at":"2026-04-02T03:04:14.770Z","repository":{"id":312713840,"uuid":"1038221748","full_name":"Singman33/SELMai","owner":"Singman33","description":"SELMai - Système d'échange local pour Martignas / Saint Jean d'Illac. Application web de gestion d'un SEL avec monnaie locale (radis), services, négociations et communauté.","archived":false,"fork":false,"pushed_at":"2025-09-01T13:54:33.000Z","size":404,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-01T15:30:20.438Z","etag":null,"topics":["community","docker","express","local-exchange","mariadb","nodejs","react","sel","typescript"],"latest_commit_sha":null,"homepage":"http://localhost:3000","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Singman33.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-14T20:24:19.000Z","updated_at":"2025-09-01T13:54:37.000Z","dependencies_parsed_at":"2025-09-01T15:30:24.265Z","dependency_job_id":"d6c4419d-5dff-4874-a142-78b5c60b32ee","html_url":"https://github.com/Singman33/SELMai","commit_stats":null,"previous_names":["singman33/selmai"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/Singman33/SELMai","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Singman33%2FSELMai","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Singman33%2FSELMai/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Singman33%2FSELMai/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Singman33%2FSELMai/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Singman33","download_url":"https://codeload.github.com/Singman33/SELMai/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Singman33%2FSELMai/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279006244,"owners_count":26084061,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-11T02:00:06.511Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["community","docker","express","local-exchange","mariadb","nodejs","react","sel","typescript"],"created_at":"2025-10-11T04:38:28.759Z","updated_at":"2025-12-30T21:06:31.084Z","avatar_url":"https://github.com/Singman33.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SELMai - Système d'échange local Martignas / Saint Jean d'Illac\n\nSELMai 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.\n\n## 🌟 Fonctionnalités\n\n### Pour les utilisateurs\n- **Place du marché** : Consultation et recherche des services disponibles\n- **Mes services** : Création, modification et suppression d'annonces de services\n- **Négociations** : Gestion des négociations d'achat et de vente\n- **Porte-monnaie** : Suivi du solde en radis et historique des transactions\n- **Communauté** : Annuaire des membres avec leurs notes et soldes\n- **Notifications** : Réception de messages sur les négociations et transactions\n\n### Pour les administrateurs\n- **Gestion des utilisateurs** : Création, modification, suppression et activation/désactivation\n- **Gestion des soldes** : Ajustement des soldes des utilisateurs\n- **Gestion globale des services** : Administration de tous les services\n- **Gestion des négociations** : Supervision et modération\n- **Notifications** : Envoi de messages ciblés ou en diffusion\n\n## 🚀 Démarrage rapide\n\n### Prérequis\n- Docker et Docker Compose\n- Git\n\n### Installation\n\n1. **Clonez le dépôt**\n   ```bash\n   git clone https://github.com/[votre-username]/SELMai.git\n   cd SELMai\n   ```\n\n2. **Lancez l'application**\n   ```bash\n   docker compose up -d\n   ```\n\n3. **Accédez à l'application**\n   - Frontend : http://localhost:3000\n   - API : http://localhost:3001\n\n### Compte administrateur par défaut\n- **Nom d'utilisateur** : `admin`\n- **Mot de passe** : `1234`\n\n## 🏗️ Architecture\n\nL'application utilise une architecture moderne en conteneurs :\n\n```\nSELMai/\n├── frontend/          # Application React TypeScript\n├── backend/           # API Node.js Express\n├── database/          # Scripts SQL MariaDB\n└── docker compose.yml # Configuration des conteneurs\n```\n\n### Technologies utilisées\n\n**Frontend**\n- React 18 avec TypeScript\n- React Router pour la navigation\n- Axios pour les requêtes HTTP\n- CSS-in-JS pour le styling\n\n**Backend**\n- Node.js avec Express\n- JWT pour l'authentification\n- bcryptjs pour le hashage des mots de passe\n- Middleware de sécurité (helmet, cors, rate limiting)\n\n**Base de données**\n- MariaDB 10.9\n- Schema avec tables relationnelles optimisées\n\n**DevOps**\n- Docker et Docker Compose\n- Configuration multi-conteneurs\n- Volumes persistants pour les données\n\n## 📊 Structure de la base de données\n\n### Tables principales\n- `users` : Utilisateurs du système\n- `categories` : Catégories de services\n- `services` : Annonces de services\n- `negotiations` : Négociations entre utilisateurs\n- `transactions` : Historique des paiements\n- `notifications` : Messages et alertes\n- `ratings` : Évaluations des utilisateurs\n\n## 🔧 Configuration\n\n### Variables d'environnement\n\nLe backend utilise les variables suivantes (configurées dans docker compose.yml) :\n\n```bash\nDB_HOST=database\nDB_PORT=3306\nDB_NAME=selmai\nDB_USER=selmai_user\nDB_PASSWORD=selmai_password\nJWT_SECRET=your-secret-key-here\n```\n\n### Ports utilisés\n- **3000** : Frontend React\n- **3001** : Backend API\n- **3306** : Base de données MariaDB\n\n## 📋 API Documentation\n\n### Authentification\n- `POST /api/auth/login` : Connexion\n- `GET /api/auth/verify` : Vérification du token\n- `POST /api/auth/logout` : Déconnexion\n\n### Services\n- `GET /api/services` : Liste des services\n- `POST /api/services` : Créer un service\n- `PUT /api/services/:id` : Modifier un service\n- `DELETE /api/services/:id` : Supprimer un service\n\n### Négociations\n- `GET /api/negotiations` : Mes négociations\n- `POST /api/negotiations` : Créer une négociation\n- `PUT /api/negotiations/:id/respond` : Répondre à une négociation\n\n[Documentation complète de l'API disponible via les commentaires dans le code]\n\n## 🛠️ Développement\n\n### Démarrage en mode développement\n\n1. **Backend**\n   ```bash\n   cd backend\n   npm install\n   npm run dev\n   ```\n\n2. **Frontend**\n   ```bash\n   cd frontend\n   npm install\n   npm start\n   ```\n\n### Structure du code\n\n**Frontend**\n```\nsrc/\n├── components/     # Composants réutilisables\n├── pages/         # Pages de l'application\n├── context/       # Contextes React (auth, etc.)\n├── services/      # Services API\n├── types/         # Types TypeScript\n└── utils/         # Utilitaires\n```\n\n**Backend**\n```\nbackend/\n├── routes/        # Routes Express\n├── middleware/    # Middlewares personnalisés\n├── config/        # Configuration (DB, etc.)\n└── server.js      # Point d'entrée\n```\n\n## 🔒 Sécurité\n\n- Authentification JWT avec expiration\n- Hashage des mots de passe avec bcrypt\n- Protection CORS configurée\n- Rate limiting pour prévenir les abus\n- Validation des données d'entrée\n- Protection contre les injections SQL\n\n## 🧪 Tests\n\n```bash\n# Tests backend\ncd backend\nnpm test\n\n# Tests frontend\ncd frontend\nnpm test\n```\n\n## 📈 Monitoring\n\nL'application inclut :\n- Logs structurés\n- Gestion d'erreurs centralisée\n- Health check endpoints\n- Métriques de base\n\n## 🚀 Déploiement\n\n### Production avec Docker\n\n1. **Configuration**\n   ```bash\n   # Copiez et modifiez les variables d'environnement\n   cp .env.example .env\n   ```\n\n2. **Build et déploiement**\n   ```bash\n   docker compose -f docker compose.prod.yml up -d\n   ```\n\n### Recommandations production\n- Utilisez des secrets sécurisés pour JWT_SECRET\n- Configurez Apache comme reverse proxy (voir DEPLOYMENT.md)\n- Activez HTTPS avec Let's Encrypt\n- Configurez des sauvegardes automatiques de la DB\n- Monitoring et alertes\n\n## 🤝 Contribution\n\n1. Fork le projet\n2. Créez une branche feature (`git checkout -b feature/AmazingFeature`)\n3. Committez vos changements (`git commit -m 'Add AmazingFeature'`)\n4. Push sur la branche (`git push origin feature/AmazingFeature`)\n5. Ouvrez une Pull Request\n\n## 📝 Changelog\n\n### Version 1.0.0 (2025)\n- ✅ Système d'authentification complet\n- ✅ Gestion des services et annonces\n- ✅ Négociations entre utilisateurs\n- ✅ Système de paiement en radis\n- ✅ Interface d'administration\n- ✅ Notifications en temps réel\n- ✅ Annuaire de la communauté\n\n## 🐛 Problèmes connus\n\nConsultez les [Issues GitHub](https://github.com/[votre-username]/SELMai/issues) pour les problèmes connus et les demandes de fonctionnalités.\n\n## 📞 Support\n\nPour obtenir de l'aide :\n1. Consultez cette documentation\n2. Vérifiez les issues GitHub existantes\n3. Créez une nouvelle issue si nécessaire\n\n## 👥 Auteurs\n\n- **Équipe SELMai** - Développement initial\n\n## 🙏 Remerciements\n\n- Communautés de Martignas-sur-Jalle et Saint-Jean-d'Illac\n- Projet open source inspiré des SEL français\n- Contributions de la communauté\n\n## 📄 Licence\n\nCe projet est sous licence Apache 2.0 - voir le fichier [LICENSE](LICENSE) pour plus de détails.\n\n---\n\n**SELMai** - *Échanger local, vivre solidaire* 🌱","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsingman33%2Fselmai","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsingman33%2Fselmai","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsingman33%2Fselmai/lists"}