My first week of internship was a hands-on introduction to real-world development and event support. From providing on-site technical support to contributing to production-level development, I quickly transitioned from observation to contribution. I explored the technical stack, upgraded key integrations, and implemented a new AI-powered feature, all while learning how teamwork, code quality, and user experience intersect in a professional environment.

Event Support & System Overview

Being on location gave me practical insight into how the platform functions in real-time, from marking attendance to scoring performances, and how system reliability plays a crucial role in event flow.

Learning Git Beyond the Basics

While I had prior experience using GitHub for academic projects, the workflow here was more structured. I got hands-on practice with pull requests, assigning reviewers, linking issues, and referencing commits properly.

This gave me a clearer understanding of how collaborative development works in a real-world setting, and how teams track changes and maintain code quality together.

Working with Flutter, Riverpod & CouchDB

To prepare for my development tasks, I explored the system’s architecture: Flutter for the UI, Riverpod for state management, and CouchDB for the database.

Although I’d experimented with these technologies months ago, this was my first time applying them in a real production environment. Navigating a mature codebase brought new challenges, especially understanding how widgets, providers, and documents interact.

One valuable lesson was learning to manage dependencies early to ensure compatibility with the current Flutter SDK and avoid issues before diving into development.

Upgrading Gemini Integration

One of my key tasks this week was upgrading the Google Gemini integration. The system had been using Gemini 1.5 Flash (via google_generative_ai: ^0.4.4), which is scheduled for end-of-life in September 2025.

I updated the integration to Gemini 2.5 Flash by migrating to ^0.4.7. After confirming that the Judge interface (where Gemini assists with comment rewriting) remained stable, I reviewed the changelogs and upgraded related packages to ensure overall compatibility.

Implementing a Spell Checker Feature

I also implemented a spell checker for judges, using Gemini 2.5 Flash. The goal was to correct typos while preserving domain-specific musical terms, which are a key requirement in this system.

The feature is structured cleanly:

  • UI logic and tooltips are managed in MarkPageState.
  • The business logic sits in the MarkController, powered by Riverpod.
  • The correctSpelling() function handles Gemini integration and updates both the UI and CouchDB.

I also added proper loading states, SnackBar notifications, and error handling. Initially, I missed a critical call to setComment(), which caused corrected comments to appear only in the UI without saving to the database. After debugging, I fixed the issue.

Early tests show promising results, ~95% correction accuracy and 100% musical term preservation, but I plan to do deeper testing in Week 2.

Reflections & Insights

  • Working on a live system taught me how small mistakes can have real consequences.
  • Understanding Flutter + Riverpod in a production codebase deepened my appreciation for clean architecture and modular design.
  • The structured Git workflow helped me grasp how professional teams collaborate, review, and ship updates safely.
  • Implementing the spell checker was a hands-on lesson in balancing new AI tools with strict reliability and UX expectations.

What’s Coming Up

  • Finalize testing for the spell checker, especially for edge cases like long comments, rapid edits, and unstable network conditions.
  • Implement debounce logic to batch and delay local storage updates on the Mark page, reducing unnecessary write operations.

0 Comments

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.