App Android de recetas de cocina en las que el usuario puede guardar sus favoritas para una más rápida consulta. Al tiempo que preparas una receta puedes escuchar música directamente desde la app.
- Autenticación de Usuarios para registrarse o acceder mediante correo electrónico y contraseña
- Listado y filtrado de recetas por categoría (dulce o salada)
- Radio integrada (con rockFM en streaming)
- Navegación mediante varios menús
- Soporte multilenguaje
La app tiene una arquitectura modular que se divide en 4 carpetas:
- db: Contiene todos los datos referentes/necesarios para la BBDD local, mediante
Room:- DAOs: Interfaces para interactuar con la BBDD.
AppDataBase: Clase principal para trabajar con la BBDD. Contieneanotations, un listado deentitiesque conforman la BBDD local, y los métodos de acceso a los DAos- Entities: Entidades de la BBDD. Definen sus tablas por medio de clases con anotaciones.
- data:
RecetasDataSource: Clase que lee el archivo recetas.json mediante la librería Gson y convierte su contenido en objetos de tipoReceta
- model: Lógica de negocio
- POJOs (Ingrediente, Paso, Receta y usuario): Representan las estructuras de los diferentes datos a utilizar en la app.
- Repositorios (Receta y RecetaImpl): Abstracciones del acceso a los datos para
Recetas
- ui: Interfaz de usuario.
- Adapters: Para los RecyclerView (
Favoritos,RecetayModificarReceta), gestionan como se mostrarán un listado de items de forma eficiente. Y paraFavoritosItemListener, interfaz para manejas los eventos de click en los items que muestra el RecyclerViewFavoritos - Fragmentos (
Favoritos,Home,ItemReceta,ListadoRecetas,LoginUsuario,ModificarRecetayRegistroUsuario): Pantallas de la app. - viewmodel: Incluyes el ViewModel y ViewModelFactory para los datos que se muestran en ModificarRecetas
- MainActivity: Actividad principal (y única, single activity) que contendrá todos los fragmentos
- Adapters: Para los RecyclerView (
- Arquitectura SingleActivity: Al estar construída toda la app desde una única Activity que gestiona la navegación entre los diferentes fragmetns. Gestionará el ciclo de vida de toda la app
- Navigation Component: (
nav_graph) Gestiona la navegación entre fragmentos mediante en archivonav_graph.xml. Y también gestionará el paso de argumentos entre fragments por medio de safe args - Persistencia mediante Room: Para persistencia de los datos he usado Room Persistence Library, que permite gestionar de forma local con SQL los datos de mi app.
- Doc JSON para repositorio de recetas: (
recetas.json) Guardado en la carpeta assets, donde se recopilan todos los datos a mostrar sobre las mismas, de forma estructurada - Multilenguaje:
Archivo
strings.xmlen tres idiomas: castellano, gallego e inglés - Hoja de colores y estilos personalizado:
colors.xml,styles.xmlythemes.xmlpara la configuración de colores de toda la app. - Reproducción de música en streaming con ExoPlayer: Que permite que se pueda escuchar la emisora RockFM desde la app.
- ViewBinding: Para inflar las views
- Persistencia de datos con SharedPreferences: Almacena pequeños datos como el correo de usuario en el loging, o si se ha iniciado la sesión, para mejorar su experiencia
- Recursos de menu ( res> menu ): Para facilitar la navegación entre fragmentos se ha implementado un navigation drawer y un bottom navigation menu
- Uso de ViewModel y ViewModelFactory:
En la obtención y visualización de los datos que se muestran en
ModificarRecetas(FALTA IMPLEMENTAR LOS CAMBIOS, solo funcionan reset y cancelar)
- Viewmodel (en toda la app) y acabar de implementar en ModificarReceta: guardado receta modificada para el usuario
- Dark mode
- Barra de búsqueda
- Fragmento ModificarReceta, para que el usuario pueda modificar la cantidad de cada ingrediente en sus recetas
- Fragmento Configuración, para incluír el cambio de modo, idioma, emisora de radio, nombre de usuario
- Imágenes de cada receta en ItemReceta ( o en toda la app)
- Utilizar Compose en vez de views XML
- Incluír un temporizador
- Incluír una opción de envío de recetas por whatssapp o correo
- Modificar la radio para conectarse a Spotify