-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
Development
- Loading branch information
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
# Recipe App | ||
|
||
<p style="text-align: center;"> <img src=".assets/Images/logo.webp" alt="App Logo"> </p> | ||
|
||
Creating a complete recipe application that allows users to explore, search, and save their favorite recipes, with additional features such as video playback and user authentication. | ||
|
||
## Table of Contents | ||
- [Introduction](#introduction) | ||
- [Features](#features) | ||
- [Usage](#usage) | ||
- [Screens](#screens) | ||
- [Database](#database) | ||
- [Navigation](#navigation) | ||
- [Configuration](#configuration) | ||
|
||
## Introduction | ||
The Recipe App is designed to provide a seamless cooking experience, allowing users to search for recipes, view details, watch recipe-related videos, and save their favorites. The app includes multiple fragments for user authentication, recipe exploration, and user profile management, with an easy-to-use bottom navigation bar. | ||
|
||
## Features | ||
- **Splash Screen:** A splash screen using the Lottie library for animation. | ||
- **User Authentication:** Login and registration screens to manage user sessions. | ||
- **Recipe Search:** Search for recipes from [TheMealDB API](https://www.themealdb.com/api.php). | ||
- **Favorites:** Save and manage your favorite recipes. | ||
- **Video Playback:** Overlay video player for YouTube-like recipe videos. | ||
- **Fragment Navigation:** Smooth navigation between different app sections using a Bottom Navigation component. | ||
- **About Page:** Information about the app creator and app synopsis. | ||
|
||
## Usage | ||
1. Upon launching the app, the **Splash Screen** will appear. | ||
2. New users must register or log in. | ||
3. Once logged in, users will be directed to the **Home Fragment** where they can explore recipes. | ||
4. Use the **Bottom Navigation** to switch between the **Home**, **Favorites**, and **Search** screens. | ||
5. Click on a recipe to view details in the **RecipeDetailFragment**. | ||
6. Save a recipe to favorites by clicking the "Save to Favorites" button. | ||
7. Watch video instructions on recipes using the integrated video player. | ||
|
||
## Screens | ||
1. **SplashFragment** | ||
- Displays the animated splash screen for a few seconds. | ||
- ![Splash Screen](.assets/Images/splash_screen.png) | ||
|
||
2. **SignInFragment & SignUpFragment** | ||
- Handle user signing in and registration. | ||
- ![SignIn Screen](.assets/Images/signin_screen.png) | ||
- ![SignUp Screen](.assets/Images/signup_screen.png) | ||
|
||
3. **HomeFragment** | ||
- Lists recipes fetched from the API. | ||
- ![Home Screen](.assets/Images/home_screen.png) | ||
|
||
4. **RecipeDetailFragment** | ||
- Displays recipe details, including image, ingredients, instructions and video. | ||
- ![Recipe Details](.assets/Images/details_screen.png) | ||
|
||
5. **FavouriteFragment** | ||
- Shows a list of user's favorite recipes. | ||
- ![Favorite Screen](.assets/Images/favourites_screen.png) | ||
|
||
6. **SearchFragment** | ||
- Enables searching for recipes by name, category or keyword. | ||
- ![Search Screen](.assets/Images/search_screen.png) | ||
|
||
## Database | ||
- **Local Database:** Room database is used to store all the data about the user. | ||
- **Database Operations:** Handle save, update, delete, and fetch operations for Registration, Login and favorites. | ||
|
||
## Navigation | ||
- **AuthActivity:** Manages the **SplashFragment**, **LoginFragment**, and **RegisterFragment**. | ||
- **RecipeActivity:** Manages the remaining fragments, allowing navigation through the Bottom Navigation. | ||
- **Bottom Navigation:** Includes tabs for Home, Search, and Favorites, facilitating easy access to all features. | ||
|
||
## Configuration | ||
- **Shared Preferences:** Used to store user login status and track whether the user has logged in before. | ||
- **API Configuration:** Integrate TheMealDB API for fetching recipes. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,110 @@ | ||
package com.example.recipeappiti.aboutDevelopers.view | ||
|
||
import android.content.Intent | ||
import android.net.Uri | ||
import android.os.Bundle | ||
import androidx.fragment.app.Fragment | ||
import android.view.LayoutInflater | ||
import android.view.View | ||
import android.view.ViewGroup | ||
import android.widget.TextView | ||
import com.example.recipeappiti.R | ||
import com.google.android.material.bottomnavigation.BottomNavigationView | ||
|
||
class AboutDevelopersFragment : Fragment() { | ||
|
||
private lateinit var userEmailIbrahim: TextView | ||
private lateinit var userLinkedInIbrahim: TextView | ||
private lateinit var userGitHubIbrahim: TextView | ||
|
||
|
||
private lateinit var userEmailHossam: TextView | ||
private lateinit var userLinkedInHossam: TextView | ||
private lateinit var userGitHubHossam: TextView | ||
|
||
private lateinit var userEmailMohaned: TextView | ||
private lateinit var userLinkedInMohaned: TextView | ||
private lateinit var userGitHubMohaned: TextView | ||
|
||
private lateinit var bottomNavigationView: BottomNavigationView | ||
|
||
override fun onCreateView( | ||
inflater: LayoutInflater, container: ViewGroup?, | ||
savedInstanceState: Bundle? | ||
): View? { | ||
// Inflate the layout for this fragment | ||
return inflater.inflate(R.layout.fragment_about_developers, container, false) | ||
} | ||
|
||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { | ||
super.onViewCreated(view, savedInstanceState) | ||
|
||
bottomNavigationView = requireActivity().findViewById(R.id.bottom_navigation) | ||
bottomNavigationView.visibility = View.GONE | ||
|
||
userEmailIbrahim = view.findViewById(R.id.userEmailIbrahim) | ||
userLinkedInIbrahim = view.findViewById(R.id.userLinkedInIbrahim) | ||
userGitHubIbrahim = view.findViewById(R.id.userGitHubIbrahim) | ||
|
||
userEmailIbrahim.setOnClickListener { | ||
sendEmail("ibrahim.mohamed.ibrahim.t@gmail.com") | ||
} | ||
|
||
userLinkedInIbrahim.setOnClickListener { | ||
openLink("https://www.linkedin.com/in/eibrahim67") | ||
} | ||
|
||
userGitHubIbrahim.setOnClickListener { | ||
openLink("https://github.com/eIbrahim67") | ||
} | ||
|
||
userEmailHossam = view.findViewById(R.id.userEmailHossam) | ||
userLinkedInHossam = view.findViewById(R.id.userLinkedInHossam) | ||
userGitHubHossam = view.findViewById(R.id.userGitHubHossam) | ||
|
||
userEmailHossam.setOnClickListener { | ||
sendEmail("hossamwalidgv@gmail.com") | ||
} | ||
userLinkedInHossam.setOnClickListener { | ||
openLink("https://www.linkedin.com/in/gv-hossamwalid") | ||
} | ||
userGitHubHossam.setOnClickListener { | ||
openLink("https://github.com/GreenVenom77") | ||
} | ||
|
||
userEmailMohaned = view.findViewById(R.id.userEmailMohand) | ||
userLinkedInMohaned = view.findViewById(R.id.userLinkedInMohand) | ||
userGitHubMohaned = view.findViewById(R.id.userGitHubMohand) | ||
|
||
userEmailMohaned.setOnClickListener { | ||
sendEmail("mohandadel2299@gmail.com") | ||
} | ||
userLinkedInMohaned.setOnClickListener { | ||
openLink("https://www.linkedin.com/in/mohand-adel-034013189/") | ||
} | ||
userGitHubMohaned.setOnClickListener { | ||
openLink("https://github.com/mohand3del") | ||
} | ||
|
||
} | ||
|
||
private fun sendEmail(email: String) { | ||
val intent = Intent(Intent.ACTION_SENDTO).apply { | ||
data = Uri.parse("mailto:$email") | ||
} | ||
startActivity(intent) | ||
} | ||
|
||
private fun openLink(url: String) { | ||
val intent = Intent(Intent.ACTION_VIEW).apply { | ||
data = Uri.parse(url) | ||
} | ||
startActivity(intent) | ||
} | ||
|
||
override fun onDestroyView() { | ||
super.onDestroyView() | ||
bottomNavigationView.visibility = View.VISIBLE | ||
} | ||
|
||
} |