An app built in Flutter for the prepAthon of Inter IIT Tech Meet 12.0.
- Fork and clone the repository
git clone https://github.com/bhav-khurana/inter-iit-prep.git
- Open the project with Android Studio (or VS Code)
- Create a
.env
file in the project directory and put in your OpenAI API key in the following format
OPENAI_API_KEY = #your-key-goes-here
- Run the app
flutter run lib/main.dart
The app seeks to harness the power of mobile applications in three key sectors, namely:
- FoodTech
- HealthTech
- EdTech
This app offers a multifaceted approach to address various aspects of health and education. In the FoodTech component, users can input their personal information and set a specific target weight within a designated timeframe. Leveraging OpenAI, the app calculates an estimated daily calorie requirement and offers a user-friendly interface for monitoring calorie consumption.
In the HealthTech segment, the app facilitates the search for specialized doctors and enables users to schedule appointments at their preferred time slots. The app retrieves doctor information from Firebase Firestore.
In the EdTech domain, users have the capability to generate flashcards from PDF files. Furthermore, users can specify the number of flashcards they wish to create, enhancing their learning experience.
The app is built using Flutter
as the frontend framework. It uses Firebase Firestore
to store doctors' data and integrates OpenAI gpt-3.5
API to calculate the approximate calorie consumption and generate a summary from the given text.
A custom input field which takes in the following parameters:
TextEditingController controller
: controls the text in the input fieldString hint
: the hint text to be shown in the field when it is empty
A custom feature button widget to redirect to a particular feature on the screen. It takes in the following parameters:
String image
: the path of the image to be shown as a leading widget in the buttonString title
: title to be shown on the button
An items container widget to add items for breakfast/lunch/dinner and calculate calorie count. It takes in the following parameters:
String foodType
: the food type to be shown at the top of the container.VoidCallback refresh
: a call back function to refresh the state of the parent widget
An item tile widget to show the item and its quantity in a tile. It takes in the following parameters:
String item
: the item name to be shownString quantity
: the quantity of the item to be shown
A custom navigation bar which takes in the following parameters:
Color color
: the background color of the navbarList<String> imageList
: the list of image paths (icons) to be shown in the nav barint currIdx
: the current index parameter which takes into account the currently selected iconFunction(int) updateIdx
: a function to update the current index in the parent widget
A custom app bar to show a back button and a centred title on the top of a screen. It takes in the following parameters:
String title
: the title to be shown
A doctor card widget to display the details of the doctor in the form of a card. It takes in the following parameters:
String name
: name of the doctor to be shown the cardString desc
: specialization of the doctorString availability
: the hours in which the doctor is availableString image
: path of the imageint phoneNo
: the phone number of the doctor
An end button widget to be shown at the bottom of a screen. It takes in the following parameters:
String text
: the text to be shown on the buttonColor color
: the background color of the button
A custom outlined button widget which takes in the following parameters:
String text
: the text to be shown on the buttonColor color
: the outline color of the button
A flashcard widget to show text in a flashcard. It takes in the following parameters:
Color color
: color of the text to be shownColor bgcolor
: the background color of the flashcardString text
: the text to be shown in the flashcard
A flashcard tile to show the information of a flashcard set. It takes in the following parameters:
String name
: the name of the flashcard setint noOfCards
: number of cards in the flashcard set
A custom load widget to show a circular progress indicator and some info text. It takes in the following parameters:
String? text
: the text to be shown while loadingColor color
: the color of the circular progress indicator
An info page widget to display an (optional) title, a question, an input field and a text button. It takes in the following parameters:
String? title
: (optional) title to be shown on the pageString question
: the question to be askedString hint
: the hint text to be shown in the input fieldTextEditingController controller
: a controller to control the text in the input fieldString buttonText
: the text to be shown the in the buttonFunction func
: the function to be called on button click
Simple text widgets to display medium/title text in the GoogleFonts.lato
font. It takes in the following parameters:
String text
: the text to be displayed
A simple info text widget to display info text in the GoogleFonts.lato
font and a light grey color. It takes in the following parameters:
String text
: the text to be displayed