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.