App Hybride · React + Capacitor — Projet Personnel

Survival Codex

Application encyclopédie "Offline-first" dédiée à la survie et à la reconstruction de la civilisation. Elle embarque une base de connaissances locale, un assistant IA (Charlie) et un système de chat P2P Bluetooth.

En développement React + Capacitor Supabase Google Gemini BLE P2P Android

3 piliers, zéro cloud requis

📖 Le Codex

Base de connaissances d'articles techniques sur la survie, stockés localement sur le téléphone. Fonctionne sans connexion internet.

🤖 Charlie (IA)

Assistant IA capable de répondre aux questions contextuelles. Alimenté par Google Gemini 2.5 Pro (nécessite internet pour le moment).

📡 Chat P2P

Communication entre appareils proches via Bluetooth Low Energy. Aucune connexion internet nécessaire — le walkie-talkie numérique.

App hybride Web → Android

C'est une application hybride : un site React "encapsulé" dans une app native Android via Capacitor. Le meilleur des deux mondes — la vitesse de développement web avec l'accès natif au hardware (Bluetooth, fichiers, etc.).

DossierDescription
src/Code de l'application — interface React, composants, logique
src/components/Briques visuelles (ArticleCard, Header, etc.)
scripts/L'usine à contenu — scripts Python qui transforment des fichiers texte en base de données
supabase/Configuration de la base de données (Backend)
android/Projet natif Android généré par Capacitor
.envClés secrètes (Supabase, Google AI) — non versionné

Communication Bluetooth sans internet

ComposantTechnologie
Central (scan, connect, write)@capacitor-community/bluetooth-le@7.2.0
Peripheral (GATT server)cordova-plugin-ble-peripheral@1.0.0 (patché)
UUIDsService + Characteristic personnalisés

✅ Fonctionnel

  • Advertising BLE sur les deux téléphones (S21 Ultra + Note 9)
  • Scan et détection mutuelle — les appareils se voient dans le radar
  • Connexion GATT entre Central et Peripheral
  • Envoi et réception de messages confirmés côté transport

🔄 En cours

  • Affichage messages reçus dans le chat UI — problème de mapping deviceId (adresses BLE randomisées par Android)
  • Chat bidirectionnel — non testé dans les deux sens

⚠️ Notes techniques

  • Plugin cordova-plugin-ble-peripheral fortement patché (patch-package)
  • npx cap sync écrase le Java du plugin — d'où le script postinstall
  • Permissions BLUETOOTH_ADVERTISE pour Android 12+

De Markdown à Supabase

On ne modifie jamais la base de données à la main. On édite des fichiers Markdown, puis un script Python transforme tout en SQL.

1. Rédiger en Markdown

Créer un fichier .md avec titre, introduction, matériel requis, étapes, avertissements. Organisé par catégorie (Alimentation, Abri, Eau…).

2. Script Python

generate_v14_import.py scanne les dossiers, lit chaque fichier, nettoie via Regex, structure en JSON et génère un fichier SQL d'insertion.

3. Import Supabase

Coller le SQL généré dans l'éditeur SQL de Supabase et cliquer RUN. Les fiches apparaissent immédiatement dans l'application.

Traduction automatique par IA

Le projet est multilingue. Des scripts Python lisent les fiches françaises, demandent à Google Gemini de les traduire et génèrent le SQL correspondant pour chaque langue cible.

Français (source) Anglais Espagnol + autres langues

Technologies utilisées

ComposantTechnologie
FrontendReact + Vite
MobileCapacitor (Android natif)
Base de donnéesSupabase (PostgreSQL)
IAGoogle Gemini 2.5 Pro
BLE Central@capacitor-community/bluetooth-le
BLE Peripheralcordova-plugin-ble-peripheral (patché)
ContenuMarkdown → Python → SQL
BuildAndroid Studio → APK

Workflow mobile

1. Modifier le code dans src/

2. npm run mobile:sync pour synchroniser Capacitor

3. npx cap open android pour ouvrir Android Studio

4. Build → Build APK → installer sur téléphone

React Vite Capacitor Supabase Gemini Python Bluetooth LE

Encyclopédie de survie accessible à tous

Créé par Mathieu — Irkeedia. Offline-first, open source.

Voir tous les projets