[🛠] Diario de desarrollo de Secret Messenger #1: Flutter Web + Node (Prueba de Vibe Coding)
✨ Resumen de GPT
Un día dedicado a completar la arquitectura técnica y el diseño de seguridad de un mensajero centrado en la seguridad para desertores norcoreanos en China, y a escribir un plan de MVP basado en Flutter Web + Node.
🧮 Secret Messenger
Es un mensajero para usuarios desertores norcoreanos que viven en China sin documento de identidad oficial.
- 📱 Accesible desde el navegador sin instalación
- 💬 Capaz de recibir información, mantener conversaciones secretas y compartir archivos
- 🛡️ Una herramienta de comunicación centrada en la seguridad y basada en Flutter Web
Este proyecto es un experimento técnico para la protección de derechos humanos y el apoyo a la supervivencia, no para fines políticos. No presupone distribución pública ni uso comercial. (🔒 Se gestiona únicamente en un repositorio privado de GitHub.)
📌 Resumen del proyecto
| Elemento | Contenido |
|---|---|
| Usuarios | Desertores norcoreanos en China, con alfabetización digital muy baja y teléfonos vigilados por las autoridades de seguridad pública |
| Objetivo | Compartir información, chat secreto y compartir archivos de forma segura |
| Forma | SPA de Flutter Web basada en navegador, sin necesidad de instalación |
| Dominio | https://???.net (disfrazado como interfaz de calculadora) |
| Estrategia de disfraz de UI | Primera pantalla con apariencia de calculadora → al ingresar una operación específica, se envía una solicitud de entrada al servidor |
| Método de entrada | Flutter Web hace POST de la clave de entrada al servidor, y el servidor decide si emite un token de acceso |
| Estrategia de seguridad del código | Las condiciones y la lógica sensibles no se incluyen en el cliente; todas las decisiones se toman del lado del servidor |
| Prioridad de funciones | ① Recepción de información → ② Chat → ③ Compartir archivos |
🧪 Proyecto experimental de Vibe Coding
Al mismo tiempo, este proyecto es un MVP que experimenta la aplicabilidad práctica y los límites de un método de desarrollo llamado Vibe Coding.
- El diseño y la implementación avanzan en lenguaje natural, y la mayor parte de la generación de código se realiza con ayuda de IA.
- El usuario desempeña más bien el papel de “diseñador/coordinador” que el de escribir el código directamente.
- El objetivo es evaluar en la realidad la eficiencia y los riesgos del desarrollo impulsado por IA.
Con este experimento quiero explorar el futuro de los métodos de desarrollo basados en IA y verificar si alcanzan un nivel aplicable a un proyecto real de derechos humanos.
⚙️ Stack técnico
🔷 Frontend (Flutter Web)
-
Flutter 3.x(Web build) -
Material 3(óptimo para disfraz de UI de calculadora) -
go_router(transiciones de página y configuración de entrada oculta) -
Riverpod(gestión de estado: UUID, sesiones, etc.) -
http(comunicación REST API)
🔍 Estrategia de UI
- Pantalla inicial:
TextField + cuadrícula de botonescon forma de calculadora - Entrada de una operación específica → envío al servidor → si es válida, se permite la entrada interna
- El cliente no contiene el disparador de entrada ni su lógica
🔷 Backend (Node.js + Express)
Node.js 18+-
Express.js(servidor REST API) -
SQLite(DB local basada en archivo) -
Multer(subida de archivos) -
node-cron(programador de borrado basado en TTL) - Middleware de seguridad como
CORS,helmetyrate-limit
📁 API principales
-
POST /check-trigger- El servidor verifica la cadena recibida
- Si coincide con una condición de disparador registrada previamente, emite un token de sesión
-
GET /session/:ido/inbox/:key- Solo los usuarios con una clave de sesión emitida por el servidor pueden acceder a las funciones internas
-
POST /message,GET /messages- Guardar/consultar mensajes basados en TTL
-
POST /upload,GET /file/:id- Soporte para subida de archivos y borrado automático
🔷 Infraestructura / Despliegue
-
Docker(consistencia y portabilidad del entorno del servidor) -
Ubuntu 22.04 LTS(Vultr VPS) -
Vultr VPS (región de Hong Kong)— para asegurar estabilidad de acceso desde China -
Cloudflare(proxy DNS + SSL + ocultación de IP) - Dominio:
???.net— dominio para disfraz de calculadora
🔐 Estrategia de seguridad
| Elemento | Descripción |
|---|---|
| Separación de código | El código sensible, como la lógica de entrada y los disparadores, es exclusivo del servidor |
| Rol limitado de Flutter Web | Solo renderiza la UI y envía la entrada |
| HTTPS obligatorio | Cloudflare + Let’s Encrypt |
| Proxy de Cloudflare | Oculta la IP del servidor y ayuda a defender contra DDoS |
| Restricción CORS | Bloquea solicitudes de dominios no permitidos |
| Política no-cache | Aplica encabezados no-store a todas las respuestas |
| TTL de mensajes | Borrado automático basado en la hora de creación |
| TTL de archivos | Borrado dentro de un tiempo definido después de la subida, gestionado con node-cron |
| Restricción de almacenamiento local | Minimizar localStorage/cookies o no usarlas |
🗂️ Lista de funciones
| Función | Estado | Descripción |
|---|---|---|
| 🧊 UI de disfraz | 🟢 En implementación | Disfrazada como UI de calculadora, con condición de entrada aplicada a través del servidor |
| 📥 Recepción de información | 🟢 En preparación | Avisos del administrador (solo lectura) |
| 💬 Sala de chat | 🟡 Prevista | Chat grupal anónimo (basado en TTL) |
| 📁 Compartir archivos | 🟡 Previsto | Compartir archivos con borrado automático configurado |
| 🔥 Sistema de borrado | 🟡 Previsto | Automatización del borrado TTL de mensajes/archivos |
🚀 Hoja de ruta de desarrollo
- ⚙️ Diseñar la estructura del sistema y establecer el modelo de seguridad
- 📌 Confirmar el stack técnico + decidir la estrategia de disfraz
-
🌐 Comprar dominio (
???.net) - 🔨 Scaffold de calculadora en Flutter Web
- 🔨 Scaffold de API Express + SQLite
- 🔐 Construir la estructura de procesamiento de la clave de entrada en el servidor
- 📦 Docker + automatización de despliegue
- 🌐 Despliegue en VPS + integración con Cloudflare
- 🧪 Pruebas del MVP
- 🎯 Estabilización y distribución interna
📄 Notas
- Nunca se debe commitear código o información sensible en GitHub.
- El código Flutter para despliegue va al directorio
build/, y el código del servidor se ejecuta solo dentro del contenedor Docker. - Toda comunicación API se cifra mediante HTTPS, y los datos de usuario se descartan automáticamente después del TTL configurado.
- La información sensible, como las claves de entrada de la calculadora y los UUID de usuario, nunca se incluye en el frontend; se procesa únicamente a partir de claves de verificación privadas dentro del servidor.
- La verificación de condiciones de entrada y la identificación de usuarios se componen como lógica de verificación unidireccional ejecutada solo del lado del servidor, de modo que aunque el código de Flutter Web quede expuesto, la información de seguridad no se revela al exterior.
👤 Nota del desarrollador
Este proyecto no es una simple app. Lo empiezo con la idea de que, para algunas personas, puede ser una herramienta de supervivencia conectada con la vida.
Que la tecnología no sea una herramienta de vigilancia, sino una herramienta para la libertad.
💭 Diario
¿Para qué vivo? ¿Riqueza y fama? No. Ese tipo de cosas, desde el principio, son espejismos que no pueden ser objetivos. Son solo medios.
¿Qué vida deseo de verdad? … No sabría definirla. En cualquier caso, está claro que es una vida incluida dentro de la gran categoría de amar a Dios / amar al prójimo.
En fin, viendo que este proyecto hace latir mi corazón y me da una sensación de entusiasmo, seguramente este tipo de cosas es lo que más quería hacer ahora mismo.
Así que, por ahora, empecemos por esto.
Deja un comentario