Skip to content

ExilRaizen/Gostoso

Repository files navigation

  1. Caso elegido y alcance

Caso: Gustoso – Red social culinaria

Descripción: Gustoso es una aplicación social centrada en la gastronomía que permite a los usuarios descubrir, compartir y guardar recetas de cocina de forma visual e intuitiva. El enfoque está en conectar personas a través de sus gustos culinarios, fomentando la interacción y el intercambio de conocimientos gastronómicos.

Alcance EP3:

Diseño de interfaz de usuario (UI) con Jetpack Compose.

Validaciones en formularios de registro e inicio de sesión.

Navegación entre pantallas principales y secundarias.

Gestión de estado local con ViewModel y mutableStateOf.

Persistencia local de recetas mediante Room (CRUD).

Almacenamiento de imagen de perfil con acceso a cámara o galería.

Animaciones contextuales y transiciones visuales.

Consumo de API externa para autenticación y datos del usuario (/me).

  1. Requisitos y ejecución

Stack:

Lenguaje: Kotlin

Framework: Ionic

Gestión de estado: ViewModel + State Hosting

Persistencia: Room Database

Consumo de API: thecocktaildb, paypal

Dependencias adicionales: Coil (carga de imágenes), Material3, Navigation Compose, Coroutines

Ejecución (Android Studio):

Abrir el proyecto en Android Studio.

Configurar el Gradle JDK a la versión 17.

Sincronizar dependencias (Sync Project with Gradle Files).

Ejecutar con el perfil de depuración (Run ▶️).

  1. Arquitectura y flujo

Estructura general:

com.gustoso/ ├── ui/ # Pantallas y componentes UI ├── data/ # Modelos, entidades y DAOs ├── network/ # Servicios API y modelos de respuesta ├── navigation/ # Graph de navegación ├── state/ # ViewModels y lógica de estado └── utils/ # Helpers y validaciones

Gestión de estado:

Estado local manejado con rememberSaveable y mutableStateOf.

Estado global (sesión del usuario) gestionado desde un ViewModel persistente.

Flujo de datos unidireccional: UI → ViewModel → Repository → API/DB.

Navegación:

Implementada con Navigation Compose.

Flujo tipo stack, con navegación entre pantallas principales:

LoginScreen → RegisterScreen → HomeScreen → RecipeDetail → ProfileScreen

Se contempla Deep Link para abrir recetas compartidas desde links externos.

  1. Funcionalidades

Formulario validado:

Registro de usuario con validación de correo, contraseña y nombre.

Inicio de sesión con verificación de credenciales mediante API externa.

Navegación y backstack:

Implementación de NavController para moverse entre pantallas principales y secundarias.

Gestión de estado:

Estados de carga, éxito y error manejados con sealed classes y mutableStateOf.

Persistencia local (CRUD):

Base de datos Room con entidad RecipeEntity para guardar, editar y eliminar recetas locales.

Almacenamiento de imagen de perfil:

Permite tomar una foto con la cámara o seleccionar desde la galería (con permisos gestionados).

Recursos nativos:

Acceso a cámara y almacenamiento interno con ActivityResultLauncher.

Fallback a imagen predeterminada en caso de error o denegación de permisos.

Animaciones:

Transiciones de entrada/salida entre pantallas.

Animación de carga al obtener recetas.

Consumo de API:

Autenticación de usuarios (/auth/signup, /auth/login).

Obtención de información del usuario autenticado (/auth/me).

  1. Endpoints

Base URL: https://x8ki-letl-twmt.n7.xano.io/api:Rfm_61dW

Método Ruta Body Respuesta POST /auth/signup { email, password, name } 201 { authToken, user: { id, email, name } } POST /auth/login { email, password } 200 { authToken, user: { id, email, name } } GET /auth/me - (requiere header Authorization: Bearer token) 200 { id, email, name, avatarUrl } 6. User flows

Flujo principal – Registro y navegación:

El usuario abre la app y ve la pantalla de bienvenida.

Selecciona “Registrarse” y completa los campos validados.

La app envía los datos al endpoint /auth/signup.

Al recibir la respuesta, guarda el token y redirige a la pantalla principal (HomeScreen).

El usuario puede navegar entre recetas, crear nuevas o ver su perfil.

Flujo secundario – Gestión de recetas:

Desde HomeScreen, el usuario selecciona “Agregar receta”.

Completa el formulario (nombre, ingredientes, pasos, imagen).

La receta se guarda localmente en Room.

Desde el perfil, puede editar o eliminar recetas previas.

About

Proyecto app moviles

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors