This is the final Blog Report summarizing the work done during Google Summer of Code 2020. Here, are the more detailed Phase 1 and Phase 2 Reports:
To dive even deeper; have a look at the weekly blogs I had been writing describing the work in progress:
Google Summer of Code started off with me trying my hands for the first time on designing User Interfaces/Experiences. With guidance from my mentor Nitin, I designed some screens for the CircuitVerse platform.
Learnt a lot about consistency, ease of access; finally having some screens promoted to the final prototype which afterwards got developed and merged to master.
After the UI designs got approved and finalised, I moved on to convert them up into code. This was a huge task, redesigning the complete platform would mean touching upon every single screen the user (or even the admin) would ever see on the platform.
Started off with some static screens to understand how the flow should be; slowly and steadily moved on to get each and every screen on the platform redeveloped.
Documentation plays a key role and helps new contributors or community members to easily guide through and keep everything in sync with the thought process the platform has been laid out.
A design guide would help other contributors to maintain consistency when designing new UI for new features. Or even it would help other CircuitVerse applications to have a similar design language keeping everything sync.
With big projects, along with creating code one major factor that comes is how maintainable that code is. With so many contributors pushing their code snippets, it is essential to set up some code standards keeping the code cleanup and understandable for new contributors joining in the community.
Therefore, along with the revamp I refactored the frontend codebase creating some custom standards for how new code should be added to keep everything clean, easy to understand and guide through. This involved breaking the screens into components and using those or variations of those components through the platform. It even helps to keep the platform consistent when moving between screens.
This has been the most requested feature on my Project. With university classes moving online; there was a need to support multiple mentors for a single group. This helps multiple Professors or Teaching Assistants keep in charge of members and assignments in a group.
With guidance from Satvik, I developed this by introducing a new relation in the database schema, mentorship much similar to the Project Collaborations already in place on the platform.
With new User Interface, there comes a need to develop new mailer to keep everything the user receives in similar design language which eases out the effort of understanding new information again.
I developed the new Mailer in accordance with the revamped UI and Design Guide; keeping everything fully responsiveness across all devices (crucial for mail templates). As a bonus, the Custom Mail Admin interface has also been redesigned similar to new UI providing admins with some good User Interface too.
Popups help enhancing the overall User Experience on the platform avoiding the various redirects and information loss happen while using the traditional full screens forms. To improve the User Experience on the CircuitVerse platform, I developed a new Authentication system working on top of devise working with in place popups and avoiding those extra redirects.
The popup system has been put on hold as of now due to some security concerns and compatibility issues with how devise handles required logins.
Security is a huge concern while processing User data. To make the CircuitVerse platform completely transparent and give users back the control over their data; the platform has been made GDPR compliant. This also helps to officially launch the platform in EU regions. As a bonus, I also fixed one major security bug exposing direct access to Projects database from the deployed server routes.
Now, as a part of GDPR compliance, User is asked for an Approval check before he could use that platform. Apart from this, users now have the ability to Delete their accounts completely or Export their data on the platform (not developed yet).
It has been an amazing experience working with the CircuitVerse community. I can’t tell how much I have learnt in these past two months, ranging altogether from UI Design principles, weaving enriching platform UI experiences to how a web application serving millions of users run at its backend.
Kudos to all my mentors (specially Aboobacker) for keeping up with all the pings and doubts I had throughout the journey, helping me whenever I was stuck.
Looking forward to contribute even more to CircuitVerse and the whole Open-source community!