The first evaluations happened from June 29th to July 3rd and Yay.. I Passed!!! This blog post comes as a summary to the amazing work done in the first phase of Google Summer of Code.
The mobile_app project was primarily focussed on two sub projects as follows:
Before the GSoC period CircuitVerse was primarily focussed for the Web. We have this very amazing simulator, ability to create groups, beautiful circuits, assignments with grading obviously <3 and a lot more features. make sure to check them out on our website. Thanks to our amazing community, @satu0king, @tachyons & @nitin10s.
CircuitVerse now plans to expand.. GSoC 2020 basically aims at improving the Simulator and Web UI, structuring & refactoring the huge JS codebase, offline electron app, the mobile_app and implementing API.
For authenticating users, token auth is being used to
encode user data and return the token for successful login/signup. The
public_key.pem can also be fetched in
/public_key.pem to validate the token signature. Also added
/password/forgot to send reset password instructions. Coming onto users, all users public info is made available at
/users & logged in user at
I have added endpoints to fetch public/accessible projects @
/projects, user projects @
/users/:id/projects, favourites/starred projects @
/projects/favourites, featured projects @
/projects/featured. Specific project can also be starred/unstarred @
/projects/:id/toggle-star, fork @
CircuitVerse also supports adding collaborators to your projects so does the API @
/projects/:project_id/collaborators. Deleting a collaborator would require DELETE request to
Related PR : #1473(Merged)
CircuitVerse API supports fetching groups you mentor or you are member of @
/groups/mentored respectively. Mentor can also add group members using email in
/groups/:group_id/members. Support to add/delete assignments had also been incorporated. Specific assignment can be
Related PR : #1462(Under Review)
Circuits related to assignments can be graded & are uniquely identified using
project_id. Uniqueness check for multiple grades with same identifiers was also added.
Related PR : #1482(Merged)
A total of 164 specs/examples were added in view of the CircuitVerse API. The codeclimate coverage marked an increase of about 5%. Yay!
No rubocop recommendations were harmed during API development xD
Since I started early, i had some time devoted to the mobile app too. Hence had significant progress in the same context :)
I plan to use MVVM architecture for CV Mobile App. Provider for State Management & get_it for
dependency_injection makes up an awesome pair for me :) I had previously talked about the file structure and the app architecture in detail in the first half of this blog post.
Related PR : #1
The first step was adding the static views i.e which generally don’t require viewmodel bindings. The
contribute_view falls under this category.
I have added
signup_view with appropriate
viewmodel bindings set up. Forgot password API has also been implemented..
The CV Mobile App can show you the groups you mentor or belongs to in
my_groups_view, related members and assignments in
group_details_view. Adding/Deleting groups members are also click of a button away :)
Adding, Updating & deleting Assignments were also implemented during the first phase..
By end of phase one, 10 in all PRs, 7 have been merged, 3 are under constructive review. Contributed about 3500 lines of code in a total of 20 commits. Thanks CircuitVerse.
In the second phase, primarily i plan to implement the remaining sections, view & viewmodel bindings with some improvements to the existing codebase, FCM notifications etc.. Also, I would be now actively putting up PRs for different feature requests in the mobile_app. If everything works out well, the MVP for CV Mobile App shall be expected by the end of second phase.. <3
I feel myself fortunate enough to be working with the amazing CircuitVerse community with my mentors always helping me out if i gets stuck anytime.. The Journey till now has been amazing, i couldn’t have asked for more.. I gained a lot of insights in backend development with Ruby on Rails & best practices in general.. Looking forward for the exciting phase two..