GSoC 2021 @ CircuitVerse | Week 6+7 Report
This blog post includes my contributions done during Google Summer of Code 2021, week 6 & 7, starting from July 12 - July 25. This was a really important week for me as I worked on critical things that requried to be implemented for Interactive Book. This includes -
- Hive Database and caching chapters
- Chapters highlighting
- HTML Interactions
- Pop Quizzes
Hive Database
Hive is a very lightweight and blazing fast key-value database available for Dart and Flutter. Interactive Book had a lot of pages and fetching them required a lot of time therefore we decided to go ahead with caching using Hive.
We kept caching strategy to expire and re-fetch the resources again after 6 hours of fetching.
Here are the commits invovled in doing so -
Chapters Contents Highlighting
Our recently implemented chapter contents was working as expected but UX was asking more than that. We wanted our current chapter/section to automatically highlight and expand in the first place so that user is aware of his location in the current scenerio.
We made that happen: IbLandingView: Highlight and expand selected chapter.
HTML Interactions
By this time our implementation of Interactive Book was not technically “Interactive” as it was missing the key interactions that provides examples and applications of several concepts. These interactions were written in HTML + JS. We implemented it via inApp WebView and injecting tailoured JS for functionality!
Mobile App now follows Conventional Commits specification!
Pop Quizzes
CircuitVerse has a custom pop quiz system to reinforce learning at the end of a page. This is in the form of a few multi-choice or true/false questions. We initially planned the design and finally integerated in our mobile version of Interactive Book.
feat(ib): Add support for Pop Quizzes
Conclusion
These were really fun weeks, I enjoyed working on these features and we are approaching towards the end of all the milestones. In the next coming weeks, we are going to implement HTML tags support like sub, sup along with Mathjax support for rendering Math formulas!
Thank You