GSoC Proposal Bug Logging Tool (BLT)
GSoC Proposal Bug Logging Tool (BLT)
GSoC Proposal Bug Logging Tool (BLT)
YASH SOMALKAR
INDIAN INSTITUTE OF TECHNOLOGY (BHU),
VARANASI
Github : Yashsomalkar
SLACK: YashSomalkar
RESUME | Email :
yashsomalkar@gmail.com
Phone No : 7057956369 |
LinkedIn
Timezone : ( GMT + 05:30 ) Asia / Kolkata - IST
Table of contents :
1. Personal Introduction 3
1.1 Work Experience 3
1.2 Previous Projects 4
1.3 Why do I wish to take part in GSoC 23 ? 4
1.4 Why OWASP ? 5
2. Start with app internationalization and localization (l10n) 6
2.1 File and Code changes. 6
Localization in the iOS apps 8
3. Adding Design for Dark Theme of the App. 12
3.1 Implement a generic theme manager for future themes. 13
Making Custom Themes 14
Adding the Bloc 16
ThemeEvent 16
ThemeState 17
ThemeBloc 17
Changing Themes 18
4. Still editing and adding Ideas. 22
1. Personal Introduction
I am Yash Somalkar , a 2nd year undergrad at Indian Institute of Technology
(BHU), Varanasi. I have been pursuing my Android for the past 1.5 years and have
done internships regarding this field. Android has always been a part of my life even
before I started its development, I am always curious about how things work and
what happens under the cover.I also have very keen interest in cybersec
TECHNOLOGIES :
2. Open Source Investigator(OSINT) at Saptang Labs :
(certificate) As an OSINT Analyst, I was responsible for finding and
creating APIs and data points for publicly available information. This
involved using a variety of tools and techniques to extract data from online
sources such as social media, news articles, and government websites. I
worked closely with software developers to identify the key data elements
that would be most useful for our organization and developed scripts and
code to extract this data accurately and efficiently(Web Scraping).
Additionally, I collaborated with other analysts to analyze the data and
identify trends and insights, which helped guide our organization's decision-
making processes based on publicly available information.
TECHNOLOGIES :
1.2 Previous Projects
These are some of my previous projects :
1. Unt(startup work) at UnTangle : (link)It is a team project and I am
in the core tech team.UtilizedAgora's VoiceSDK,Firebase Cloud Messaging,
and Flutter framework to develop two mobile applications with voice call
functionality. Implemented Real-time communication through the
integration of Agora's Voice SDK and utilized Firebase Cloud
Messaging for push notifications. UtilizedFlutterframework to create
visually appealing and intuitive user interfaces.
TECHNOLOGIES :
2. Prastuti App for Department TechFest (Prastuti) : (Github-link)
{PlayStore-Link} Utilized Flutter to design and develop the user interface
for a tech-fest information and event joining platform. Implemented
features such as event registration and notification system through the use
of Flutter widgets. Utilized design principles to create a visually appealing
and intuitive user experience.It has over 250+ downloads on PlayStore.
TECHNOLOGIES :
From the start of this journey, I had a special place for open source software
as all the things I learnt are directly or indirectly related to open source. Be
it Gradle or be it Android Studio, everything is open source. Now I want to
come back to the roots and apply my knowledge to where I started from.
For this open-source journey, I started by participating in Hacktoberfest 22
and successfully completed it. I am now applying for GSoC 23 in order to
know more about the open-source community and to apply my knowledge to
contribute something back to the open-source community. By this
opportunity, I also want to enhance my current knowledge and learn about
more efficient workflow strategies related to Android development.
1.4 Why OWASP ?
I am thrilled to share that I have embarked on a cybersec journey at the
beginning of my first year, fueled by a longstanding fascination with hackers
and all things tech. As an avid player of CTF (Capture the Flag), I was
ecstatic to be part of a team that secured 3rd position in the CSAW CTF
23 regionally, a prestigious event organized by NYU (New York
University).
● arb-dir - the path of the directory that contains the translation files.
● template-arb-file - the name of the template arb file that will be used as the basis for
generating the Dart localization files.
● output-localization-file - the name of the file for the output localization and
Below, you can find the content of the l10n.yaml file used in this guide.
FLUTTER_PROJECT
|-- ...
|-- android
|-- ios
|-- lib
| |-- src
| |-- l10n
| |-- intl_de.arb
| |-- intl_fr.arb
| |-- intl_hi.arb
| |-- intl_ja.arb
| |-- intl_ru.arb
| |-- main.dart
|-- pubspec.yaml
|-- ...
The intl_ar.arb file:
Material widgets,
Cupertino widgets,
These delegates allow us to use different languages throughout the app without
much hassle. Moreover, they localize Material’s and Cupertino’s widgets into ~78
languages (e.g. Material’s date picker) and set up text directions within the app.
Events (e.g user input values) come from one side, then the Bloc (the pipe) runs some
code in reaction to the event coming in (retrieve weather data, in this case). Finally, the Bloc
outputs State (package containing data).
ThemeEvent
There will be only one event ThemeChanged which pass the selected AppTheme
enum value to the Bloc.
ThemeState
Similar to the event, there will be only a single ThemeState. We will actually
make the generated class concrete (not abstract), instead of creating a new subclass.
There can logically be only one theme in the app. On the other hand, there can be
multiple events which cause the theme to change.
This state will hold a ThemeData object which can be used by the MaterialApp.
ThemeBloc
Bloc is the glue which connects events and states together with logic. Because
of the way we've set up the app theme data, ThemeBloc will take up only a few
simple lines of code.
Changing Themes
To apply a theme to the whole app, we have to change the theme property on
the root MaterialApp. The ThemeBloc will also have to be available throughout the
whole app. After all, we need to use its state in the aforementioned MaterialApp and
also dispatch events from the PreferencePage, which we are yet to create.
Let's wrap the root widget of our app as a BlocProvider and while we're at it,
also add a BlocBuilder which will rebuild the UI on every state change. Since we're
operating with the ThemeBloc, the whole UI will be rebuilt when a new ThemeState is
outputted.
Of course, the UI won't ever be rebuilt just yet. For that we need to
dispatch the ThemeChanged event to the ThemeBloc. Users will select
their preferred theme in the PreferencePage, but first, to make the UI a bit
more realistic, let's add a dummy HomePage.
PreferencePage is where the ThemeChanged events will be dispatched.
Again, because of the way we can access all of the app themes, implementing the UI
will be as simple as accessing the appThemeData map in a ListView.
For the implementation of a generic theme manager in the Flutter App, we can utilize
this particular method .