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 audio).
- ⚙️ 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/ ← módulo Android (entrypoints + UI + wiring)
├─ 📂 src/
│ ├─ 📂 main/
│ │ ├─ 📂 java/com/zibete/proyecto1/ ← UI/screens + navegación + DI (Hilt) + impls app-only
│ │ └─ 📂 res/ ← recursos propios de app (legacy XML, drawables específicos)
│ ├─ 🐞 📂 debug/ ← solo debug (App Check, etc.)
│ ├─ 🧪 📂 test/ ← unit tests (JVM)
│ └─ 📱 📂 androidTest/ ← instrumented tests
└─ ⚙️ build.gradle(.kts)
📦 core/
├─ 📦 common/ ← utilidades + modelos + strings compartidos (sin UI)
└─ 📦 designsystem/ ← Theme Compose + tokens (colors/dimens) + fonts
📦 domain/ ← casos de uso + contratos (interfaces) para data
📦 data/ ← implementaciones (repositorios, Firebase/DataStore, etc.)
📦 docs/ ← documentación (setup, arquitectura, firebase, CI)
📦 .github/ ← workflows + templates (Issues / PR)
app→domain,data,core:common,core:designsystemdata→domain,core:commondomain→core:commoncore:designsystem→ (sin dependencias de app/domain/data; solo UI tokens/theme)
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
