Tasty is a healthy meal planning application developed with React Native and TypeScript, offering both mobile and web versions. Users can create personalized meal plans, track their inventory through barcode and receipt scanning, and receive recipe recommendations based on their inventory and goals.
-
User Registration and Login:
- Create a profile with basic information such as gender, age, height, and weight.
-
Goals:
- Set a goal — Weight Gain, Weight Maintenance, or Weight Loss.
-
Dashboard:
- View personalized progress and statistics, including calorie intake and recent activities.
-
Inventory Management:
- Scan food products while shopping or in any situation and automatically add them to inventory.
-
AI-powered Recipe Recommendations and Generation:
- Receive recipes tailored to your inventory and dietary goals.
-
Multi-platform Support:
- Available on mobile or web.
-
Barcode Scanner, Receipt Scanner, and Food Recognition through Scanning:
- Scan food products for quick addition to inventory via package barcode; scan receipts for quick food product recognition and addition to inventory; scan food that is recognized through artificial intelligence with generated nutritional values.
Click here for a video demonstration of the application.
-
Frontend:
- React Native - Framework for building native apps using React.
- TypeScript - A programming language and typed superset of JavaScript for building reliable applications.
- NativeWind - Library for using Tailwind CSS with React Native, making styling easier and more consistent across platforms.
- Expo Go - Platform for universal native apps for Android, iOS, and web.
- Expo Camera - Used for barcode scanning and image capture.
-
Backend:
-
Documentation
- MS Word - For creating project and application documentation and brochure.
- MS PowerPoint - For creating project and application presentation.
- Bozhidar Dimov
- Email: BADimov21@codingburgas.bg
- Full-Stack Developer
- Creator of "Tasty"
- Student of Programming and Information Technologies at High School of Computer Programming and Innovation, Burgas
- Specialty: Applied Programming
- Boris Milev
- Email: BRMilev22@codingburgas.bg
- Full-Stack Developer
- Creator of "Tasty"
- Student of Programming and Information Technologies at High School of Computer Programming and Innovation, Burgas
- Specialty: Robot Programming
To get started, make sure you have the following installed:
- Node.js: Download Node.js
- Expo CLI: Install by copying and pasting this command in your terminal:
npm install -g expo-cli
-
Clone the repository by copying the commands and pasting them in your terminal:
git clone "https://github.com/BRMilev22/tasty.git" cd tasty
-
Install dependencies by copying the commands and pasting them in your terminal:
npm install
npx expo start
Follow the instructions to run the application on your preferred device or emulator.
-
To run tests for core components and utilities, copy the command and paste it in your terminal:
npm test
Dashboard |
---|
![]() |
Suggested Meal Management Menu |
![]() |
Beverage Barcode Scanning |
![]() |
User Inventory |
![]() |
Here you will find links to the public documentation, presentation, and brochure of the project and application. They are provided for reference only and should not be used as templates for other projects or for other purposes without explicit permission from the creators of "Tasty".
📄 Documentation
📊 Presentation
📘 Brochure
The "Tasty" project is written in React Native with TypeScript and uses one of the most widely adopted compatible architectures, namely - feature-sliced architecture.
Overview of the structure of all directories and the most important files in them:
tasty/
├── .expo/
├── .firebaserc
├── .gitignore
├── android/
├── app.json
├── babel.config.js
├── docs/
│ ├── brochure/
│ ├── presentation/
│ └── tasty_public.pdf
├── eas.json
├── expo-env.d.ts
├── firebase.json
├── firestore.rules
├── index.js
├── ios/
├── metro.config.js
├── package-lock.json
├── package.json
├── react-native.d.ts
├── README.md
├── scripts/
│ └── testReceiptProcessing.ts
├── SECURITY.md
├── src/
│ ├── pages/
│ │ ├── meals/
│ │ │ ├── addMeal.tsx
│ │ │ ├── mealDetail.tsx
│ │ │ ├── planMeal.tsx
│ │ │ └── savedMeals.tsx
│ │ ├── recipes/
│ │ │ ├── allRecipes.tsx
│ │ │ ├── RecipeDetailScreen.tsx
│ │ │ └── recipes.tsx
│ │ ├── weight-tracking/
│ │ │ └── trackWeight.tsx
│ │ └── welcome/
│ │ └── welcomeScreen.tsx
│ ├── shared/
│ │ ├── api/
│ │ │ ├── backend/
│ │ │ │ ├── index.ts
│ │ │ │ ├── package-lock.json
│ │ │ │ └── package.json
│ │ │ └── services/
│ │ │ ├── mealService.ts
│ │ │ ├── receiptProcessing.ts
│ │ │ └── recipeService.ts
│ │ ├── assets/
│ │ │ ├── fonts/
│ │ │ │ └── SpaceMono-Regular.ttf
│ │ │ └── images/
│ │ │ ├── adaptive-icon.png
│ │ │ ├── favicon.png
│ │ │ ├── icon.png
│ │ │ ├── splash.png
│ │ │ ├── tasty-logo.png
│ │ │ └── default-meal.jpg
│ │ ├── config/
│ │ │ ├── firebase.json
│ │ │ ├── firebaseConfig.ts
│ │ │ ├── firestore.rules
│ │ │ └── tailwind.config.js
│ │ ├── lib/
│ │ │ └── Colors.ts
│ │ ├── types/
│ │ │ ├── env.d.ts
│ │ │ └── navigation.ts
│ │ └── ui/
│ │ ├── _tests_/
│ │ │ └── StyledText-test.js
│ │ ├── EditScreenInfo.tsx
│ │ ├── ExternalLink.tsx
│ │ ├── Logo.tsx
│ │ ├── StyledText.tsx
│ │ ├── Themed.tsx
│ │ ├── useClientOnlyValue.tsx
│ │ ├── useClientOnlyValue.web.tsx
│ │ ├── useColorScheme.ts
│ │ └── useColorScheme.web.ts
│ └── widgets/
│ ├── meal-cards/
│ │ └── MealSelector.tsx
│ └── nutrition/
│ └── NutritionCard.tsx
└── tsconfig.json