ZIBE es una app Android de mensajería (chat 1:1 y grupos) construida como proyecto principal de portfolio para demostrar criterios de arquitectura, calidad y seguridad: UI moderna con Compose, MVVM con Flow, DI con Hilt, persistencia con DataStore e integración completa con Firebase (Auth / RTDB / Storage / FCM + App Check).
| Recurso | Enlace |
|---|---|
| 📘 Setup & primeros pasos | GETTING_STARTED.md |
| 🧱 Arquitectura detallada | ARCHITECTURE.md |
| 🔥 Esquema Firebase | FIREBASE_SCHEMA.md |
| 🧪 Pipeline CI | CI.md |
| 🤝 Cómo contribuir | CONTRIBUTING.md |
| Etapa | Descripción |
|---|---|
| 🧱 Origen (2020) | App creada con UI clásica (XML / Activities / Adapters) y base Firebase. |
| 🔄 Modernización (oct-2025 →) | Migración progresiva a Kotlin + AndroidX, incorporación de Jetpack Compose + Material 3, refactor hacia MVVM, mejoras de seguridad y ordenamiento de arquitectura para dejarlo listo como repo público y mantenible. |
| 🚧 Estado actual | En evolución continua (refactors y mejoras por PR), con foco en compatibilidad moderna (Android 13/14) y prácticas profesionales. |
- Arquitectura aplicada: separación por capas (UI → ViewModel → Repositorio → Data), estado con Flow.
- UI moderna: Compose + Material 3 con convivencia controlada con UI clásica cuando aplica.
- Calidad y mantenibilidad: DI con Hilt, manejo de errores consistente, refactors por PR.
- Seguridad para repo público: sin credenciales reales versionadas, CI sin secretos, App Check preparado.
- Firebase end-to-end: Auth + RTDB + Storage + FCM con estructura documentada.
- 🔐 Autenticación con Google y Facebook (Firebase Auth).
- 💬 Chat 1:1 y grupos en tiempo real (Realtime Database).
- 🔔 Notificaciones push (FCM) con tokens por sesión.
- 👤 Perfiles, favoritos y estados de usuario.
- 🖼️ Multimedia en chats (imágenes) y soporte para audio (según implementación actual).
- ⚙️ Onboarding, búsqueda y ajustes.
# Build de debug
./gradlew :app:assembleDebug
# Tests unitarios (JVM)
./gradlew test🧪 El pipeline de CI corre automáticamente en cada push a
main.
Este repo está listo para ser público: no incluye google-services.json real.
| Escenario | Qué hacer |
|---|---|
| ✅ Solo compilar / CI | El CI usa app/google-services.example.json con valores dummy. No requiere configuración adicional. |
| 🔥 Conectar Firebase real | Creá tu proyecto en Firebase Console y colocá tu google-services.json real en app/. |
⚠️ El modo dummy permite build y CI, pero no opera la app conectada a un backend real.
📘 Guía completa: GETTING_STARTED.md
📦 app/
├─ 📂 src/
│ ├─ 📂 main/
│ │ ├─ 📂 java/com/zibete/proyecto1/ ← código de producción (features + core)
│ │ └─ 📂 res/
│ ├─ 🐞 📂 debug/
│ │ └─ AppCheckProviderFactoryProvider.kt ← solo debug (App Check)
│ ├─ 🧪 📂 test/ ← unit tests (JVM)
│ └─ 📱 📂 androidTest/ ← instrumented tests
└─ ⚙️ build.gradle(.kts)
📦 docs/ ← documentación (setup, arquitectura, firebase, CI)
📦 .github/ ← workflows + templates (Issues / PR)
- 🧪 Mejorar cobertura de tests (especialmente instrumented).
- 🧭 Documentar flujos clave (onboarding, permisos, media) con capturas.
- 🎨 Unificar consistencia visual entre pantallas Compose y UI clásica.
Este repositorio se publica como portfolio / caso de estudio.
- ✅ Feedback, bugs e ideas: bienvenidos vía Issues (con templates).
- 🔒 Pull Requests externos: solo por invitación, para preservar coherencia y autoría del proyecto.
➡️ Ver: CONTRIBUTING.md
📌 Código de conducta: CODE_OF_CONDUCT.md
MIT — ver LICENSE
Matías Abel Peralta
