[🛠] Diario de desarrollo de Secret Messenger #3: Actualización del Roadmap: Phase 1-6
✨ Resumen de GPT
Un día dedicado a ampliar con precisión el plan de ejecución de Secret Messenger hasta las fases 1-6, avanzar el stack de desarrollo con Flutter Web + Django y sistematizar la interfaz disfrazada y el flujo de despliegue del servidor.
🚀 Roadmap
Plan de ejecución para un mensajero seguro y disfrazado con Flutter Web + Django, dirigido a personas de alto riesgo y fuertemente vigiladas en China continental —específicamente desertores norcoreanos indocumentados— donde el ocultamiento y la protección de datos son esenciales. La aplicación se camufla como una calculadora online básica, mientras por debajo ofrece chat en tiempo real, intercambio de archivos y difusiones unidireccionales de información.
✅ Phase 1 — Planificación y arquitectura
-
🧠 Definir objetivo del proyecto y modelo de amenazas
- Público: desertores norcoreanos indocumentados en China
- Misión: herramienta de mensajería segura, disfrazada, basada en navegador y sin instalación
- Disfraz UX: interfaz estilo calculadora
-
🤖 Seleccionar flujo de desarrollo impulsado por IA
- Usar GPT-4o + o1 para diseño, generación de código e iteración
- Seguir “Vibe Coding” → desarrollo rápido en lenguaje natural mediante IA
-
⚙️ Finalizar stack técnico
- Frontend: Flutter Web (Material 3, go_router, Riverpod, http)
- Backend: Django + Django REST Framework (Django 5.x)
- Despliegue: un único contenedor VPS (estáticos + API), con proxy Cloudflare opcional
-
🌐 Adquirir dominio
-
Dominio:
ㅇㅇㅇ.net - Costo: ₩18,000/año mediante registrador coreano
- Propósito: camuflaje visual como calculadora online
-
Dominio:
✅ Phase 2 — Configuración de VPS y despliegue base
-
💳 Crear una cuenta en Vultr y pagar $10.
-
🛒 Crear una instancia VPS
- Región: Singapur (mejor rendimiento GFW en Vultr)
- OS: Ubuntu 22.04 x64
- Plan: 1vCPU / 1GB RAM ($5/mes)
- Configuración de clave SSH o acceso por contraseña
-
🔐 Acceder e inicializar
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 -
📁 Preparar directorio del proyecto y virtualenv
mkdir /srv/ㅇㅇㅇ && cd /srv/ㅇㅇㅇ python3 -m venv venv && source venv/bin/activate pip install django djangorestframework whitenoise gunicorn
Nota: Se recomienda un proxy Cloudflare para ocultar la IP del VPS y absorber DDoS.
✅ Phase 3 — Inicialización del proyecto (Django + Flutter)
🔧 Configuración de Django
-
django-admin startproject stealthcore .- Crea la carpeta
stealthcore/ymanage.pydentro de/srv/ㅇㅇㅇ.
- Crea la carpeta
-
python manage.py startapp api- Crea la carpeta
api/para tu lógica personalizada (gestión de mensajes, subida de archivos, avisos broadcast, etc.).
- Crea la carpeta
-
Añadir
'api','rest_framework'aINSTALLED_APPS-
En
stealthcore/stealthcore/settings.py, por ejemplo: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- Crea las tablas iniciales de la base de datos (SQLite por defecto).
-
python manage.py createsuperuser- Te permite acceder al panel de administración de Django (opcional pero recomendado).
Expansiones futuras:
/api/messages/para chat grupal con TTL/api/upload/para compartir archivos (borrado automático)/api/notice/para mensajes broadcast de administrador
🛠️ Configuración de Flutter Web
-
flutter create ㅇㅇㅇ_web- Genera un proyecto básico de Flutter Web.
-
Reemplazar la UI por un layout estilo calculadora
-
Ejemplo mínimo en
main.dart:TextField( onChanged: (val) { // store user input }, ); ElevatedButton( onPressed: () { // call /api/check-trigger/ }, child: Text("Send"), ); -
De forma realista, implementar teclado numérico, aritmética básica, etc.
-
-
Conectar solicitud POST a
/api/check-trigger/-
Usando
http:final response = await http.post( Uri.parse('/api/check-trigger/'), body: {'input': userInput}, ); -
Si es válido, el backend emite un token → Flutter carga la UI oculta del mensajero.
-
-
flutter build web- Compila tu app Flutter a
build/web/.
- Compila tu app Flutter a
-
Copiar archivos:
mkdir frontend_static/ cp -r build/web/* frontend_static/- Esto puede servirse mediante Nginx o WhiteNoise de Django.
✅ Phase 4 — API de disparador e integración con Flutter
-
En 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'}) -
Crear
/api/urls.pyy registrar la rutafrom django.urls import path from .views import check_trigger urlpatterns = [ path('check-trigger/', check_trigger, name='check-trigger'), ] -
Conectar desde Flutter con
http.post(...)- Si es
"success", guardar token en memoria (Riverpod) → mostrar UI oculta - Si es
"denied", permanecer como una simple calculadora
- Si es
-
Asegurar que no haya lógica sensible en el frontend
- Todos los valores secretos (como el código disparador) viven en el servidor.
✅ Phase 5 — Hosting con Nginx y HTTPS
-
Crear configuración de 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; } } -
Habilitar configuración y reiniciar:
ln -s /etc/nginx/sites-available/ㅇㅇㅇ/etc/nginx/sites-enabled/ nginx -t && systemctl restart nginx -
Habilitar HTTPS:
apt install certbot python3-certbot-nginx -y certbot --nginx -d ㅇㅇㅇ.net- Instala el certificado de Let’s Encrypt para
ㅇㅇㅇ.net. - Después,
https://ㅇㅇㅇ.netdebería servir tu calculadora disfrazada.
- Instala el certificado de Let’s Encrypt para
Gunicorn & systemd
En producción, ejecutar Django con Gunicorn detrás de Nginx:
gunicorn stealthcore.wsgi:application --bind 127.0.0.1:8000Crear un
/etc/systemd/system/gunicorn.servicepara reinicio automático al arrancar.
✅ Phase 6 — Pruebas finales y endurecimiento del disfraz
-
🧪 Probar UI y disparador
-
Visitar
https://ㅇㅇㅇ.net -
Introducir
1004(o disparador real) → verificar{"status":"success"}+ token -
Entrada inválida →
{"status":"denied"}
-
Visitar
-
🔒 Limpiar frontend
- Eliminar todas las referencias a “chat” o “trigger”
- Sin secretos ni tokens hardcodeados
- Uso mínimo de localStorage para sesiones efímeras
-
🧊 Pulido final del disfraz
- Branding falso de calculadora (título, icono, etc.)
- Aritmética real (opcional) para que sea plenamente plausible como calculadora
- Alineación de UI, theming y estilos finales
-
🧠 Crear
deploy.md(documento interno)- Cómo desplegar, actualizar, hacer rollback y verificar
-
Resumir variables de entorno (
ㅇㅇㅇ_TRIGGER,SECRET_KEY) - Incluir buenas prácticas de seguridad y logging
🔮 Funciones futuras
- 📥 Panel de información (avisos de solo lectura)
- 💬 Chat grupal con borrado de mensajes basado en TTL
- 📁 Compartir archivos (autoexpiración por seguridad)
- 🔥 Borrado automático mediante cron/management command para datos expirados
- 🌐 Proxy Cloudflare para ocultar la IP del VPS y mitigar DDoS
Usar esta hoja de ruta para guiar el desarrollo end-to-end de ㅇㅇㅇ, desde la configuración inicial del VPS hasta la producción final.
💭 Diario
No debo dejar de desarrollar. El hábito se rompe. Ya pasaron diez días.
Aunque sean solo 10 minutos al día, debo desarrollar sin falta; y aunque haya habido el cambio más pequeño, debo escribir un diario de desarrollo.
👀 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 |
Deja un comentario