Skip to content

aravindr001/notify2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

75 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation


Notify.AI

β—¦ Keeps you ahead!

β—¦ Developed with the software and tools below.

JSON


πŸ“– Table of Contents


πŸ“ Overview

Our project involved getting familiar with the Android Development environment and thus developing an application to solve the following problem. In today's busy world, we often lose track of time. As students ourselves, we often struggle with wasting our time in learning things that do not produce any outcome. We wanted to do something about this by addressing the issue and providing an innovative solution. As a result, we came up with the idea of creating a mobile application that helps us keep track of time and assist in learning by filtering key points using generative AI. So what our app does is fairly simple, you enter the topic you want to learn and our generative AI model gives the most filtered-out key points for you which makes the learning process fast and simple. Insert the PDFs you want to summarise, our AI model summarises the content and results in the summary in 1-2 lines. And in your app, you can ask questions to the fine-tuned AI model and get a response in a brief. Finally, the app gives custom notifications as the user inputs keywords in the app the app triggers notifications according to the keywords which are provided by the user.


πŸ“¦ Features

  • Smart learning through Generative AI
  • PDF summarising using AI
  • Customized Message Notifier

πŸ“‚ Repository Structure


βš™οΈ Modules

Lib
File Summary
boxes.dart This code imports and initializes Hive, a lightweight and efficient local database solution. It defines two Box instances-"keywords" and "notifications"-to manage data storage, retrieval, and manipulation.
main.dart This code sets up and initializes the required dependencies for a notification app. It handles requesting notifications permissions, initializes the Hive database, registers an adapter for NotificationDataModel, opens Hive boxes for keywords and notifications, and sets up the app UI with a material theme and splash screen.
app_theme.dart This code defines a customizable app theme for a Flutter application, including colours and text styles. It also provides a TextTheme object, which maps different text styles to specific typography elements like headings and captions. The code aims to provide a unified and consistent visual design for the app interface.
Model
File Summary
homelist.dart The code defines a class called HomeList that represents a list of home screen options in a Flutter application. Each option has an image path, a name, and a navigateScreen property, which determines the widget to be displayed when the option is selected. This code provides functionality for navigating to a chatbot screen, a PDF screen, and a chats screen.
models_model.dart The code defines a ModelsModel class with properties like id, created, and root. It includes a constructor to initialize the model, a factory method to parse JSON and create model instances, and a static method to convert a model snapshot into a list of ModelsModel objects.
chat_model.dart The ChatModel class is a data model that represents a chat message. It has two properties: "msg" for the message content, and "chatIndex" for the index of the chat. With a constructor and a factory method, it can easily convert JSON data into an instance of the ChatModel class.
notification.dart This code defines a data model class for storing notification data. It uses the Hive library for serialization and deserialization. The class has fields for title, text, package name, and creation timestamp.
notification.g.dart This code is a generated TypeAdapter for the NotificationDataModel class. It provides methods to read and write instances of this class in a binary format. It specifies how the object fields should be serialized and deserialized.
Constants
File Summary
api_consts.dart This code sets the base URL and the API key for connecting to the OpenAI API. It provides the essential information required to initialize and authenticate API calls in subsequent code segments.
Services
File Summary
assets_manager.dart The code defines an AssetsManager class with static variables that store paths to various image files and an animation file used for loading.
local_notification.dart This code snippet defines a class called "LocalNotification" that provides functions to initialize and show local notifications using the Flutter Local Notifications plugin. The "initialize" function sets up the necessary settings for notifications on both Android and iOS platforms, while the "showBigTextNotification" function displays a notification with a given title and body text.
api_service.dart The code provides functionality for making API requests to fetch models, sending messages using ChatGPT API, and sending generic messages. It also handles error cases and parses the response data into appropriate models.
Providers
File Summary
models_provider.dart The ModelsProvider class is responsible for managing the current and available AI models. It provides a method to get all the available models from an API and another method to set the current model. These functionalities are important for the overall functioning of the application.
chats_provider.dart This code defines a ChatProvider class that manages a list of chat messages. It provides methods to add user messages and send them to an API. The API service retrieves responses based on the message and chosen model id. The code also uses the ChangeNotifier class to notify listeners of any changes in the chat list.
Custom_drawer
File Summary
drawer_user_controller.dart The code provides a customizable drawer controller widget for Flutter apps. It supports animation, scrolling, and user interaction to open and close the drawer. It also allows users to define their own menu view and uses a side panel for navigation. The code ensures a seamless and smooth user experience.
home_drawer.dart This code implements a responsive home drawer menu with multiple options. It uses Flutter's Material Design elements and allows for navigation between different screens. It also includes animations and styling for a visually appealing user interface.
Navigator
File Summary
chat.dart The code initializes a Flutter ChatBot application by providing chat functionalities. It uses providers to manage the state of chat models and chat data and implements a multi-provider setup. The code also sets up the main UI elements and themes for the application.
Pages
File Summary
chat_noti.dart The code represents a chat screen in a messaging app. It includes functionalities such as displaying chat messages, sending messages, and showing typing indicators. It utilizes various Flutter widgets, providers, controllers, and focus nodes to manage message input and display.
message_screen.dart This code defines a message screen in a Flutter app. It utilizes Hive to store and retrieve notifications. The screen displays a list of notifications in a ListView, with each item showing the notification title, text, package name, and creation time. The notifications are displayed in reverse order with a divider between them.
pdf_screen.dart This code is a Flutter application that allows users to select and summarize PDF files using an AI model. It uses the File Picker package to select the PDF file, the SfPdfViewer package to display the file, and the ReadPdfText package to extract the text from the PDF. It also uses an API to send the extracted text to an AI model for summarization. The summarized text is then displayed to the user.
navigation_home_screen.dart The code is a Flutter app that serves as a navigation home screen. It includes a custom drawer and different screens that can be accessed through the drawer. The screens include a home screen, a keyword screen, and an about screen. The app allows users to switch between these screens based on the selected option in the drawer.
about_screen.dart The code defines a screen in a Flutter app called AboutScreen. It constructs a blank screen using the Placeholder widget.
keyword_screen.dart This code is a Flutter application that allows users to add and view a list of keywords. The app uses Hive as the database for storing the keywords. The KeyScreen widget displays the keywords in a ListView, allowing users to delete individual keywords. It also provides a FloatingActionButton for adding new keywords using a dialogue box.
home_screen.dart This code is for a Flutter app that listens to phone notifications and displays them in a grid view. It uses the flutter_notification_listener plugin to handle notifications and the flutter_local_notifications plugin to show local notifications. The code also includes functionalities for starting and stopping the notification listener service and handling different types of notifications. It has a responsive design and uses animations for smooth transitions.
chat_screen.dart This code is a Flutter application that listens for notifications from messaging apps and displays them in a chat-like interface. It utilizes the Flutter Local Notifications plugin to show local notifications when certain keywords are mentioned in the messages. The code also includes functionality to start and stop the notification listening service. There is also a pop-up menu with options for managing synonyms, settings, and logout.
splash_screen.dart The code defines a SplashScreen that uses the animated_splash_screen package to display a fading transition splash screen with an image. Once the splash screen finishes, it navigates to the NavigationHomeScreen using a left-to-right page transition. The splash image size is set to 200.
home_drawer.dart The code is for a Flutter widget called HomeDrawer, which is a custom drawer widget for a mobile app. It provides navigation options with icons and labels, as well as a sign-out option. The drawer uses animations for visual enhancements. It allows the user to switch between different screens within the app by selecting the desired option in the drawer.
Widgets
File Summary
text_widget.dart The code defines a reusable TextWidget class in Flutter that creates a text element. It allows customization of labels, font size, colour, and font-weight. It defaults to a black colour and medium font weight.
chat_widget.dart The ChatWidget class is a Flutter widget that displays a chat message. It can either show the message as plain text or animate it using the AnimatedTextKit widget. The appearance of the widget depends on the chatIndex and shouldAnimate properties. The widget also includes an image and can display icons for liking or disliking the message.
backwidget.dart The code defines a "Back" widget that is a button with an arrow icon. When pressed, it navigates the user back to the "NavigationHomeScreen" using Flutter's navigation functionality. The button is styled with a black colour. This widget can be used to provide a back button functionality in a Flutter application.

