Skip to content

Nutri+ is a personal iOS project built with Swift, MVVM architecture, and UIKit. Utilizing AI-powered food recognition and personalized meal planning, it helps users track their meals and receive tailored dietary advice to support healthier living. With the use of Combine for reactive UI updates, this app offers a seamless and intuitive experience.

License

Notifications You must be signed in to change notification settings

exproot/NutriPlus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Swift Version License Platform

Nutri+


logo

Tracking meals, getting insights and living a healthier life never been much easier with AI-powered Nutri+.

Screenshots and Demos

Auth & Assessment Modules

  • Authenticate with Firebase, fill up your personal assessment data and get ready to experience Nutri+.

Adding & Scanning Meals

  • Easily track your meals — add them manually or scan their images using Gemini AI.

Meta

Ertan Yağmur – Medium - LinkedIn[email protected]

Platform & Requirements

Nutri+ is a native iOS application built with Swift and UIKit, designed to offer seamless meal tracking and nutritional insights.

  • iOS 15.2+
  • Xcode 14.0+

Third-Party Libraries

Nutri+ utilizes several third-party libraries for enhanced functionality. Below is a list of the libraries used:

Architecture

Nutri+ follows MVVM architecture to ensure separation of concerns and better maintainability. The app utilizes Dependency Injection (DI) for modularity and scalability. By adopting Protocol-Oriented Programming, the project ensures flexibility and ease of testing.

Combine is used to bind the UI with the ViewModel, providing a reactive and efficient approach for handling updates and changes in the user interface.

AI Integration with Gemini

Nutri+ leverages Gemini AI for food recognition and nutritional insights. Users can capture photos of their meals, which are sent to Gemini along with a specific instruction. Gemini processes the image and returns a structured JSON response containing the meal’s name, calories, and nutritional information.

In addition to meal recognition, Nutri+ integrates a chat feature with Gemini, allowing users to receive personalized health and diet advice, much like consulting a nutritionist.

Data Storage and Authentication

Nutri+ uses Firebase Firestore for data storage, ensuring real-time updates and seamless synchronization across devices. All meal data, including user-specific nutrition information, is securely stored in the cloud.

Firebase Authentication is implemented to manage user sign-in and sign-up, providing a secure and simple way for users to access their personalized meal tracking data.

Firebase and Gemini SDK Setup

Firebase Configuration

To enable Firebase functionality in Nutri+, you need to add your GoogleService-Info.plist file to the project:

  1. Go to the Firebase Console.
  2. Create a new project or select an existing project.
  3. Add an iOS application to your Firebase project.
  4. Download the GoogleService-Info.plist file and place it in the Supporting directory of the project.

Gemini SDK API Key Configuration

To use Gemini AI for food recognition and nutritional insights, you must configure your API key:

  1. Create a SECRETS configuration file with your Gemini AI API key:
  GEMINI_API_KEY: "YOUR_API_KEY"
  1. Set this file as configuration for both debug and release in the project settings.

Testing

Currently, unit tests have not been implemented for this project. Although the app follows best practices in terms of architecture and modularity, automated tests are yet to be added.

Contribute

I would love you for the contribution to the project, check the LICENSE file for more info.

About

Nutri+ is a personal iOS project built with Swift, MVVM architecture, and UIKit. Utilizing AI-powered food recognition and personalized meal planning, it helps users track their meals and receive tailored dietary advice to support healthier living. With the use of Combine for reactive UI updates, this app offers a seamless and intuitive experience.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages