Skip to content

Latest commit

 

History

126 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TipsLab

Somos una aplicación Android desarrollada como TFG que permite a los usuarios publicar, organizar y descubrir life hacks (consejos prácticos del día a día) en formato vídeo con descripción textual.

Los contenidos se clasifican por categorías (comida, hogar, tecnología…) y la app incluye búsqueda, filtrado, guardado de favoritos y acceso rápido a los consejos más recientes y valorados por la comunidad.

Tecnologías utilizadas

Kotlin Jetpack Compose Firebase Supabase

Implementación técnica y uso de librerías

Librería Propósito / uso en la aplicación
Coil Carga de imágenes de forma asíncrona y gestión automática de caché para mejorar el rendimiento de la interfaz.
Compressor Compresión de imágenes antes de subirlas a Supabase Storage para reducir tamaño de archivo y consumo de ancho de banda.
YouTube Player Integración de reproductor para mostrar vídeos de YouTube embebidos dentro de la aplicación
Media3 ExoPlayer Reproducción de vídeos propios almacenados en Supabase Storage con control completo sobre el streaming y la reproducción.

Arquitectura MVVM

El proyecto sigue el patrón Model-View-ViewModel, organizando el código en capas con responsabilidades bien definidas.

┌─────────────────────────────────┐
│              VIEW               │
│     Pantallas y composables     │
└────────────────┬────────────────┘
                 │ observa estado
                 ▼
┌─────────────────────────────────┐
│           VIEWMODEL             │
│     Estado de UI · lógica de    │
│          presentación           │
└──────┬─────────────────┬────────┘
       │                 │
       │ (simple)        │ (complejo)
       ▼                 ▼
┌────────────┐  ┌─────────────────┐
│            │  │    USE CASES    │
│ REPOSITORY │◄─┤ Orquesta varios │
│            │  │  repositories   │
└──────┬─────┘  └────────┬────────┘
       │                 │
       └────────┬────────┘
                │ accede a
                ▼
┌─────────────────────────────────┐
│             MODEL               │
│   Entidades de dominio · DTOs   │
│            Mappers              │
└─────────────────────────────────┘

VIEW

Contiene las pantallas y composables de Jetpack Compose. Su única responsabilidad es renderizar el estado que expone el ViewModel y capturar las acciones del usuario. No contiene lógica de negocio.

VIEWMODEL

Gestiona el estado de la UI y actúa como intermediario entre la vista y los datos. Según la complejidad de la operación, puede comunicarse de dos formas: Directamente con un Repository cuando la operación es simple y solo involucra una fuente de datos. A través de un UseCase cuando la operación requiere coordinar múltiples repositorios o una lógica más elaborada.

USE CASES (uso condicional)

Se emplean únicamente cuando la lógica lo justifica, principalmente cuando es necesario combinar datos de varios repositories o transformar la información antes de entregarla al ViewModel. Por ejemplo, construir un Lifehack completo puede requerir tirar de datos de usuarios, categorías y medios a la vez (esa orquestación se aloja aquí). También es donde se aplican los Mappers en estos casos complejos.

REPOSITORY

Abstrae el origen de los datos. Cada repository se comunica con Supabase o Firebase y expone los datos al resto de la app. En operaciones simples, también puede encargarse de transformar los DTOs a entidades de dominio mediante los Mappers.

MODEL

Es la capa más interna y la única que no depende de ninguna otra. Se divide en tres elementos:

Domain: entidades puras de negocio (Lifehack, User, Category) que usa el resto de la app.

DTOs: objetos que representan la estructura exacta que Firestore.

Mappers: funciones de conversión entre DTOs y entidades de dominio. Se aplican en el Repository en casos simples, y en el UseCase cuando la construcción del objeto requiere combinar varias fuentes.

Equipo de desarrollo


Aitor Fuertes

Marcos Almorox

About

TFG del GSFP de DAM por Aitor Fuertes y Marcos Almorox (2025-26)

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages