Page MenuHomePhabricator

Proposal for Outreachy Round 18
Closed, DeclinedPublic


Profile Information

Name: Vanshika Arora
IRC nickname on Freenode: vanshikaarora
Web Profile:
Location: India
Typical working hours: Between 1pm to 12 pm
Insert project title here


About the App
The Wikimedia Commons Android app allows users to upload pictures from their Android phone/tablet to Wikimedia Commons. Wikimedia commons accepts only freely licensed media files (that are not subject to any copyright). Users can upload images and then add various tags specific to them such as category, title, description, and license.

The goal of the project is to actively involve our users to contribute more media via the app. We want to uplift the status of commons app as an application has a wide variety of informative media. And for that we need user’s actively contributing media to the commons app. Adding a leaderboard aims to increase rate of contribution by users by involving competition amongst the users.
Mentors : Vivek Maskara , Ujjwal Agarwal


Community Bonding Period:

  • Communicate and bond with students and mentors
  • Create specific issues for the project
  • Getting familiar with the app architecture
  • Getting familiar with all components of Achievement activity
  • Reading about the API’s to be used as a part of the project
  • Finalising UI for the project upon suggestion from the mentors


  • Community bonding report
  • Blogs about the experience, app architecture

Week 1

  • Creating a separate fragment for leaderboard and introducing the new tab in Achievements
  • Adding Bottom Navigation Drawer and creating Sub-fragments of the drawer
  • Adding filter options, RecyclerView and creating layout for each item of the RecyclerView
  • Implementing pagination and adding page no subtitles at the bottom of the list

Complete UI for the leaderboard including the list items

Week 2

  • Adding API calls to and parsing the API response for all the three fragments
  • Displaying username and avatar in the RecyclerView
  • Implementing all the three filters and verifying API response


  • Complete leaderboard activity with three fragments for uploads, nearby each containing more than one pages
  • Leaderboard with filtered response like weekly, monthly, yearly all time.

Week 3

  • Fetching and displaying API response per page (like 20 users per page then next page)
  • Working on Pagination
  • Implementing Scroll state listener(pagination) to call API on scroll state changed(if required, example in case of more than 20 users per page)
  • Writing Unit tests


Leaderboard Activity with pagination

Week 4

  • Displaying and Highlighting the user’s rank at the bottom of list in each page
  • Update the leaderboard after 1-hour or so or whenever user navigates to Leaderboard after a pre-defined time
  • Implementing caching feature for lists fetched while navigating to Achievements activity
  • Adding users current rank into SharedPreference


  • Leaderboard activity with caching feature and other necessities stored in shared preference
  • Re-cahing while updating leaderboard or when user makes a new contribution

Week 5

  • Adding a refresh button in Leaderboard
  • Display a popup to view leaderboard whenever user makes a new contribution
  • Refresh the leaderboard every-time user makes a new contribution
  • Re-cache the list fetched whenever user makes a new contribution or navigates back to achievements
  • Also remember user’s current choice of filter (weekly, monthly, yearly) and add it into shared preference


  • Leaderboard with refreshing button
  • Auto refreshing of leaderboard everytime the user makes a new contribution

Week 6

  • Implementing search by username
  • Adding a search icon to in the fragment that can expand to a Search fragment for searching users by username
  • Implementing API calls for searching a user by username in the leaderboard
  • Writing Uniit tests

Search Fragments which displays the user detail if the correct username was entered

Week 7

  • Implementing and RxJava and TextChange listener on SearchView to provide dynamic Search results
  • Implementing API calls for getting user details by tapping on any user
  • Tapping on any Search results leads to the user details activity

Complete search fragment UI + navigating to user detail activity on tapping any search result

Week 8

  • Creating basic UI for user profile
  • Adding Editing option for avatar
  • Creating User Detail UI for viewing details of other users


  • Complete Profile Activity UI
  • UI for other user details

Week 9

  • Fetching details about current user from the API
  • Displaying the user details accordingly as fetched from API

User profile section which is navigated from Leaderboard Tab

Week 10

  • Enabling edit option for avatar
  • Restricting the editing rights to people with level greater than 5
  • For people with level less than or equal to 5 display appropriate popup or informative dialog on how to enable editing right for images
  • Send the modified avatar to server

Complete user profile with option for editing avatar for users with Achievement level greater than 5

Week 11

  • Storing current details of user in shared preference so that user can view Profile section in offline mode
  • Update the details when re-navigates to the profile section and also update the shared preference.
  • Tapping on any item on leaderboard takes to the user detail activity
  • Fetch user details from API
  • Add a follow button in user detail activity
  • Add a Following button in Leaderboard activity
  • Create an activity for showing list of people you follow


  • User Detail activity
  • User details can also be shown in offline mode
  • Activity for “People you follow”

Week 12

  • On clicking the Follow button for any user store the user details in local database
  • Display the “People you follow” list by fetching data from local database which can alo be viewed in offline mode
  • Tapping any item in the list takes to user details (also available offline) and fetch the recent user details from API when internet connection is enabled
  • Update the local database whenever the details are re-loaded


  • Option to follow other users
  • List of “People you follow”
  • View details of “People you follow”

Final week

  • Writing unit tests for all the activities
  • Working on project presentation
  • Improvement based on feed-backs received from mentors and members from other community
  • Manual exhaustive testing on different devices, emulators
  • Writing documentation for final submission


  • Unit tests
  • Project presentation
  • Other deliverables
  • Weekly report and blog


