Editor Colaborativo en Tiempo Real + Gestión Avanzada de Tareas
🎉 NUEVO: Editor Colaborativo Completo Implementado! Documentos en tiempo real tipo Google Docs
📚 Documentación Completa:
- 📖 Índice de Documentación - Encuentra todo aquí
- 🚀 Proyecto Finalizado - Resumen completo
- ⚡ Guía Rápida - Aprende a usar la app
- ✅ Checklist Presentación - Prepara tu demo
- 🔧 Implementación Técnica - Detalles técnicos
FlowBoard es una plataforma colaborativa revolucionaria que combina:
🎯 Gestión Avanzada de Tareas - CRUD completo con sincronización en tiempo real
📝 Editor Colaborativo de Documentos - Similar a Google Docs, con formato rico
👥 Colaboración en Tiempo Real - WebSockets para sincronización instantánea
✨ Material Design 3 - Interfaz moderna y profesional
🔐 Autenticación Segura - Sistema completo de login/registro con JWT
Diseñada para estudiantes, equipos y profesionales que necesitan colaborar eficientemente.
FlowBoard ahora incluye un editor colaborativo completo similar a Google Docs:
- ✍️ Editor de Texto Rico - Negrita, cursiva, subrayado, listas
- 👥 Colaboración en Vivo - Ver quién está editando en tiempo real
- 💾 Auto-guardado Inteligente - Guardado automático cada 500ms con debouncing
- 🎨 Toolbar de Formato - Barra de herramientas completa y expandible
- 📜 Historial de Versiones - Sidebar con todos los cambios
- 🔗 Sistema de Compartir - Permisos granulares (Viewer/Editor)
- 👤 Avatares de Usuarios - Ver quién está conectado con indicadores visuales
- 🔄 Sincronización Real - Cambios instantáneos vía WebSockets
- 🔄 Sincronización instantánea - Los cambios se reflejan en tiempo real
- 👥 Presencia de usuarios - Ve quién está viendo cada tarea
- 🎯 Prioridades Visuales - LOW, MEDIUM, HIGH, URGENT con colores
- 📅 Modo Evento - Tareas que se integran con calendario
- 📍 Ubicaciones - Para eventos con lugar físico
- 🔔 Notificaciones en vivo - Actualizaciones instantáneas
- 🌐 Offline-first - Funciona sin conexión
- 🔌 Reconexión automática - Manejo robusto de desconexiones
- 🔐 Seguro - Autenticación JWT sobre WebSocket
Ver documentación completa:
Mejorar la productividad y organización de estudiantes y equipos pequeños mediante una herramienta intuitiva que permita:
- Gestión individual y colaborativa de tareas
- Organización de eventos y calendario compartido
- Seguimiento del progreso con métricas detalladas
- Exportación de reportes profesionales
FlowBoard contribuye directamente a los Objetivos de Desarrollo Sostenible:
- ODS 4 - Educación de Calidad: Mejora la organización académica de estudiantes
- ODS 8 - Trabajo Decente y Crecimiento Económico: Optimiza la productividad de equipos pequeños
- Sostenibilidad Tecnológica: Diseño eficiente, bajo consumo de datos, accesibilidad universal
- Estudiantes universitarios y de secundaria
- Equipos pequeños (startups, ONGs, asociaciones)
- Profesionales independientes
- Grupos de estudio y proyectos académicos
- Base de datos local: Room/SQLite para funcionamiento offline
- Base de datos remota: PostgreSQL para sincronización
- CRUD completo: Crear, leer, actualizar, eliminar tareas/eventos
- Import/Export: Soporte JSON/XML para backup y migración
- Tecnología: Kotlin + Jetpack Compose
- Pantallas principales:
- Login/Registro con autenticación JWT
- Lista de tareas con filtros avanzados
- Detalle de tareas/eventos
- Calendario interactivo
- Dashboard con métricas
- Configuración y perfil
- API REST: Backend Ktor con endpoints completos
- Autenticación: JWT con roles (admin/usuario)
- Sincronización: Hilos en background para datos
- Notificaciones: Push notifications para recordatorios
- Adjuntos: Soporte para imágenes en tareas
- Export PDF: Generación de reportes profesionales
- Notificaciones: Sistema completo de alertas
- Responsive: Diseño adaptativo
- Control de usuarios: Gestión de equipos y permisos
- Reportes: Métricas de productividad
- Dashboard: Visualización de estadísticas
- Incidencias: Sistema de seguimiento de problemas
- Eficiencia: Arquitectura optimizada
- Modularidad: Código reutilizable y mantenible
- Escalabilidad: Preparado para crecimiento
┌─────────────────────────────────────────────────────────────────┐
│ FRONTEND (Android) │
├─────────────────────────────────────────────────────────────────┤
│ Presentation Layer (Jetpack Compose + ViewModels) │
│ ├── Auth Screens (Login/Register) │
│ ├── Task Management (List/Detail/Create) │
│ ├── Calendar & Events │
│ └── Dashboard & Reports │
├─────────────────────────────────────────────────────────────────┤
│ Domain Layer (Use Cases + Repositories) │
│ ├── Task Repository │
│ ├── User Repository │
│ └── Project Repository │
├─────────────────────────────────────────────────────────────────┤
│ Data Layer │
│ ├── Local Database (Room/SQLite) │
│ ├── Remote API (Ktor Client) │
│ └── Sync Manager │
└─────────────────────────────────────────────────────────────────┘
│
│ HTTP/REST API
│
┌─────────────────────────────────────────────────────────────────┐
│ BACKEND (Ktor) │
├─────────────────────────────────────────────────────────────────┤
│ API Layer (REST Endpoints) │
│ ├── /auth (Login/Register/Logout) │
│ ├── /tasks (CRUD + Query operations) │
│ ├── /users (Profile management) │
│ └── /projects (Team collaboration) │
├─────────────────────────────────────────────────────────────────┤
│ Business Logic Layer │
│ ├── Authentication Service (JWT) │
│ ├── Task Service │
│ └── User Service │
├─────────────────────────────────────────────────────────────────┤
│ Data Access Layer │
│ ├── Exposed ORM │
│ └── PostgreSQL Database │
└─────────────────────────────────────────────────────────────────┘
- Lenguaje: Kotlin 1.9.22
- UI Framework: Jetpack Compose
- Arquitectura: MVVM + Clean Architecture
- Inyección de dependencias: Hilt
- Base de datos local: Room/SQLite
- Networking: Ktor Client
- Navegación: Navigation Compose
- Gestión de estado: StateFlow/Compose State
- Framework: Ktor 2.3.7
- Lenguaje: Kotlin
- Base de datos: PostgreSQL
- ORM: Exposed
- Autenticación: JWT
- Serialización: Kotlinx Serialization
- Build: Gradle Kotlin DSL
- Testing: JUnit, Mockito, Coroutines Test
- CI/CD: GitHub Actions (configuración futura)
- Base de datos local con CRUD completo
- Pantallas esenciales en Jetpack Compose
- Backend Ktor con autenticación y CRUD
- Arquitectura Clean con Hilt
- Sincronización básica offline/online
- Gestión de tareas y eventos
- Sistema de notificaciones
- Export PDF básico
- Vista resumen de tareas
- Estadísticas básicas de productividad
- Filtros por estado y prioridad
- Sincronización bidireccional en tiempo real con WebSockets ✨
- Presencia de usuarios en tiempo real ✨
- Broadcasting de eventos (crear/actualizar/eliminar) ✨
- Reconexión automática robusta ✨
- Arquitectura offline-first ✨
- Roles y permisos granulares por proyecto
- Chat integrado en proyectos
- Plantillas de tareas/eventos
- Notificaciones push avanzadas
- Dashboard web para métricas avanzadas
- Reports automáticos por email
- Integración con herramientas externas (Slack, Trello)
- API pública para integraciones
- Vistas Kanban y Gantt
- Gestión de recursos y capacidad
- Auditoría y logs detallados
- Single Sign-On (SSO)
- Backup automático en la nube
- Android Studio Hedgehog o superior
- JDK 17+
- PostgreSQL 13+ (para backend)
- Git
git clone https://github.com/tu-usuario/flowboard.git
cd flowboardOpción A: Abrir el módulo Android directamente (✅ Recomendado)
Android Studio → File → Open → .../FlowBoard/android
Opción B: Abrir desde la raíz (Composite Build)
Android Studio → File → Open → .../FlowBoard
cd backend
# Crear base de datos PostgreSQL
createdb flowboard
# Configurar variables de entorno
export DATABASE_URL="jdbc:postgresql://localhost:5432/flowboard"
export DATABASE_USER="tu_usuario"
export DATABASE_PASSWORD="tu_contraseña"
export JWT_SECRET="tu_secreto_jwt"
# Ejecutar backend
./gradlew runDesde Android Studio:
- Click en Run
▶️ (Shift+F10)
Desde línea de comandos:
# Usando el script de utilidades (✅ Recomendado)
./flow.sh build # Linux/Mac
flow.bat build # Windows
# O directamente con Gradle
./gradlew -p android assembleDebug # Desde raíz
cd android && ./gradlew assembleDebug # Desde android/💡 Script de Utilidades:
# Ver todos los comandos disponibles
./flow.sh help # Linux/Mac
flow.bat help # Windows
# Comandos útiles:
./flow.sh build # Compilar app
./flow.sh run # Instalar y ejecutar
./flow.sh test # Ejecutar tests
./flow.sh backend # Iniciar backend
./flow.sh clean # Limpiar buildsLa app creará automáticamente la base de datos SQLite local en el primer arranque.
# Tests de Android (desde raíz)
./gradlew -p android test
# Tests de Backend (desde raíz)
./gradlew -p backend test
# O desde cada carpeta directamente
cd android && ./gradlew test
cd backend && ./gradlew testEste error ocurre por un conflicto de versiones de Kotlin. Solución:
# Opción 1: Usar script de compilación limpia (RECOMENDADO)
chmod +x compile-android.sh
./compile-android.sh
# Opción 2: Limpieza manual
cd android
./gradlew --stop
./gradlew clean --no-daemon
rm -rf app/build build .gradle
./gradlew assembleDebug --no-daemon📖 Ver documentación completa: SOLUCION_KOTLIN_VERSION.md
Asegúrate de tener configurado android/local.properties:
sdk.dir=/ruta/a/tu/Android/Sdkcd android
./gradlew --stop
pkill -f gradle # En Linux/Mac
./gradlew assembleDebug --no-daemoncd android
rm -rf ~/.gradle/caches/
rm -rf ~/.gradle/daemon/
./gradlew clean --no-daemon- Email: demo@flowboard.com
- Password: demo123
- Registro/Login: Crear cuenta o usar credenciales demo
- Crear Tarea: Tap en '+' para nueva tarea
- Gestionar: Marcar completada, editar, eliminar
- Calendario: Ver eventos en vista calendario
- Dashboard: Revisar estadísticas de productividad
- Sync: Pull para sincronizar con backend
FlowBoard/
├── android/ # Aplicación Android
│ ├── app/src/main/java/com/flowboard/
│ │ ├── data/ # Capa de datos
│ │ │ ├── local/ # Room database
│ │ │ │ ├── dao/ # Data Access Objects
│ │ │ │ ├── entities/ # Entidades de base de datos
│ │ │ │ └── FlowBoardDatabase.kt
│ │ │ ├── remote/ # API remota
│ │ │ │ ├── api/ # Servicios API
│ │ │ │ └── dto/ # Data Transfer Objects
│ │ │ └── repository/ # Implementaciones de repositorios
│ │ ├── domain/ # Capa de dominio
│ │ │ ├── model/ # Modelos de dominio
│ │ │ ├── repository/ # Interfaces de repositorios
│ │ │ └── usecase/ # Casos de uso
│ │ ├── presentation/ # Capa de presentación
│ │ │ ├── ui/
│ │ │ │ ├── screens/ # Pantallas Compose
│ │ │ │ ├── components/ # Componentes reutilizables
│ │ │ │ └── theme/ # Tema y estilos
│ │ │ └── viewmodel/ # ViewModels
│ │ ├── di/ # Módulos de inyección de dependencias
│ │ └── utils/ # Utilidades y mappers
│ └── build.gradle # Configuración de build Android
├── backend/ # Backend Ktor
│ ├── src/main/kotlin/com/flowboard/
│ │ ├── data/
│ │ │ ├── database/ # Configuración de base de datos
│ │ │ └── models/ # Modelos de datos
│ │ ├── domain/ # Lógica de negocio
│ │ ├── plugins/ # Plugins de Ktor
│ │ ├── routes/ # Endpoints de API
│ │ └── Application.kt # Punto de entrada
│ └── build.gradle.kts # Configuración de build Backend
├── docs/ # Documentación
├── .gitignore
└── README.md # Este archivo
- Fork del repositorio
- Crear rama para feature (
git checkout -b feature/nueva-funcionalidad) - Commit cambios (
git commit -am 'Agregar nueva funcionalidad') - Push a la rama (
git push origin feature/nueva-funcionalidad) - Crear Pull Request
- Seguir las convenciones de Kotlin
- Documentar funciones públicas
- Escribir tests para nuevas funcionalidades
- Usar Clean Architecture principles
- Productividad: Tareas completadas por usuario/día
- Engagement: Tiempo promedio en la app
- Colaboración: Proyectos compartidos activos
- Retención: Usuarios activos mensuales
- Firebase Analytics
- Crashlytics para estabilidad
- Performance Monitoring
- Autenticación: JWT con refresh tokens
- Datos: Encriptación local con SQLCipher (futura implementación)
- Comunicación: HTTPS obligatorio
- Validación: Input sanitization en backend
- Permisos: Control granular de acceso
Este proyecto está licenciado bajo la Licencia MIT - ver el archivo LICENSE para detalles.
Tu Nombre
- Email: paulopeznunez@gmail.com
- LinkedIn: Pau López Núñez
- GitHub: @PauLopNun
- Comunidad de Kotlin y Android
- Equipo de Ktor por el excelente framework
- Contribuidores de bibliotecas open source utilizadas
- Beta testers y usuarios early adopters
¿Tienes preguntas o problemas?
- 🐛 Bugs: GitHub Issues
- 💡 Features: Feature Requests
- 📧 Email: paulopeznunez@gmail.com
- 💼 LinkedIn: Pau López Núñez
FlowBoard backend puede desplegarse fácilmente en Render (plan gratuito disponible):
Ver guía completa: docs/deployment-guide-render.md
Características:
- ✅ Plan gratuito disponible
- ✅ PostgreSQL incluida
- ✅ Deploy automático desde Git
- ✅ HTTPS y WSS configurados
- ✅ Variables de entorno seguras
FlowBoard está preparado para publicación en Play Store con:
Ver guía completa: docs/play-store-publishing-guide.md
Incluye:
- ✅ Configuración de keystore
- ✅ Build de release firmado
- ✅ Assets y screenshots
- ✅ Proceso completo paso a paso
- ✅ Políticas y privacidad
- ✅ Post-publicación y actualizaciones
Costo: $25 USD (pago único)
- Resumen Final - Todo lo implementado
- Arquitectura - Diseño completo del sistema
- Guía de Implementación - Paso a paso
- Schema de Eventos - Modelos de mensajes
- Guía Render - Deploy del backend
- Guía Play Store - Publicación Android
Ver comentarios inline en el código para detalles de implementación.
Si encuentras el error SDK location not found. Define a valid SDK location with an ANDROID_HOME environment variable...:
📖 Ver Guía Completa de Configuración del SDK
Solución Rápida (Automática):
# Ejecutar el script de configuración automática
chmod +x setup-android-sdk.sh
./setup-android-sdk.shSolución Manual:
-
Verificar que Android Studio está instalado
- Android Studio incluye el SDK en:
~/Android/Sdk(Linux/Mac) oC:\Users\<usuario>\AppData\Local\Android\Sdk(Windows)
- Android Studio incluye el SDK en:
-
Crear/Editar el archivo
android/local.properties:sdk.dir=/home/tu-usuario/Android/SdkEn Windows:
sdk.dir=C\:\\Users\\tu-usuario\\AppData\\Local\\Android\\Sdk -
Configurar variables de entorno (opcional pero recomendado):
Linux/Mac (
~/.bashrco~/.zshrc):export ANDROID_HOME=$HOME/Android/Sdk export ANDROID_SDK_ROOT=$ANDROID_HOME export PATH=$PATH:$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools
Windows (Variables de Sistema):
ANDROID_HOME:C:\Users\<usuario>\AppData\Local\Android\Sdk- Agregar a PATH:
%ANDROID_HOME%\platform-tools
-
Verificar la instalación:
# Debe mostrar la versión de adb adb --version
Gradle build failed:
# Limpiar y reconstruir
./flow.sh clean
./flow.sh build
# O manualmente:
cd android && ./gradlew clean buildBackend no conecta:
- Verificar que el backend esté ejecutándose en el puerto correcto
- Revisar la URL en la configuración de la app
- Comprobar firewall y reglas de red
Base de datos local corrupta:
# Limpiar datos de la app desde ajustes del dispositivo
# O desinstalar y reinstalar la appFlowBoard - Organizando el futuro, una tarea a la vez 🚀✨
Status: Production Ready | Versión: 1.0.0 | WebSockets: ✅ Implementado