πŸš€ Getting Started

Dependencies

Please ensure you have the following dependencies installed on your Android phone:

- ℹ️ Flutter

Install: https://docs.flutter.dev/get-started/install
Video resources:

- ℹ️ Visual Studio Code

Install: https://code.visualstudio.com/

- ℹ️ Android simulator (or external Android device)

Video resources: https://www.youtube.com/watch?v=GhuiNcOEv1A

πŸ”§ Installation

  1. Clone the repository:
git clone https://github.com/aravindr001/notify2
  1. Change to the project directory:
cd notify2
  1. Download this repository locally on your system flutter_notification_listener using the repository given below:
    Reason: The authorized repository has some bugs, so it was necessary to fork it and fix it.
git clone https://github.com/aravindr001/flutter_notification_listener.git
Screenshot 2023-09-23 at 3 35 19 PM

You should replace the path of the flutter_notification_listener with your path

  1. You should add the path of the cloned
flutter_notification_listener:
    path: <YOUR_PATH>
  1. Install the dependencies:
pub get

This should install all the dependencies of the app

πŸ€– Running NOTIFY.AI

Screenshot 2023-09-23 at 7 49 23 PM
  • Go to the lib/main.dart



    Screenshot 2023-09-23 at 3 52 04 PM



  • Boot your Android emulator or connect an Android device



Screenshot 2023-09-23 at 4 00 05 PM



  • Make sure the device is selected (Emulator or physical device)


    Note: You can use your Android device just by connecting it to the laptop.

    Screenshot 2023-09-23 at 4 00 10 PM



  • Now run the app by using the command

flutter run

or clicking on the Run without debug option



Screenshot 2023-09-23 at 3 53 35 PM Screenshot 2023-09-23 at 3 54 30 PM



If the above are satisfied you will be welcomed with our splash screen and our homescreen

NOTIFY AI

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published