Skip to content

BTCWFD/Speack3

Repository files navigation

Speack3 - Aplicación de Chat Cifrado E2E

🔒 Mensajería Segura con Cifrado End-to-End

React Native Node.js Signal Protocol MongoDB

📋 Descripción

Speack3 es una aplicación de mensajería segura diseñada para grupos pequeños (~30 personas) con cifrado End-to-End usando Signal Protocol, el mismo sistema de cifrado utilizado por WhatsApp y Signal.

✨ Características Principales

  • 🔐 Cifrado E2E con Signal Protocol
  • 💬 Chat 1-a-1 privado y seguro
  • 👥 Grupos privados con administración de miembros
  • Tiempo Real con WebSocket
  • 📱 Multiplataforma (Android e iOS)
  • 🖥️ Servidor Propio (self-hosted)
  • Confirmaciones de lectura y entrega
  • ⌨️ Indicadores de escritura
  • 🔑 Almacenamiento Seguro de claves

🏗️ Arquitectura

┌─────────────────┐         ┌──────────────────┐
│ React Native    │  HTTP   │   Node.js +      │
│ Mobile App      │◄────────┤   Express        │
│                 │         │                  │
│ - Signal E2E    │  WSS    │   Socket.io      │
│ - React Nav     │◄────────┤                  │
│ - AsyncStorage  │         │   MongoDB        │
│ - Keychain      │         │   JWT Auth       │
└─────────────────┘         └──────────────────┘

🚀 Inicio Rápido

Prerrequisitos

  • Node.js 18+
  • MongoDB 5.0+
  • Android Studio (para Android)
  • Xcode (para iOS, solo macOS)

1. Configurar el Servidor

# Navegar al directorio del servidor
cd server

# Instalar dependencias
npm install

# Configurar variables de entorno
copy .env.example .env
# Edita .env con tus configuraciones

# Iniciar servidor
npm run dev

Ver SERVER_SETUP.md para instrucciones detalladas.

2. Configurar la App Móvil

# Navegar al directorio móvil
cd mobile

# Instalar dependencias
npm install

# Configurar API URL
# Edita src/config/api.js con la IP de tu servidor

# Android
npm run android

# iOS (solo macOS)
npm run ios

Ver BUILD_GUIDE.md para construcción de APK/IPA.

📱 Capturas de Pantalla

Login Chat List Conversación

🔐 Seguridad

Speack3 implementa múltiples capas de seguridad:

Cifrado End-to-End (E2E)

  • Signal Protocol con Double Ratchet Algorithm
  • Forward Secrecy: Cada mensaje usa claves efímeras únicas
  • Claves Privadas: Nunca salen del dispositivo del usuario

Almacenamiento Seguro

  • iOS Keychain / Android Keystore para claves privadas
  • bcrypt para hashing de passwords (10 rondas)
  • JWT con tokens de acceso (1h) y refresh (7d)

Transporte Seguro

  • HTTPS para API REST
  • WSS (WebSocket Secure) para mensajería en tiempo real
  • CORS configurado para orígenes permitidos

Ver SECURITY_GUIDE.md para detalles completos.

📦 Estructura del Proyecto

Speack3/
├── server/                 # Backend Node.js
│   ├── api/               # REST API endpoints
│   ├── models/            # MongoDB models
│   ├── sockets/           # WebSocket handlers
│   ├── middleware/        # Auth middleware
│   └── server.js          # Entry point
│
├── mobile/                # React Native App
│   ├── src/
│   │   ├── screens/       # Pantallas (Login, Chat, etc.)
│   │   ├── components/    # Componentes reutilizables
│   │   ├── services/      # Signal, API, Socket, Storage
│   │   ├── context/       # React Context (Auth)
│   │   ├── navigation/    # React Navigation
│   │   └── config/        # Configuración
│   ├── android/           # Proyecto Android nativo
│   ├── ios/               # Proyecto iOS nativo
│   └── App.js             # Entry point
│
├── SERVER_SETUP.md        # Guía configuración servidor
├── BUILD_GUIDE.md         # Guía construcción app
├── SECURITY_GUIDE.md      # Guía de seguridad
└── README.md              # Este archivo

🛠️ Stack Tecnológico

Backend

  • Node.js + Express - Servidor HTTP/REST API
  • Socket.io - WebSocket para tiempo real
  • MongoDB + Mongoose - Base de datos
  • JWT - Autenticación
  • bcrypt - Hashing de passwords

Frontend (Mobile)

  • React Native 0.73 - Framework móvil
  • React Navigation - Navegación
  • React Native Paper - UI Components (Material Design)
  • Signal Protocol - Cifrado E2E
  • Socket.io Client - WebSocket
  • AsyncStorage - Persistencia local
  • React Native Keychain - Almacenamiento seguro

📚 Documentación

Documento Descripción
SERVER_SETUP.md Configuración e instalación del servidor
BUILD_GUIDE.md Construcción de APK/IPA y distribución
SECURITY_GUIDE.md Detalles de seguridad y Signal Protocol

🧪 Testing

Servidor

cd server
npm test

App Móvil

cd mobile
npm test

🚢 Despliegue

Servidor

Para producción, se recomienda:

  1. Cloud Server: AWS EC2, DigitalOcean, etc.
  2. SSL/TLS: Let's Encrypt o certificado comercial
  3. Process Manager: PM2 para gestión de procesos
  4. Reverse Proxy: Nginx para HTTPS
# Ejemplo con PM2
pm2 start server.js --name speack3-server
pm2 save
pm2 startup

App Móvil

Android:

  • APK directo para distribución privada
  • Google Play Store para distribución pública

iOS:

  • TestFlight para beta testing (~30 usuarios)
  • App Store para distribución pública

Ver BUILD_GUIDE.md para detalles.

🤝 Contribuciones

Contribuciones son bienvenidas. Por favor:

  1. Fork el proyecto
  2. Crea una branch (git checkout -b feature/nueva-funcionalidad)
  3. Commit tus cambios (git commit -m 'Añadir nueva funcionalidad')
  4. Push a la branch (git push origin feature/nueva-funcionalidad)
  5. Abre un Pull Request

🐛 Reportar Problemas

Para reportar bugs o solicitar funcionalidades:

  1. Verifica que no exista un issue similar
  2. Crea un nuevo issue con detalles:
    • Descripción del problema
    • Pasos para reproducir
    • Comportamiento esperado vs actual
    • Screenshots si aplica
    • Logs relevantes

📄 Licencia

Este proyecto está bajo la Licencia MIT. Ver LICENSE para más detalles.

🙏 Agradecimientos

📞 Contacto

Para preguntas o soporte:


Desarrollado con ❤️ para comunicación segura y privada

Versión 1.0.0 | Diciembre 2025

About

llamadas web3

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors