GSOC Proposal for it’s urgent

GSOC Proposal for it’s urgent

About me:

Name: Nitin Sharma

University: Lovely Professional University

Github: https://github.com/nitin-787

LinkedIn: https://www.linkedin.com/in/nitin787/

Email: nitinsharmaa787@gmail.com

Phone no: +91 73xxxxxxx71

Timezone: IST(GMT +5:30)

Project: https://ccextractor.org/public/gsoc/2023/itsurgent/

Discord: Reo#5557

Project Overview:

The goal of this project is to develop a notification app that enables callers to indicate the urgency of their calls. The app is designed to address the problem of interruptions that can disrupt productivity and cause frustration for both the caller and the called party. By providing a way for callers to communicate the urgency of their calls, the app allows the called person to make an informed decision about whether to answer the call immediately or wait until they are available.

It's important to note that this app is not a dialer or phone app, but rather a notification app that works in conjunction with the existing phone app. The user will be able to choose from different levels of urgency, such as "urgent" or "not urgent", and the called party will receive a notification indicating the urgency level of the call. The called party can then decide whether to answer the call immediately, ignore it, or respond at a later time.

Overall, this project has the potential to improve productivity and reduce interruptions by allowing users to better manage their incoming calls. In the following sections, we will discuss the features, technology, plan, and qualifications needed to successfully develop this app.

Problem:

In today's fast-paced world, we are constantly bombarded with calls and messages that can interrupt our work and other activities. This can be frustrating, and can also lead to decreased productivity and a feeling of being overwhelmed.

While some calls may be urgent and require immediate attention, others may not be as pressing and can wait until a later time. However, without a way to indicate the urgency of a call, the called party may feel obligated to answer the phone immediately, even if it's not convenient or necessary.

To address this problem, we propose a notification app that enables callers to indicate the urgency of their calls. By providing a way for callers to communicate the urgency of their calls, the called party can make an informed decision about whether to answer the call immediately or wait until they are available. This can reduce interruptions and improve productivity, while also providing a better user experience for both the caller and the called party.

Features:

The app will have several features that allow the caller to indicate the urgency of their calls and enable the called party to make an informed decision about whether to answer the call immediately or not. These features include:

  1. Urgency levels: The app will provide several levels of urgency, such as "urgent," "important," and "not urgent," that the caller can choose from when making a call.

  2. Notification*:* The app will send a notification to the called party indicating the urgency level of the call. The notification will also include the caller's name and phone number.

  3. Silent mode: The app will allow the called party to set their phone to "silent mode" during certain times, such as when they are in a meeting or sleeping. Calls with higher urgency levels will still be notified, but calls with lower urgency levels will be silenced.

  4. Customization: The app will allow the user to customize the urgency levels and notification settings to meet their specific needs.

  5. Compatibility: The app will be compatible with Android.

These features will help to solve the problem of interruptions by providing a way for callers to communicate the urgency of their calls and allowing the called party to make an informed decision about whether to answer the call immediately or not. In the following section, we will discuss the technology that we plan to use to build the app.

Technology:

To build the app, we plan to use Flutter for the front end and Firebase for the back end. Flutter is a cross-platform mobile app development framework that allows us to create high-quality, interactive mobile apps for both Android and iOS. Firebase, on the other hand, is a backend platform that provides a range of tools and services for building scalable and robust mobile apps.

We will use Flutter for the following reasons:

  1. Cross-platform compatibility: Flutter is a great choice for cross-platform app development as it allows us to create apps that work seamlessly on both Android and iOS platforms.

  2. Hot Reload: Flutter's Hot Reload feature allows us to quickly test and iterate on our app during development, saving time and making the development process more efficient.

  3. Widget-based UI: Flutter uses a widget-based UI system that provides a lot of flexibility in designing and customizing the app's user interface.

We will use Firebase for the following reasons:

  1. Real-time database: Firebase provides a real-time database that enables us to store and sync data in real time, ensuring that users get the latest data whenever they open the app.

  2. Authentication: Firebase provides a range of authentication options, including email and password authentication, as well as social login options like Google and Facebook.

  3. Cloud messaging: Firebase cloud messaging allows us to send push notifications to users, which will be a key feature of the app.

Overall, we believe that using Flutter and Firebase will allow us to build a high-quality, scalable app that meets the needs of users. In the following section, we will discuss the plan and timeline for the project.

Plan and Milestone:

The project will be divided into several phases, each with its own set of goals and deliverables. The following is an overview of the project plan and milestones:

Community bonding period (April 19 to May 20)

  • Interact and engage in the community, and get to know my mentors and fellow students. Also, I would try to learn about other ongoing projects in the organization, especially those related to Flutter.

  • I will be discussing the app flow in detail with mentors. I would go with a UI that is intuitive and easy to use and an app flow that is efficient as possible.

  • I have already researched some tools that would be used while building this app, for example, a Telephony library, call launcher, system alert, broadcast receivers and background services, etc. During the community bonding period, I would explore more about the tools that can be used to do the project and discuss the final choice of tools/ libraries with the mentor. Also, this app shouldn't be using many third-party libraries packages, I will try to make it as simple as possible.

  • Since this app would be published on the Google Play store, I would start preparing assets like icons.

  • Finalize deadlines and milestones with the mentor and modify if any need arises.

  • MILESTONE 1 (June 13 to June 26) - Discussion on the design and workflow of the app and setup of the basic dialer UI

  • Set up the Flutter project and repo on GitHub.

  • Create the app's design and get feedback on the plans from the mentor and any modifications by the mentor if given.

  • After getting confirmation for the design, I will go on coding part of the dialer UI of the app in the second week. The app will get all the contacts from users' contact lists and show them in the app. Users can choose any saved contact or dial a number for calling.

  • MILESTONE 2 (June 27 to July 12)- Firebase server setup

    • Set up the Firebase project and set up Firebase Cloud Messaging and Firebase Firestore.

    • Also, learn about the Firestorm database and research its querying and scaling abilities.

    • Set up a mock server to test the features of the server.

    • Firebase Firestore would be used for storing the data of its better integration with Android and improved querying compared to Firebase's real-time DB.

    • Each user would have their unique id linked with the phone number. We can send notifications and query users using that id. We can implement it as explained in this blog - link

  • MILESTONE 3 (July 12 to July 26) - Auth and sign in (email and OAuth)

  • Google and Facebook OAuth would also be implemented for easy sign-in.

  • The profile data and phone number would be saved on the server.

  • MILESTONE 4 (July 26 to August 21)- Decide urgency message and rating

    • Set up a broadcast receiver whenever a call is received and a call is made, and display an appropriate notification regarding that.

  • Set the urgency message and rating for any call. The receiver will get a notification of the message and rating if the user has installed the app or will get a text message to install the app.

  • The notification would be delivered by Firebase cloud messaging.

  • Discuss the required changes for the completed milestones with the mentors.

  • All the features would have been tested before, but now the app would be tested as a whole in the production environment. Ensuring that none of the code is breaking and will be solving any issue raised by the mentor.

  • By the end of the first week (24th July), the basic version of the app would be ready according to phase 1 evaluation.

  • The features till that would be documented and I will post a blog for progress made till phase 1 (Evaluation time August 15 to August 19).

  • MILESTONE 5 (August 22 to September 10) - Feature “urgent only notification”

    • Users can set “notify for urgent calls only” basically setting up the minimum rating for a call so that he/she gets a notification. For example, the user has to go to a meeting. Then they can set min rating to 8/10, so for only very urgent calls they get the notification. By default, it would be set to 5/10

    • It would be implemented by filtering out the rating of an incoming call. If the urgency rating is more than the incoming call rating, then display the notification otherwise not and call the call

    • Add the app to quick tiles of the phone for easy access. Users can enable and disable the app from quick settings only.

  • MILESTONE 6 (September 11 to September 25) - Final testing on devices and publishing on the Play Store

    • By this time mentor would approve the design of the app. Before uploading on the play store, I will finish the final icon, banner, screenshot, and description needed while uploading on play store.

    • The app review takes time, so by that time I will start writing the blog post.

    • The app is almost ready, the app would be listed on the play store for “early access”.

    • Firebase Analytics would also be set up for the app. It provides many analytics tools built-in like crashlytics, logging, etc. I would see where users are struggling and try to improve in the following weeks.

  • MILESTONE 7 (September 25 to October 15) - Show floating UI when the user makes a call from any dialer app.

    • The app would show a floating UI (android) when the user calls from any dialer app. Users can write the reason for the call and the rating of urgency. Package - https://pub.flutter-io.cn/packages/system_alert_window

    • Final testing of the app on various devices.

    • A blog post for the app and my GSoC experience to date.

    • Release the app on the play store.

    • Hand over all the app, repo and Firebase server config to the mentor for final evaluation

  • Optional MILESTONE

    • Automatic CI/CD for repo for releasing builds

If I get free time between I will also work on setting up ci/cd for the repo by Github Actions for automating many chore tasks like releasing builds, signing up apps, etc.

There are various tools listed on the Flutter deployment doc like code magic and Fastlane that could be used for setting up the workflow. Appropriate tools and actions would be implemented after a discussion with the mentor

  • PR and issue template for bugs, features or feedback.

Users can report bugs, request and give feedback by ready-made templates on GitHub. These templates auto-populate the issue/pull-request description field and provide a skeleton framework that contributors can fill out. They help provide a baseline standard of informational quality and organizational rigour.

  • Add a block list and sync across devices.

Users can block certain people if they feel their notification is annoying. Such contacts would be blocked to call too.

Also, a sync feature would be implemented, so when a user login from another device then all logs will also be synced up. Such a feature would be useful so users don’t have to set up the settings, ratings, and block list when installing from a new device.

This feature would be related to privacy, so I will be discussing with my mentor first whether to save sensitive data like contact and proceed accordingly.

Expected Deliverables:

At the end of the 16th-week project, I expect to deliver the following:

  1. An Android app that enables the caller to determine the urgency of a call and notifies the receiver accordingly

  2. A user-friendly and intuitive user interface that allows users to easily set the urgency level of a call.

  3. A secure and stable back-end infrastructure powered by Firebase that handles call notifications and user data storage.

  4. Detailed documentation of the app's features and functionalities, including user guides and technical specifications.

  5. Codebase for the app, including detailed documentation on how to set up the development environment and deploy the app to the Google Play Store.

I will also provide ongoing support and maintenance for the app post-launch, including bug fixes, security updates, and feature enhancements as needed.

GSoC Participation and Mentorship:

As a GSoC participant, I am excited about the opportunity to work on this project and contribute to the open-source community. I am committed to following the guidelines and expectations of the GSoC program and will prioritize communication and collaboration throughout the project.

To ensure the success of the project, I propose the following approach to working with my two assigned mentors:

  1. Regular check-ins: I will schedule regular check-ins with my mentors to provide updates on my progress, discuss any challenges or roadblocks, and seek feedback and guidance.

  2. Collaborative decision-making: I will work collaboratively with my mentors to make important decisions related to the project, such as feature prioritization, technical design, and deployment strategy.

  3. Timely communication: I will communicate with my mentors in a timely and professional manner, responding promptly to emails and messages and keeping them informed of any changes to my availability or schedule.

  4. Knowledge sharing: I will actively seek to learn from my mentors and share my knowledge and skills with them and the wider open-source community.

I am excited about the opportunity to work with my mentors and learn from their expertise, and I believe that our collaboration will be a key factor in the success of the project.

About me:

Hello, my name is Nitin and I am a computer science student at Lovely Professional University. I am excited to submit my proposal for the GSoC project "Urgent Call Notification App" and share my passion for mobile app development and user experience.

Throughout my academic career, I have developed a strong interest in mobile app development and have worked on several projects that have helped me hone my skills in Flutter and Firebase. As a user-focused developer, I am committed to creating apps that are intuitive, efficient, and enjoyable to use.

In addition to my academic pursuits, I am an active participant in the open-source community. I have contributed to several open-source projects, including participating as both a maintainer and participant in Hacktoberfest, a global event promoting open-source contributions. These experiences have given me a strong appreciation for the collaborative and iterative nature of open-source development and have taught me valuable skills in project management, communication, and teamwork.

I believe that the "Urgent Call Notification App" has the potential to make a real difference in the lives of users by providing greater control over their communication and helping to reduce unnecessary interruptions. I am eager to use my skills and experience to contribute to the project and help bring it to fruition.

Thank you for considering my proposal, and I look forward to the opportunity to work with my mentors and contribute to the open-source community through GSoC.

Why I am the best candidate for this project?

I truly believe that I am the best candidate for this GSOC project. I've already worked on the same project before, even though it was unofficial. During that time, I had a mentor and some previous contributors who guided me, and I made some significant contributions, like adding CI/CD pipelines and making the app responsive for all mobile screens. The team was pretty happy with my work, and I got some great feedback. I can show you some proof of my work, too! With my previous experience and deep understanding of the project, I'm confident that I can help make this GSOC project even better.

Proof of my work: CCExtractor It’s urgent (16 commits) - https://github.com/MarkisDev/its_urgent/commits?author=nitin-787

Contributions to open source:

CCExtractor It’s urgent (16 commits) - https://github.com/MarkisDev/its_urgent/commits?author=nitin-787

Hacktoberfest (mentor) - https://github.com/nitin-787/mynotes

Google’s material icon (bug) - https://github.com/google/material-design-icons/issues/1397

OpenAi (bug) - https://github.com/openai/openai-cookbook/issues/174

Carbon lang (bug) - https://github.com/carbon-language/carbon-lang/issues/2564

Appwrite (bug) - https://github.com/appwrite/appwrite/issues/5222

Personal projects:

UNi-Share - https://github.com/nitin-787/mynotes

UNI-Share is a media-sharing app that helps students share and access resources and materials with their fellow students at their institute. It was also part of Hacktoberfest 2022, a month-long event that celebrates open-source software and encourages community involvement.

With UNI-Share, you can easily share notes, assignments, tutorials, notices, and more with your fellow students. The app supports a wide range of file formats, including PDF, Word documents, videos, and audio files, so you can share whatever resources you have on hand.

In addition to sharing resources with the entire institute, you can also use UNI-Share to have private chats with other students. This allows you to discuss and collaborate on projects and assignments in real time and provides a convenient way to stay connected with your peers.

Technology used:

  • Flutter

  • Firebase

  • Figma

  • GitHub

Ayumi gpt - https://github.com/nitin-787/Ayumi-gpt

The Ayumi-GPT Mobile App is a chatbot mobile application that enables users to have interactive conversations with chatbots powered by the OpenAI GPT (Generative Pre-trained Transformer) model. The app is designed to provide a personalized and conversational experience, bridging the gap between traditional chatbots and human conversations.