[đ ] Journal de dĂ©veloppement Secret Messenger #3 : mise Ă jour de la roadmap, phases 1-6
âš RĂ©sumĂ© de GPT ă
Une journĂ©e Ă Ă©tendre avec prĂ©cision le plan dâexĂ©cution du projet Secret Messenger jusquâaux phases 1 Ă 6, Ă faire Ă©voluer la stack de dĂ©veloppement vers Flutter Web + Django, et Ă systĂ©matiser lâinterface dĂ©guisĂ©e ainsi que le flux de dĂ©ploiement serveur.
đ Roadmap
Plan dâexĂ©cution pour une messagerie Flutter Web + Django sĂ©curisĂ©e et dĂ©guisĂ©e, destinĂ©e Ă des personnes trĂšs surveillĂ©es et Ă haut risque en Chine continentale â en particulier des Ă©vadĂ©s nord-corĂ©ens sans papiers â oĂč la dissimulation et la protection des donnĂ©es sont primordiales. Lâapplication est camouflĂ©e en calculatrice en ligne basique tout en fournissant, en dessous, du chat en temps rĂ©el, du partage de fichiers et des diffusions dâinformations Ă sens unique.
â Phase 1 â Planification et architecture
-
đ§ DĂ©finir lâobjectif du projet et le modĂšle de menace
- Public : évadés nord-coréens sans papiers en Chine
- Mission : outil de messagerie sécurisé, déguisé, basé sur le navigateur et sans installation
- Déguisement UX : interface de style calculatrice
-
đ€ SĂ©lectionner un workflow de dev pilotĂ© par AI
- Utiliser GPT-4o + o1 pour la conception, le codegen et lâitĂ©ration
- Suivre le âVibe Codingâ -> dev rapide en langage naturel via AI
-
âïž Finaliser la stack technique
- Frontend : Flutter Web (Material 3, go_router, Riverpod, http)
- Backend : Django + Django REST Framework (Django 5.x)
- Déploiement : conteneur VPS unique (statique + API), avec proxy Cloudflare optionnel
-
đ AcquĂ©rir le domaine
-
Domaine :
___.net - CoĂ»t : â©18,000/an via un bureau dâenregistrement corĂ©en
- Objectif : camouflage visuel en calculatrice en ligne
-
Domaine :
â Phase 2 â Configuration VPS et dĂ©ploiement de base
-
đł CrĂ©er un compte Vultr et payer $10.
-
đ CrĂ©er une instance VPS
- Région : Singapore (meilleure performance GFW sur Vultr)
- OS : Ubuntu 22.04 x64
- Plan : 1vCPU / 1 Go RAM ($5/mois)
- Configuration par clé SSH ou mot de passe
-
đ AccĂ©der et initialiser
ssh root@<IP> apt update && apt upgrade -y apt install python3-pip python3-venv nginx git ufw -y ufw allow OpenSSH && ufw allow 'Nginx Full' && ufw enable -
đ PrĂ©parer le rĂ©pertoire projet et le virtualenv
mkdir /srv/___ && cd /srv/___ python3 -m venv venv && source venv/bin/activate pip install django djangorestframework whitenoise gunicorn
Note : Un proxy Cloudflare est recommandĂ© pour masquer lâIP du VPS et absorber les DDoS.
â Phase 3 â Initialisation du projet (Django + Flutter)
đ§ Configuration Django
-
django-admin startproject stealthcore .- Crée le dossier
stealthcore/etmanage.pydans/srv/___.
- Crée le dossier
-
python manage.py startapp api- Crée le dossier
api/pour votre logique personnalisée (gestion des messages, uploads de fichiers, annonces de diffusion, etc.).
- Crée le dossier
-
Ajouter
'api','rest_framework'ĂINSTALLED_APPS-
Dans
stealthcore/stealthcore/settings.py, par exemple :INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', ## Add 'api', ## Add ]
-
-
python manage.py migrate- Crée les tables initiales de la base de données (SQLite par défaut).
-
python manage.py createsuperuser- Permet dâaccĂ©der au panneau dâadministration de Django (optionnel mais recommandĂ©).
Extensions futures :
/api/messages/pour le chat de groupe avec TTL/api/upload/pour le partage de fichiers (suppression automatique)/api/notice/pour les messages de diffusion administrateur
đ ïž Configuration Flutter Web
-
flutter create ___web- Produit un projet Flutter Web de base.
-
Remplacer lâUI par une mise en page de style calculatrice
-
Exemple minimal dans
main.dart:TextField( onChanged: (val) { // store user input }, ); ElevatedButton( onPressed: () { // call /api/check-trigger/ }, child: Text("Send"), ); -
En pratique, implĂ©menter un pavĂ© numĂ©rique, de lâarithmĂ©tique basique, etc.
-
-
Connecter la requĂȘte POST Ă
/api/check-trigger/-
Avec
http:final response = await http.post( Uri.parse('/api/check-trigger/'), body: {'input': userInput}, ); -
Si valide, le backend Ă©met un jeton -> Flutter charge lâUI cachĂ©e de la messagerie.
-
-
flutter build web- Compile votre app Flutter vers
build/web/.
- Compile votre app Flutter vers
-
Copier les fichiers :
mkdir frontend_static/ cp -r build/web/* frontend_static/- Ceux-ci peuvent ĂȘtre servis par Nginx ou par WhiteNoise de Django.
â Phase 4 â API de dĂ©clenchement et intĂ©gration Flutter
-
Dans Django
api/views.py:from rest_framework.decorators import api_view from rest_framework.response import Response import os @api_view(['POST']) def check_trigger(request): ## Production: store real trigger in os.environ or DB valid_trigger = os.environ.get('___TRIGGER', '1004') if request.data.get('input') == valid_trigger: return Response({'status': 'success', 'token': 'XYZ'}) return Response({'status': 'denied'}) -
Créer
/api/urls.pyet enregistrer la routefrom django.urls import path from .views import check_trigger urlpatterns = [ path('check-trigger/', check_trigger, name='check-trigger'), ] -
Connecter depuis Flutter avec
http.post(...)- Si
"success", stocker le jeton en mĂ©moire (Riverpod) -> afficher lâUI cachĂ©e - Si
"denied", rester une simple calculatrice
- Si
-
VĂ©rifier quâaucune logique sensible nâexiste dans le frontend
- Toutes les valeurs secrÚtes (comme le code de déclenchement) vivent sur le serveur.
â Phase 5 â HĂ©bergement Nginx & HTTPS
-
Créer la config Nginx :
server { listen 80; server_name ___.net; location /static/ { alias /srv/___/frontend_static/; } location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } -
Activer la config et redémarrer :
ln -s /etc/nginx/sites-available/___/etc/nginx/sites-enabled/ nginx -t && systemctl restart nginx -
Activer HTTPS :
apt install certbot python3-certbot-nginx -y certbot --nginx -d ___.net- Installe un certificat Letâs Encrypt pour
___.net. - Ensuite,
https://___.netdoit servir la calculatrice déguisée.
- Installe un certificat Letâs Encrypt pour
Gunicorn & systemd
En production, exécuter Django avec Gunicorn derriÚre Nginx :
gunicorn stealthcore.wsgi:application --bind 127.0.0.1:8000Créer un
/etc/systemd/system/gunicorn.servicepour redémarrer automatiquement au reboot.
â Phase 6 â Tests finaux et durcissement du dĂ©guisement
-
đ§Ș Tester lâUI et le dĂ©clencheur
-
Visiter
https://___.net -
Saisir
1004(ou le vrai déclencheur) -> vérifier{"status":"success"}+ jeton -
Saisie invalide ->
{"status":"denied"}
-
Visiter
-
đ Nettoyer le frontend
- Retirer toutes les rĂ©fĂ©rences Ă âchatâ ou âtriggerâ
- Aucun secret ni jeton hardcodé
- Usage minimal de localStorage pour les sessions éphémÚres
-
đ§ Peaufiner le dĂ©guisement final
- Fausse identité visuelle de calculatrice (titre, icÎne, etc.)
- ArithmĂ©tique rĂ©elle (optionnelle), pour quâelle soit pleinement plausible comme calculatrice
- Alignement UI, thĂšme et style final
-
đ§ CrĂ©er
deploy.md(doc interne)- Déployer, mettre à jour, rollback et vérifier
-
RĂ©sumer les variables dâenvironnement (
___TRIGGER,SECRET_KEY) - Inclure les bonnes pratiques de sécurité et de journalisation
đź FonctionnalitĂ©s futures
- đ„ Info Board (annonces en lecture seule)
- đŹ Group Chat avec suppression des messages basĂ©e sur TTL
- đ File Sharing (expiration automatique pour la sĂ©curitĂ©)
- đ„ Auto-Deletion via cron/commande de gestion pour les donnĂ©es expirĂ©es
- đ Cloudflare Proxy pour masquer lâIP du VPS et attĂ©nuer les DDoS
Utiliser cette roadmap pour guider le dĂ©veloppement de bout en bout de ___ â de la configuration initiale du VPS jusquâĂ la production finale.
đ Journal
Il ne faut pas que jâarrĂȘte de dĂ©velopper. Lâhabitude se dĂ©truit. Dix jours sont dĂ©jĂ passĂ©s.
MĂȘme si ce nâest que dix minutes par jour, il faut absolument dĂ©velopper, et mĂȘme sâil nây a eu que le plus petit changement, Ă©crire un journal de dĂ©veloppement.
đ Git Log
| Date | Type | Message |
|---|---|---|
| 25.04.13 Sun | docs(roadmap) | refine and finalize Phase 1â6 plan for secure disguised messenger (HEAD â main, origin/main) |
| 25.04.03 Thu | docs(roadmap) | edit full Phase 0â3 checklist for Flutter Web + Django deployment |
| 25.04.03 Thu | docs | add dev-principles and roadmap with links from README |
| 25.04.03 Thu | docs(README) | add more details to roadmap |
| 25.04.03 Thu | docs(README) | change backend from Node to Django, and change from Kor to Eng |
| 25.04.02 Wed | docs(README) | add minor details for user |
| 25.04.01 Tue | docs(README) | add description, tech stack, features, roadmap, ⊠|
| 25.04.01 Tue | - | Initial commit |
Laisser un commentaire