Skip to content

sairam1592/Android_Recipe_Application

Repository files navigation

Recipe Realm Android App (Download from Google PlayStore - https://play.google.com/store/apps/details?id=com.arun.myrecipeapplication)

Welcome to the repository of my latest Android application -> Recipe Realm, where modern design meets seamless functionality. This project is a testament to the best practices in software development, featuring Clean Code, Clean Architecture, and adherence to SOLID principles.

About the Project

This app has been passionately crafted to demonstrate the full spectrum of my development skills. It is built using Kotlin and leverages Kotlin Coroutines for efficient background processing, implementing State, Flow, and Dispatchers to handle API calls and data management with finesse.

Key Features

  • Clean Architecture: The codebase is structured on Clean Architecture principles, ensuring scalability, maintainability, and a clear separation of concerns.
  • SOLID Principles: Every module within this application adheres to SOLID principles, promoting a robust and adaptable codebase.
  • Modern UI: Utilizing Jetpack Compose, the app presents a modern UI that is both performant and aesthetically pleasing.
  • Kotlin Coroutines & Flow: For asynchronous tasks and real-time data updates, Kotlin Coroutines and Flow are employed effectively.
  • State Management: Reactive state management is implemented, ensuring that the UI is always in sync with the underlying data.

Functionality (ALL UI BUILD USING JETPACK COMPOSE)

  • Fetch a list of Recipe from a WEB API and display it in the UI
  • Leveraged use of Kotlin Coroutines, StateFlow for passing of data back to View
  • Used Jetpack Compose to Populate list of data into the composable UI screen
  • Make UI screen load horizontal, vertical and grid of recipe list
  • Added Room Database caching, now the user can view the list in offline mode also
  • Added search functionality to search based on recipe name in AppBar
  • Enable User to Add a Recipe to Cart and show SnackBar once added to Cart
  • Enable user to Select/Unselect a Recipe from List
  • Added Floating Action Button and onClick of it open a BottomSheet with my Intro;)
  • Show error Snackbar if App is opened when no internet available
  • Added No Internet Error screen with a Retry button to load recipe

Upcoming Additions:

  • Host A set of questions in Firebase Firestore DB and fetch the same into the app (API implementation Done, working on UI)
  • Implement Open AI API 3.5gpt to best suggest cooking tips/help to user (Limit to 3 questions per user) - In Progress
  • A lot of Jetpack design implementation
  • Room DB for caching
  • More features such as Recipe Detail screen, Difficulty level of recipe, Refer to youtube link, Select/Unselect a Recipe, Multiple Select/Unselect just like in other food apps
  • Unit Testing using Junit5 and Mockk

Screenshots

VERTICAL LIST OF RECIPE CARDS

Screenshot 2024-03-02 at 7 53 25 PM

RECIPE CARDS IN GRID LAYOUT

Screenshot 2024-03-03 at 12 28 15 PM

HOME SCREEN WITH BOTH ROW AND COLUMN

Screenshot 2024-03-04 at 2 29 01 PM
Screen_Recording_20240304_142839_Recipe.mp4

LIST POPULATED AS A SIMPLE VERTICAL SCROLL

Screen_Recording_20240302_200323_Arun.Recipe.App.mp4

LIST POPULATED AS A GRID

Screen.Recording.2024-03-03.at.12.21.17.PM.mov

MENU OPTION TO POPULATE EITHER AS A VERTICAL LIST OR GRID LIST

Screenshot 2024-03-03 at 6 33 22 PM
Screen.Recording.2024-03-03.at.6.33.36.PM.mov

A FLOATING ACTION BUTTON, ON CLICK OPEN A BOTTOMSHEET

Screen.Recording.2024-03-03.at.6.32.56.PM.mov

ADD A RECIPE TO CART, AND SHOW SNACKBAR

Screen.Recording.2024-03-03.at.11.38.44.PM.mov

SELECT/UNSELECT A RECIPE FROM LIST

Screen.Recording.2024-03-03.at.11.55.37.PM.mov

A SEARCH FUNCTIONALITY TO SEARCH THE LIST OF RECIPES AVAILABLE

Screen.Recording.2024-03-03.at.6.36.20.PM.mov

NO INTERNET SCREEN AND RETRY BUTTON

Screenshot 2024-03-03 at 7 16 06 PM
Screen.Recording.2024-03-03.at.7.16.21.PM.mov

Technologies & Libraries

The project is built with the latest tools and libraries in the Android ecosystem:

  • Kotlin: The whole application is written in Kotlin for its conciseness and reliability.
  • Jetpack Compose: Leveraged for building native UI, showcasing my UI developmental skills.
  • Kotlin Coroutines: To handle asynchronous tasks and provide a smooth user experience.
  • Retrofit: For networking, making API requests and handling responses.
  • Hilt: For dependency injection, simplifying the architecture and making testing easier.
  • Room: For persistence of Recipe and offline laoding.
  • Coil: For image loading, making use of Kotlin's Coroutines for efficiency.
  • AndroidX & Material Components: For the latest UI components that adhere to Material Design principles.

Building the Project

To build this project, clone the repo and import it into Android Studio. Make sure you have the latest version of Android Studio and the Kotlin plugin installed.

About

A Fully functional Android App with latest Android Concepts implemented

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages