The go-to place to pick out your meals. Just pick an ingredient (or more) and let us find you recipes!
Aaron Espinoza, Heston Montagne, Dylan Priebe, Jeremiah Stone, and Russell Sullivan are working together to create a web-app that connects users who want to improve their cooking skills to recipes that are relevant to their tastes and available ingredients. The goal of the app is to make cooking feel easier for aspiring cooks who find the process daunting by simplifying the research step.
- General Info
- Technologies Used
- Features
- Project Status
- Room for Improvement
- Getting Started
- Testing & Reports
TasteBase is the solution to figuring out what you want to cook. We intend to make recipe selection the easiest process in the world, based on the ingredients you have at home already. We hope to help everyone who cooks pick out their food more easily and deliberately.
- React Native
- Expo
- Expo Go
- Java
- SQL
- The Meal DB
This feature allows users to add and remove ingredients from their personal pantry so they can easily track their available ingredients.
This feature allows the app to suggest recipes to the user for them to cook. It uses the user's pantry to filter recipes based on ingredients the user has on hand.
Users can save existing recipes from the app's suggestion list or search results for quick access later.
This feature gives the user the ability to list the required ingredients necessary for their own recipes to be suggested later.
Project is: in progress
- Unit test for add ingredient to pantry react native input
- Unit test for remove ingredient from pantry react native input
- Unit test for tab navigation
- Loading and Storing User's favorite recipes to and from the database
- Connect pantry to backend with Spoonacular ingredient parsing.
- Search for recipes based on the user's available ingredients.
- Create user login & logout
- Recommend recipes based on different cultures. For example, when the user asks for Indian or Greek recipes.
- Recommend recipes based on food nutrients. For example, when the user asks for high-protein, high carbohydrate, zero-carbohydrate(keto), low-fat, low sugar, high sugar, etc.
- When the user has nothing in their pantry, ask them what kind of food they might want and give recommendations based off this initial user input
Here are instruction on how to run the app locally from your device.
- Node.js (v16 or higher)
- Expo CLI (
npm install -g @expo/cli)
-
Navigate to the frontend directory:
cd frontend -
Install dependencies:
npm install
-
Configure the backend API URL (optional): Create a
.envfile in the frontend directory and set your backend URL:EXPO_PUBLIC_API_BASE_URL=https://example-deployed-backend-url.comIf no
.envfile is created, the app will use the localhost, in which case you would need to run the backend locally too. This would not connect to the app's deployed server. If you do neither of these things, crucial features (including seeing recipes) won't work. -
Start the Expo development server:
npm start
-
Run on your preferred platform:
- Mobile: Install Expo Go app on your phone and scan the QR code
- Android Emulator:
npm run androidor run development server and input 'a' - iOS Simulator:
npm run ios(macOS only) - Web:
npm run webor run development server and input 'w'
The backend is already deployed and running on a server. The frontend automatically connects to the deployed backend API. No local backend setup is required for normal usage.
The deployed backend API documentation is available at the deployed server's Swagger UI endpoint. Go to base server url to see this documentation.
The frontend uses jest for testing components and methods. Testing files are located in the frontend/tests/ directory. Reports for tests are located in the frontend/tests/results/ directory.
The following are recommended commands for running the available unit tests.
npm test
Will run all available test suites. The only feedback is the Jest CLI output. No reports will be generated.
One or more space-separated test file names can be appended to the end of the command. Only those test suites will run.
npm run test:combined-report
Will run all available test suites. Then, an HTML report containing pass/fail status and execution times for all the tests will be generated. This report is named test-report.html and will be placed in the frontend/tests/results/ directory.
npm run test:reports
Will just trigger the generate-test-report.js script, which will run each test suite found in the frontend/tests/ directory or its subdirectories (.test.ts and .spec.ts files only). Each file will be run separately and an HTML test report, with pass/fail status and execution times, will be generated for each file. The html report will be named after the test file name (e.g. testSuite12.test.ts => testSuite12-report.html) and will be placed in the frontend/tests/results/ directory using a directory structure that mirrors where the file was found in the frontend/tests/ directory.
One or more space-separated test file names can be appended to the end of the command. Only those test suites will run and reports will only be generated for those files.
npm run test:coverage
Running this command will cause all available test suites to run. Then, a comprehensive coverage report of the entire frontend codebase will be generated in the frontend/tests/results/coverage/ directory.