Hello everyone,
This is my mid-term blog for Google Summer of Code 2026 with CircuitVerse. For the first half of GSoC, I have been working on the CircuitVerse mobile app and trying to build a better foundation for the upcoming features.
The last few weeks were mostly about understanding the project properly, discussing things with mentors, and slowly moving from setup work to feature work.
I started by setting up the project locally and getting familiar with the codebase. Since the app depends on the Flutter ecosystem, one of the early tasks was to update dependencies and fix the issues that came up after the upgrade.
This was not just a simple version bump. The Android platform had accumulated a fair amount of drift — the SDK, Gradle, AGP, and Kotlin plugin versions were all behind, and upgrading them together required careful ordering to make sure nothing broke. I worked through the compatibility matrix and landed on a stable combination before moving on.
#530 — Fix: Upgrading Deprecated Dependencies Versions (Android)
Migrated the Android build toolchain to a modern, stable baseline:
#593 — chore: upgraded dependencies
Followed up with a broader Flutter-side dependency upgrade pass:
This helped me understand the project structure better and made the development setup smoother for the work ahead.
After the initial setup, we discussed the larger goals for the project. Some of the main areas we talked about were authentication, Firebase integration, Kotlin DSL migration, desktop support, and the Interactive Book.
These discussions helped me get a clearer idea of what needed to be done and how the different parts of the project connect with each other.
While working through the build setup, I also noticed that auto-generated Flutter plugin files and platform build artifacts were being tracked in version control. This causes noise in diffs and can cause conflicts between developer environments, so I cleaned these up.
#578 — Removed auto-generated plugin files and added them to .gitignore
Removed Flutter-generated plugin registration files from version control and added them to .gitignore. These are regenerated automatically on each build and should never be committed.
#619 — Modified gitignores for modern Flutter builds
Extended the ignore rules to cover additional build artifacts across platforms:
Authentication has been one of the important parts of the project so far. I spent time understanding how CircuitVerse handles login on the backend and how the mobile app should connect with it.
We also discussed using Firebase Authentication for the mobile app. I worked on the initial setup and also explored Google Sign-In configuration using the Android package name and SHA-1 fingerprint.
I also made some initial authentication screen designs in Figma so we could discuss the flow before moving too deep into implementation.
The Interactive Book has been the most substantial part of my work this half. The existing implementation had several limitations — it parsed raw markdown, had no proper typing, and was hard to extend. I redesigned it from the ground up.
#624 — Feat: Interactive Book V2 - Renderer, Home Screen, Navbar and Chapter 1
This PR introduces the core of the new Interactive Book experience:
Here’s a summary of the architectural shift this enables:
| Area | Before | After |
|---|---|---|
| API | Markdown parsing | Structured JSON |
| Rendering | Complex parser | Simple, reliable renderer |
| UI | Basic | Material 3 |
| Features | — | Quizzes, binary converter, tables |
| Architecture | Monolithic | Modular components |
| Type Safety | Strings | Typed models |

While working on this, I also explored Server-Driven UI to keep the app flexible enough so that new content can be rendered without requiring changes deep inside the Flutter code.
To test the Interactive Book flow without depending completely on backend APIs, I also worked on scripts to generate mock data. This made it easier to try out different content structures and continue frontend work in parallel.
Towards the end of the first half, I started looking at the CI setup. The existing workflow was a single monolithic file, which made it difficult to understand failures and slow to maintain.
#632 — Divided CI to Android, iOS and Web
Split the CI into three separate, focused workflows:
Each workflow runs on pushes and pull requests to the main development branches, with caching and dependency setup improvements to speed up build times.
| PR | Title | Status |
|---|---|---|
| #530 | Fix: Upgrading Deprecated Dependencies Versions (Android) | Merged |
| #578 | Removed auto-generated plugin files and added them to gitignore | Merged |
| #593 | chore: upgraded dependencies | Merged |
| #619 | Modified gitignores for modern Flutter builds | Merged |
| #624 | Feat: Interactive Book V2 - Renderer, Home Screen, Navbar and Chapter 1 | Open |
| #632 | Divided CI to Android, iOS and Web | Open |
The first half of GSoC helped me understand how important planning is before writing code. I also learned a lot about working in an existing codebase, discussing approaches before implementation, and breaking larger features into smaller parts.
Working with mentors and getting feedback regularly has been really helpful.
For the second half, I will continue working on the authentication flow and Interactive Book integration. The remaining chapters of the Interactive Book need to be wired up to the new renderer, and the auth flow needs to be completed with Google Sign-In.
Alongside that, I want to keep pushing on the broader product goals we discussed for the app:
I am looking forward to continuing the project and improving the CircuitVerse mobile app further.