La carte interactive de la communauté tech au Congo.
À propos · Fonctionnalités · Architecture · Démarrage rapide · Contribuer
BisoMapTech ("biso" = "nous" en Lingala) est une plateforme open source qui cartographie et connecte la communauté informatique de la République du Congo : développeurs, administrateurs systèmes & réseaux, professionnels de la cybersécurité, data engineers, DevOps, designers, formateurs et bien d'autres.
L'objectif est triple :
| 🗺️ Visibilité | 🤝 Connexion | 🌱 Représentation |
|---|---|---|
| Rendre lisible la richesse de l'écosystème tech congolais | Favoriser les rencontres, le mentorat et les collaborations | Montrer que la tech au Congo ne se limite pas à Brazzaville et inspirer les prochaines générations |
- 🗺️ Carte interactive (Leaflet) des contributeurs et des lieux tech du Congo
- 👤 Profils détaillés avec compétences, stack, projets et liens GitHub
- 🔐 Authentification sécurisée via Supabase Auth
- 🔍 Recherche et filtres par ville, métier, technologie, niveau d'expérience
- 💬 Messagerie chiffrée de bout en bout (E2EE — ECDH P-256 + AES-GCM 256)
- 🔔 Notifications par e-mail sur nouveaux messages (Edge Functions)
- 🏢 Pages lieux (coworking, écoles, communautés, entreprises…)
- ⚙️ Synchronisation automatique des dépôts GitHub d'un profil
- 🛡️ Espace d'administration pour la modération
- 📱 Responsive — optimisé mobile, mode clair / sombre
| Domaine | Technologie |
|---|---|
| Build / Dev server | Vite 7 |
| Framework UI | React 19 + TypeScript 5.9 |
| Routing | React Router 6 |
| Styling | Tailwind CSS 4 + shadcn/ui (Radix UI) |
| State management | Zustand |
| Formulaires | React Hook Form + Zod |
| Carte | Leaflet + React Leaflet |
| Graphiques | Recharts |
| Backend | Supabase (PostgreSQL, Auth, Realtime, Storage, Edge Functions) |
| Tests | Vitest |
| Déploiement | Vercel |
BisoMapTech/
├── public/ # Assets statiques (logo, favicons)
├── src/
│ ├── components/ # Composants UI réutilisables
│ │ ├── filters/ # Panneaux de filtres
│ │ ├── layout/ # Navbar, Footer, Layout global
│ │ ├── map/ # Couche Leaflet et marqueurs
│ │ ├── profile/ # Formulaires et cartes de profil
│ │ └── ui/ # shadcn/ui (Button, Input, Avatar…)
│ ├── pages/ # Pages applicatives routées
│ ├── hooks/ # Hooks React partagés
│ ├── lib/ # Clients (Supabase, E2EE service) et utilitaires
│ ├── store/ # Stores Zustand (auth, filtres, unread…)
│ ├── types/ # Types TypeScript partagés
│ ├── App.tsx # Configuration des routes
│ └── main.tsx # Point d'entrée Vite
├── supabase/
│ ├── migrations/ # Schéma SQL versionné (Row Level Security)
│ └── functions/ # Edge Functions Deno
│ ├── send-message-notification/
│ └── sync-github-repos/
├── index.html
├── vite.config.ts
└── vercel.json
graph TD
A[Utilisateur / Navigateur] -->|Auth JWT| B[Supabase Auth]
A -->|Requêtes REST / Realtime| C[Supabase Database\nPostgreSQL + RLS]
A -->|Upload fichiers chiffrés| D[Supabase Storage]
A -->|Appels SDK| E[Edge Functions Deno]
E -->|Email| F[Service SMTP]
E -->|API| G[GitHub API]
C -->|Websocket Realtime| A
style A fill:#1e293b,color:#e2e8f0
style B fill:#3ecf8e,color:#000
style C fill:#3ecf8e,color:#000
style D fill:#3ecf8e,color:#000
style E fill:#646cff,color:#fff
sequenceDiagram
participant Alice
participant Supabase
participant Bob
Alice->>Supabase: Récupère clé publique de Bob (JWK)
Alice->>Alice: Dérive secret partagé ECDH(priv_Alice, pub_Bob)
Alice->>Alice: Chiffre le message AES-GCM 256 bits
Alice->>Supabase: INSERT message { cipherText, iv }
Supabase-->>Bob: Realtime → nouveau message
Bob->>Supabase: Récupère clé publique d'Alice (JWK)
Bob->>Bob: Dérive secret partagé ECDH(priv_Bob, pub_Alice)
Bob->>Bob: Déchiffre AES-GCM → texte clair ✅
Note over Alice,Bob: Les clés privées ne quittent jamais le navigateur (IndexedDB)
- Node.js 20+ (Vite 7 requiert Node ≥ 20.19)
- npm (ou pnpm / yarn / bun)
- Un projet Supabase (gratuit) pour la base de données et l'auth
# 1. Cloner le dépôt
git clone https://github.com/KalelDAMBA/BisoMapTech.git
cd BisoMapTech
# 2. Installer les dépendances
npm install
# 3. Configurer les variables d'environnement
cp .env.example .env.local
# → Renseigner VITE_SUPABASE_URL et VITE_SUPABASE_ANON_KEY
# 4. Lancer le serveur de développement
npm run devL'application est disponible sur http://localhost:5173.
# Lier votre projet Supabase
supabase link --project-ref <votre_project_ref>
# Appliquer les migrations SQL
supabase db push
# Déployer les Edge Functions
supabase functions deploy send-message-notification
supabase functions deploy sync-github-repos
⚠️ Ne committez jamais vos clés. Le fichier.env.localest ignoré par Git.
| Variable | Obligatoire | Description |
|---|---|---|
VITE_SUPABASE_URL |
✅ | URL du projet Supabase |
VITE_SUPABASE_ANON_KEY |
✅ | Clé publique (anon) du projet Supabase |
| Commande | Description |
|---|---|
npm run dev |
Démarre le serveur de développement Vite (HMR) |
npm run build |
Vérifie les types TypeScript et génère la build de production |
npm run preview |
Sert localement la build de production |
npm run typecheck |
Vérification des types TypeScript uniquement |
npm run test |
Exécute la suite de tests Vitest |
Toutes les contributions sont les bienvenues, quel que soit votre profil dans l'informatique.
L'ajout de profil se fait directement depuis l'application :
- Rendez-vous sur l'instance déployée (ou votre instance locale).
- Créez un compte via la page Connexion.
- Suivez le parcours d'onboarding pour renseigner votre métier, votre stack, votre ville et un point de localisation public.
- Votre profil apparaît sur la carte une fois publié.
flowchart LR
A[Fork le dépôt] --> B[Créer une branche\nfeat/ma-fonctionnalite]
B --> C[Développer\n+ Tests]
C --> D[npm run typecheck\nnpm run build\nnpm run test]
D --> E[Ouvrir une Pull Request\nvers main]
E --> F[Review & Merge ✅]
- Forkez le dépôt et créez une branche depuis
main:git checkout -b feat/ma-fonctionnalite - Respectez la structure des dossiers et le style de code existant (TypeScript strict, composants fonctionnels, Tailwind utility-first)
- Vérifiez la build et les tests avant de pousser :
npm run typecheck npm run build npm run test - Ouvrez une Pull Request avec un titre clair au format Conventional Commits (
feat:,fix:,docs:,refactor:…)
Développement · Systèmes & Réseaux · Cybersécurité · Data / IA · DevOps / Cloud · Support / Helpdesk · Design / UX · Hardware / Électronique · Gestion de projet / Product · Enseignement / Formation · No-code / Automatisation
Pour protéger les contributeurs, quelques règles s'appliquent à toute donnée de localisation publiée :
- ✅ Utilisez les coordonnées du centre de votre ville ou d'un point de repère public (mairie, place, monument, université)
- ❌ N'indiquez jamais votre adresse personnelle ni celle de votre employeur
- ❌ Ne réutilisez pas les coordonnées d'un autre contributeur
💡 gps-coordinates.net permet de trouver rapidement les coordonnées d'un point public.
| Ville | Département | Latitude | Longitude |
|---|---|---|---|
| Brazzaville | Brazzaville | -4.2634 | 15.2429 |
| Pointe-Noire | Pointe-Noire | -4.7889 | 11.8653 |
| Dolisie | Niari | -4.1995 | 12.6667 |
| Nkayi | Bouenza | -4.1842 | 13.2883 |
| Madingou | Bouenza | -4.1550 | 13.5500 |
| Owando | Cuvette | -0.4819 | 15.9000 |
| Ouesso | Sangha | 1.6136 | 16.0517 |
| Impfondo | Likouala | 1.6186 | 18.0622 |
Pour signaler une vulnérabilité de sécurité, ouvrez une issue GitHub marquée security.
- Documentation publique de l'API (schéma RLS, tables, vues)
- Internationalisation (FR / EN / Lingala)
- Application mobile (PWA puis natif)
- Statistiques publiques de l'écosystème tech congolais
- Annuaire des entreprises et structures tech
- Programme de mentorat intégré
- Système de badges et de reconnaissance communautaire
Les suggestions sont les bienvenues : ouvrez une issue pour en discuter.
Distribué sous licence MIT. Vous êtes libre d'utiliser, modifier et redistribuer ce projet en conservant la mention de copyright d'origine.
Fait avec ❤️ par et pour la communauté tech congolaise
BisoMapTech — Ensemble, on va plus loin.