Name: Palak Thapar
IRC nickname: palak199
Typical working hours: 1700hrs- 2300hrs IST
Short summary describing your project and how it will benefit Wikimedia projects
The current tool- tendril is only used to read from the mariadb instances. All the create, update and delete operations have to be performed on the database using SQL.
Therefore, there is a need for a web dashboard which can help perform all the CRUD(Create, Read, Update and Delete) operations from the zarcillo database.
Additionally, to ease the process of querying from external services there is a need of developing APIs
The web dashboard would be developed with the following technologies:
- Django framework
There could be two options:
- To separate out the Frontend (React) and Backend (Django)
- To use a hybrid approach
After reading various articles, blogs and use cases, I think the hybrid approach would best suit this project’s requirements for the following reasons:
Client Side Routing: The React router would be used to handle the routing, thereby reducing the load on the server.
We can use either API endpoints to query data or pass data directly to the template. I would prefer following the former approach for the following reasons:
Faster Rendering: The initial page would be rendered fast without any data (or optionally with a small subset to start), and then use API like axios to fetch the data after the page loads—or on some user action. This would boost the performance and usability of the dashboard.
Reusability: The scope of the project not only includes creating a dashboard but also APIs to query data from external sources. Django's Rest Framework can handle both the tasks seamlessly.
The following image shows the basic app architecture
The immediate use cases of this project would be:
- Hassle free and quick overview of the database
- Less error prone and easier edits to database
Jaime Crespo and Manuel Arostegui
Have you contacted your mentors already?
Yes, I have been in contact with the mentors and have updated them about my project ideas
Describe the timeline of your work with deadlines and milestones, broken down week by week. Make sure to include time you are planning to allocate for investigation, coding, deploying, testing and documentation
I plan to follow the agile software development lifecycle methodology throughout. Based on that I’ ll be taking one operation in one sprint, get its feedback, improve upon it before moving to next.
|18 May- 6 June<br>(community bonding period)||CONCEPT AND INCEPTION PHASE<br>Get to know about the typical workflow of Wikimedia<br>Present the planned mockups and architecture of the web app and get feedback on it<br>Finalise upon the features and set their priority accordingly<br>Develop a deep understanding about zarcillo db||Mockup of the webapp<br>Final db design based on existing zarcillo db with improvements (if any)<br>Blogs about the app and my experience|
|Week 1||7- 13 June||SETUP THE PROJECT<br>Make the necessary folders and installation of necessary packages||Basic skeleton of webapp|
|Week 2||14- 20 June||DATABASE MODELS<br>Connect to database<br>Make models with primary keys, foreign keys and indexes||<br>Models and tables|
|Week 3||21- 24 June||ITERATION PHASE<br>Write blog about week1 and 2<br>Get feedback on database models, and make improvements accordingly||Improvised Database models<br>Blog|
|25- 27 June||APIs <br>Use the Django REST Framework to develop APIs for CRUD operations <br>Test them using POSTMAN<br>Documentation<br>Write elaborate documentation using POSTMAN about the use of APIs <br>Write documentation about database models using markdown||Fully tested and functional APIs<br>Documentation|
|Week 4||28- 4 July||DEVELOP THE BASIC REACT FRONTEND<br>In this week, I plan to start working on the dashboard’s UI with following components:<br> Header<br> Footer<br> Tables ( to display data fetched from API)<br>READ OPERATION<br>Fetch the data from API and populate the table in the dashboard with it||Basic UI of the Web app<br>Data Read functionality|
|Week 5||5- 7 July||ITERATION PHASE <br>Write blog about Week 3 and 4<br>Get feedback on UI and make improvements accordingly||Blog<br>Improved UI|
|8- 11 July||WRITE OPERATION<br>Develop a modal based form<br>Display success/failure message||<br>Data WRITE operation to the database from the dashboard|
|Week 6||12- 16 July||EVALUATION|
|12- 18 July||EDIT AND DELETE OPERATION<br>Develop the Edit and Delete feature<br>For the edit operation a modal with form will open up pre populated with existing values<br>Alert the user before deleting||Edit and Delete feature on dashboard|
|Week 7||19- 22 July||ITERATION PHASE<br>Finish the pending tasks(if any)<br>Get feedback and improvise||Minimum viable product|
|23 - 25 July||BLOG<br>Write blog for week 5 and 6<br>DOCUMENTATION<br>Document the CRUD operations of web app||Blog<br>documentation|
|Week 8||26 July- 1 August||UNIT TESTS<br>Write unit tests for the web app<br>BUG FIXING <br>Find and resolve bugs in the front end and back end<br>Blog||Unit tests<br>Blog<br>Updated and improved version of web app|
|Week 9||2 - 8 August||EXTENDED TASKS<br>Develop features like pagination, add tables from dashboard, filters and search option in navbar etc||Additional features on the webapp|
|<br>Week 10||9 - 11 August||ITERATION PHASE<br>Seek feedback on APIs <br>Make corresponding improvements||Improved APIs|
|12 - 16 August||TESTING PHASE<br>Rigorous testing of the webapp and APIS<br>Write final report<br>Write blogs and documentation||Final report<br>Updated Documentation<br>Web app<br>APIs|
|Final week||16 - 23 August||FINAL SUBMISSION||web app<br>APIs|
|23 - 30 August||MENTORS SUBMIT FINAL STUDENT SUBMISSIONS||-|
|31 August||RESULTS ANNOUNCED||-|
Describe how you plan to communicate progress and ask for help, where you plan to publish your source code, etc
- Will be available on Zulip or IRC or google hangouts during working hours
- Will be available on email outside working hours
- Will be writing biweekly blogs on medium documenting the process, my experience and progress made.
- Will be publishing my code on Github
- Every week I’ll be updating the mentors on following:
What I plan to do this week What I did in the previous week What is blocking my work
Tell us about a few:
Your education (completed or in progress)
I am currently in the Pre final year of my under graduation degree in Computer Science and Engineering.
How did you hear about this program?
Around two years ago, I came to know about OSS. My college seniors took part in GSoC and this motivated me to
participate and contribute to it.
Will you have any other time commitments, such as school work, another job, planned vacation, etc, during the duration of the program?
The classes will commence in the first week of August, by then I would have completed major portion of my project, the leftover part can easily be completed even with the college classes.
Devoting a summer to GSoC has been my dream from past year, hence this summer I haven’t planned any vacation. Due to the ongoing situation of Covid, my college conducts classes in online mode with reduced number of hours. The exams shall most probably end in the first week of June. So I can easily devote 25-30 hours per week working on the project.
We advise all candidates eligible for Google Summer of Code and Outreachy to apply for both programs. Are you planning to apply to both programs and, if so, with what organization(s)?
Yes! I am planning to apply to both the programs under wikimedia itself. The projects match my tech skills and interest me to the most. My initial application for outreachy has gt appoved. However, I am focussing on GSoC project more, as the time commitment for outreachy is longer and I might not be able to deliver what I promise in outreachy's project. This year GSoC's duration has reduced and be easily managed along with my college.
What does making this project happen mean to you?
*Imagine a world in which every single person on the planet is given free access to the sum of all human knowledge".*
This objective of wikimedia resonates with the motto of my life - knowledge is wasted if it is not used, shared and applied.
Therefore I wish to use and apply my technical knowledge to help contribute to a community with so influencing vision. I'll try my level best contributing to this project and making sure it happens. Making this project happen would help me make my share for the better good of the community.
- Describe any relevant projects that you've worked on previously and what knowledge you gained from working on them.
Previously I have worked on following personal projects-
PlanetCaretakers- A web app that helps people contribute to sustainable development
Technologies used- Django, SQLite, Bootstrap, ChartJs and IoT. This project was built during NASA spaceapps Challenge and received Global Nomination.
- work with strict time boundaries and team work.
- To host Django based project
CustomerTracker- A web app that helps shopkeeper to remotely track sales of various products and also keep track of visitor count
Technologies used- Django, openCV, SQLite
Radio Station- A webapp to manage activities of Radio station like the events conducted, upcoming events, podcasts etc
Technologies used- Django, MySQL
- To design a database and implement it for real usage.
Ristorante- SPA to manage the booking and show the menu of any restaurant.
Technologies used- React
- The use FLUX architecture to develop SPA
- Describe any open source projects you have contributed to as a user and contributor (include links).
Django based web app https://github.com/garg3133/JagratiWebApp/
Laravel React based College web site https://github.com/TNP-GNDEC/TNP-WEBSITE
Django based web app https://github.com/Real-DeviLs/Jeevay-Panjab
Contributions to Creative commons https://github.com/palak199?tab=overview&from=2020-12-01&to=2020-12-31&org=creativecommons
- You must have written a feature or bugfix for a Wikimedia project during the application phase (see the section about microtasks in the application process steps), please link to it here. We give strong preference to candidates who have done so.
Microtasks related to this project:
https://phabricator.wikimedia.org/T253959 (not merged yet)
https://phabricator.wikimedia.org/T268258 (not merged yet)
Besides this, I contributed to other issues of WMF as well:
https://phabricator.wikimedia.org/T279325 (not merged yet)
https://phabricator.wikimedia.org/T279326 (not merged yet)
These contributions have helped me gain an insight into how the git/gerrit workflow is like and how communication takes place on phabricator.