Progress Report
● I will remain online on IRC, hangouts in my working hours (1pm to 12pm UTC +5:30)
● I will write weekly blog posts at (
● I will share my blogs on twitter
● Write weekly scrum reports and update it to our mailing list
[] which will cover
○ What did I do last week?
○ What will I do this week?
○ What is currently preventing me from reaching goals?
● I will submit a Project Presentation

Where I plan to publish my source code

● I will be working on a separate branch on git and uploading code to the forked repository
almost on a daily basis, will be Creating pull requests when a complete feature is done.

Communication on task

● I will use GitHub to manage bugs and task.

About Me

Personal Background

I am a second year student at Indian Institute of Technology (IIT) Dhanbad pursuing Mathematics and Computing. I am an active member of the Cyber society at our institute. I organise weekly Android Development Workshops headed by the society. How did I hear about this program I heard about GSoC few months back when my college organised Winter of Code which was a month of open source hackathon. Since then I had been an open source enthusiast and wanted to take part in Google Summer of Code.

Time during Summers

I have no other commitments this summer. So I'll be able to give 40 hours or more per week. I am ready to commit extra time if needed in order to finish up the goals of the project. My summer break starts from 1st May , so I can start working full time from that day on. I'll not be taking any vacations. My classes start on around 1st August but I will be able to commit enough time for the project as there are no exams during the period.

Eligible for Google Summer of Code and Outreachy ?

I am applying for GSoC and outreachy. Since as I am eligible for both the programs. I am applying
under Wikimedia Commons Android only

What does making this project happen mean to you?

The kind of exposure and experience a platform like this would provide me is a huge reason for me to want to be a part of it. I have developed a lot of apps during my college days, but I always wanted to develop apps that really help people at a global scale. I have contributed a lot in the app (around 50 PRs) and I have knowledge of app architecture and MediaWiki API. I sincerely love the goal of Wikimedia Foundation "Global movement whose mission is to bring free educational content to the world” and would be more than happy to work towards it. It would be really great for me to apply my skills and contribute to such an organisation.

Past Experience

I have been doing Android Development back since last year. I have successfully completed two internships in Android Development. I have also published one App on play store. I also secured fifth position in Hack-a-bit a 36 hours Hackathon organised by BITS Mesra. I am a blogger and I frequently write blogs relating to Android or java at my handle I have experience of working with Google Cloud vision API’s. Also I have experience of working with DjangoI use git and GitHub every day, and I am well acquainted with using them for version control.

Intern Projects:

Bobble AI technologies

Roles and Responsibilities

  1. Responsible for introducing Dynamic Whatsapp Sticker's into Bobble app.
  2. Converting the existing Bobble png images to suitable format and add it to whatsapp as whatsapp stickers.
  3. Introducing the Driving Assistant in Bobble app. While driving the app reads out whatsapp notifications to the user and then records their response as an audio to be sent via WhatsApp.

Challenges Faced
The sample application for WhatsApp stickers. stores the images in the project raw folder. I have created my application such that it loads png’s from various API’s edits the images thus loaded, then add it to WhatsApp without adding any of these images to the Raw folder.
Provide most efficient working of the application, i.e the process of loading, processing and transferring image should not block the UI or speed of the Application.
Internship Certificate-


Worked Upon:
An Android Application that supports Audio and Video
The Application uses MVVM architecture for maintenance and testabilty
Other Components like Dagger and ButterKnife were also used in the development of the Application
Through the Application I have learnt various modern components in Android Development like MVVM Architecture, ButterKnife, Dagger, Data Binding and Kotlin.
Internship Certificate-

Self Projects:

This android application has the following features:
It allows Stop listening | Start listening modes by pressing Mic
Allow user to correct | edit the spoken text.
Show list of sentences as user speaks to give user a choice to select from previously spoken sentences from database.
Also spoken text is kept in realm (in-memory database)
Sentences are retrieved from database using Trie, as soon as user enters
words or speaks it can display set of sentences
Off-line caching in Realm also all the data is sent to firebase
It firsts displays list of sentences from Realm and when data is fetched from firebase more sentences are added to the same list
This is a prescription tracking android app which minimizes user input. The user needs to scan the medicine through this app and using Google Cloud Vision API for OCR we extract medicine name and get all relevant information about the medicine’s from our database. The database was obtained by scraping data from various web sites.
Play Store link:

This Android Application currently available on play store was designed for the annual Techo-management fest(Considered as the largest fest of eastern India) Concetto of IIT(ISM) Dhanbad. Users are allowed to register via this Application Also the app displays details of all the events, (e.g their timings) of the app.


This Just Dial Scrapper is a python code that uses BeautifulSoup to scrap Just Dial website and collect database for various filters as requested by user.

Parking Management Database
This is a Django Application which keeps a monthly record of vehicles parked in the private parking slot to generate a monthly parking charge for the parking user’s.

Contributions to Wikimedia Commons App

I’ve been indulged with this for the past 80 days, from that day itself It has been an enriching experience contributing to the app In this time I’ve solved some major and minor bugs and also implemented some new features in order to get familiar with the code base.
Pull Requests:
Link to my Pull Requests merged in this project
Link to my open Pull Requests

Event Timeline

Aroravanshika renamed this task from Insert project title here to Proposal for Outreachy Round 18.Apr 1 2019, 9:21 AM
Aroravanshika updated the task description. (Show Details)

Hi @Aroravanshika! Please edit the task summary to summarize your Outreachy proposal, so it can be distinguished from other proposals. Thanks! :)

srishakatux added a subscriber: srishakatux.

@Aroravanshika Unfortunately, I will have to decline this task as your initial application for Outreachy didn't pass the eligibility check (as per our recent email). I encourage you to apply in the next round!

(Opening it as the initial application got approved before the deadline)

(accepted through GSoC)