**Improve Wiki Education Dashboard's Error Monitoring**
**Project Repository: **[https://github.com/WikiEducationFoundation/WikiEduDashboard](https://github.com/WikiEducationFoundation/WikiEduDashboard)
**GSoC Idea Link: **[https://phabricator.wikimedia.org/T244428](https://phabricator.wikimedia.org/T244428)
### **Profile Information:**
**Name:** Hardik Chugh
**Email:** hardychugh34@gmail.com
**University:** Chitkara University, Punjab, India
**Linkedin:** [https://www.linkedin.com/in/hardik-chugh-977a7b14b/](https://www.linkedin.com/in/hardik-chugh-977a7b14b/)
**Resume:** [Click to View](https://docs.google.com/document/d/1miwlXKt5RNY7PNTavAyVnHkfvnSqHl_WDYL8ZvlRpNQ/edit?usp=sharing)
**Github Profile:** [hardy1334](https://github.com/hardy1334)
**Other Communication Method:** Google Hangouts, Slack
**Location (country or state):** Punjab, India (UTC +5:30)
**Typical working hours:** Between 6 pm to 3 am UTC +5:30
### **Possible Mentor(s)**
**Mentor:** @Ragesoss (Sage Ross)
## **Synopsis**
[Wiki Education Dashboard](https://dashboard.wikiedu.org) is web based software satisfying the needs of both the instructors and the students. In it, instructors can create a course alongside keeping track of the progress of the students enrolled in that course, and students can complete their assignments, work with articles and much more stuff. So What I intend to do with this project is create an **Error Monitoring System** for the capturing errors in the course update process and then showing them to the user in appropriate manner. This error monitoring system will keep track of all the jobs linked to course which failed, store them and then will send notifications to the user in the course dashboard. Once this is done I intend to create a Dashboard which will have list of all the failed jobs in a particular course, alongside failed jobs, it will also contain error message corresponding to that particular job with its respective timestamp.
## **Deliverables**
- Implement a functionality to keep track of all the failed jobs corresponding to a course and save them in our database.
- Implement a functionality to send Notifications to the user with an appropriate error message for the jobs which failed in the respective course.
- Develop a dashboard which shows all the failed jobs, alongside its reason for failure, timestamp corresponding to a particular course alongside user account on which it failed.
## **Implementation Details**
Our First step in creating this error monitoring system is keeping track of all the jobs which have failed. So to achieve this goal -
SideKiq has [public api’s](https://github.com/mperham/sidekiq/wiki/API) with the help of which we can check the status of a job. So once we get access to the failed jobs we can save those failed jobs, alongside other details like course which that job belongs to, user account which that particular course corresponds to, its timestamp, cause of failure (Error Message), etc in our database.
Once we have all the data corresponding to failed jobs, I’ll implement functionality to send notification to the user regarding a particular job failure with an appropriate error message.
After this entire system gets developed then I’ll move to displaying all the failed jobs in a particular course alongside all the details like,cause of failure, timestamp,etc.
{F31703878}
#### **FLOW DIAGRAM**
{F31703896}
## **Timeline**
|||||
|--- |--- |--- |--- |
|**Phase**|**Timeframe**|**Start Date**|**End Date**|**Task**|
||**Community Bonding Period**|4-May-2020|1-June-2020|Research more on storing failing Sidekiq jobs in database, make designs ready for showing error message of failing jobs, make dashboard design ready for showing all the failing jobs.|
|Phase 1|**Week 1 & Week 2**|1-June-2020|14-June-2020|Work on getting all the failing jobs for course and then saving them to DB, alongside writing rspec test cases for the functionality.|
|Phase 1|**Week 3 & Week 4**|15-June-2020|28-June-2020|Work on creating api's which are to be used for client interaction, getting the functionality done from server side code if left any.|
|Phase 2|**Week 5 & Week 6**|29-June-2020|12-July-2020|Developing UI and showing the appropriate error message for a job failure.|
|Phase 2|**Week 7 & Week 8**|13-July-2020|26-July-2020|Writing Unit test cases for the functionality being developed on client side.|
|Phase 3|**Week 9 & Week 10**|27-July-2020|9-August-2020|Developing Dashboard for showing all the job failures of a particular course alongside the reason of failure and timestamp.|
|Phase 3|**Week 11 & Week 12**|10-August-2020|16-August-2020|Write unit test cases for the dashboard functionality being developed.|
|Phase 3|**Week 13 - Final**|24-August-2020|31-August-2020|Resolving all the leftover bug fixes, issues and Writing blog about the overall project and experience. |
## **About Me**
I'm a Final year student at Chitkara University, Punjab, India pursuing my B.E in Computer Science.
Currently, I'm working with [Truecaller](https://www.truecaller.com/) as a **Web Developer Intern** since 27th May,2019 where I handle stuff across various web technologies and help in development of amazing functionalities . My Internship ends on 27th May,2020.
I provide my services at [Fiverr]( https://www.fiverr.com/hardik_chugh?up_rollout=true ) on Git issues, Actions on Google and Website Development.
I have written quite a few tech blogs at [Medium](https://medium.com/@hardychugh34)
I was also an Instructor at [Chegg Tutors](https://www.chegg.com/tutors/online-tutors/Hardik-C-8705985/) where I helped students across the globe with my knowledge of Computer Science domain, whether its web technologies related challenges or regarding programming languages.
## **Past Experience**
I have experience in following Web Development technologies - React JS, Redux, Vue JS Node JS,MongoDB,Express JS, Django,Ruby on Rails, etc. A part from this I have also some experience in working with Docker and Kubernetes, which I gained during my internship while working on a project. I use Git as version Control System for my Day to Day work and prefer working on Linux based environments.
#### Projects
[Devview](https://github.com/hardy1334/dev-view) : This project is uses technologies like React Js,Redux for Frontend, Node Js for server- side rendering and MongoDB for storing data.
**Technologies Used**: React JS, Redux, Node JS, MongoDB
[Chefapp](https://github.com/hardy1334/chefapp): This web app helps you create new recipes like suppose a chef wants to create a recipe for Chicken Soup ,in this he can create that recipe and upload that which others can view and he can also view other chefs recipes.
**Technologies Used**: Ruby On Rails, Maria DB
[Locationapp](https://github.com/hardy1334/location-app): This app allows you to add hostels with its name,description and GPS location using Google Maps Api. You can search your location from Google Maps in this app and then you can accordingly drag your location on Google Maps with Marker and save that as Hostel Location which automatically selects state,city,locality of hostel from the location you selected.
**Technologies Used**: React JS, Google Maps API, Node JS, MongoDB
[And Many More](https://github.com/hardy1334/)
## **Participation**
* **How did You hear about this Program ?**
I heard about this program from my college seniors in my sophomore year, then I applied in the GSOC-2019 to the Wikimedia Foundation to work on WikiEduDashboard project, but was not selected. Now in GSOC-2020 I'm again applying as now I feel I'm deserving to be given chance to work on this project.
* **Have you discussed this GSoC Task with your mentors already?**
Yes, I have discusses about this project with the mentor.
* **What does making this GSoC Task happen mean to you?**
I love to empower people, from my work and there could be no better opportunity than this. As this piece of software is used by thousands of people worldwide so it’s a great way to empower people with my skills. Not just that this will also help Wikimedia Foundation keeping track of all the track of errors which might come and indeed help in making this amazing product better in the near future.
* **Will you have any other time commitments, such as school work, another job, planned vacation, etc, during the duration of the program?**
No I don't have any other time commitments, as my current internship ends on 27th May,2020 which is before the official coding period starts (1st June,2020).
* **Eligible for Google Summer of Code and Outreachy?**
I am only Eligible for Google Summer of Code, so I'm only applying for Google Summer of code.
* **Do you plan to submit any other proposal apart from this one?**
No, I am not submitting any proposal apart from this one.
* **How many hours per week can you dedicate for this?**
I can dedicate a around 35 hours each week for this project, and I am willing to dedicate more if required.
* **Have you been accepted to GSoC before?**
No, I applied for the same project last year as well but was not selected.
## **Previous Contributions**
I have made quite a few contributions to this project, from minor bugs to developing a new feature from scratch, and have become decently comfortable with the codebase now:
- [[ https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/3870 | https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/3870 ]]
- [[ https://github.com/WikiEducationFoundation/TicketDispenser/pull/12 | https://github.com/WikiEducationFoundation/TicketDispenser/pull/12
]]
- [[ https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/2620
| https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/2620
]]
- [[ https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/2516 | https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/2516
]]
- [[ https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/2355 | https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/2355
]]
- [[ https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/2697 | https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/2697
]]
- [[ https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/2720 | https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/2720
]]
- [[ https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/2729 | https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/2729
]]
- [[ https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/2690 | https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/2690
]]
I also created some issues in Wiki Education Dashboard which are listed below:
- [[ https://github.com/WikiEducationFoundation/WikiEduDashboard/issues/3874 | https://github.com/WikiEducationFoundation/WikiEduDashboard/issues/3874
]]
- [[ https://github.com/WikiEducationFoundation/WikiEduDashboard/issues/3829 | https://github.com/WikiEducationFoundation/WikiEduDashboard/issues/3829
]]
- [[ https://github.com/WikiEducationFoundation/WikiEduDashboard/issues/3889 | https://github.com/WikiEducationFoundation/WikiEduDashboard/issues/3889
]]
- [[ https://github.com/WikiEducationFoundation/WikiEduDashboard/issues/2402 | https://github.com/WikiEducationFoundation/WikiEduDashboard/issues/2402
]]
- [[ https://github.com/WikiEducationFoundation/WikiEduDashboard/issues/2568 | https://github.com/WikiEducationFoundation/WikiEduDashboard/issues/2568
]]