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.
- 🔐 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
┌─────────────────┐ ┌──────────────────┐
│ React Native │ HTTP │ Node.js + │
│ Mobile App │◄────────┤ Express │
│ │ │ │
│ - Signal E2E │ WSS │ Socket.io │
│ - React Nav │◄────────┤ │
│ - AsyncStorage │ │ MongoDB │
│ - Keychain │ │ JWT Auth │
└─────────────────┘ └──────────────────┘
- Node.js 18+
- MongoDB 5.0+
- Android Studio (para Android)
- Xcode (para iOS, solo macOS)
# 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 devVer SERVER_SETUP.md para instrucciones detalladas.
# 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 iosVer BUILD_GUIDE.md para construcción de APK/IPA.
| Login | Chat List | Conversación |
|---|---|---|
![]() |
![]() |
![]() |
Speack3 implementa múltiples capas de seguridad:
- Signal Protocol con Double Ratchet Algorithm
- Forward Secrecy: Cada mensaje usa claves efímeras únicas
- Claves Privadas: Nunca salen del dispositivo del usuario
- iOS Keychain / Android Keystore para claves privadas
- bcrypt para hashing de passwords (10 rondas)
- JWT con tokens de acceso (1h) y refresh (7d)
- 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.
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
- 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
- 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
| 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 |
cd server
npm testcd mobile
npm testPara producción, se recomienda:
- Cloud Server: AWS EC2, DigitalOcean, etc.
- SSL/TLS: Let's Encrypt o certificado comercial
- Process Manager: PM2 para gestión de procesos
- Reverse Proxy: Nginx para HTTPS
# Ejemplo con PM2
pm2 start server.js --name speack3-server
pm2 save
pm2 startupAndroid:
- 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 son bienvenidas. Por favor:
- Fork el proyecto
- Crea una branch (
git checkout -b feature/nueva-funcionalidad) - Commit tus cambios (
git commit -m 'Añadir nueva funcionalidad') - Push a la branch (
git push origin feature/nueva-funcionalidad) - Abre un Pull Request
Para reportar bugs o solicitar funcionalidades:
- Verifica que no exista un issue similar
- Crea un nuevo issue con detalles:
- Descripción del problema
- Pasos para reproducir
- Comportamiento esperado vs actual
- Screenshots si aplica
- Logs relevantes
Este proyecto está bajo la Licencia MIT. Ver LICENSE para más detalles.
- Signal Foundation por el Signal Protocol
- React Native Community por el framework
- Todos los contribuidores de librerías open-source utilizadas
Para preguntas o soporte:
- 📧 Email: [tu-email@ejemplo.com]
- 💬 Issues: GitHub Issues
Desarrollado con ❤️ para comunicación segura y privada
Versión 1.0.0 | Diciembre 2025


