In this project, we worked on maintaining and upgrading a web application which provides support to GIC’s Sparks & Smiles programme, including adding more features and providing a better user experience for our clients.

Sparks & Smiles is a programme initiated by GIC. Students are trained by experienced social service professionals and commit 25 hours to serve the community, particularly in mentoring children and youth.

Sparks Awardees gain access to different skills, experiences and opportunities, to empower them to grow in confidence and leadership, and play a positive role in their communities over the long term.

The Sparks application provides a friendly user-interface that unifies the previous complicated workflow, eliminating multi-medium information storage (hard copy, spreadsheets, phone-calls). In addition, the application provides automated calculation of the students’ service hours and reflection writing, a clear overview for the administrator, as well as automated email notifications.

Over an entire year of using the application, Beyond Social Services has given us very positive feedback and requested for more features to be added to the application to further facilitate the programme workflow.

Project Objectives

1. Including more features

We worked on implementing new features that can help improve the work efficiency for our clients further. Examples of the new features include integrating Assessment Reports into our system so that Beyond can fill in the reports for students inside our application and download the PDF that is automatically generated by the system. Another feature we included is a batch student registration process where staff can import students in groups by uploading a CSV file containing the students’ information to the system.

2. Better Workflow and UI/UX

We emphasized on improving UI and UX this summer to ensure that the application is convenient and easy enough for our clients to use. By maintaining close contact with our clients and putting ourselves into the shoes of our users, we refactored the previous workflow to be more intuitive and user-friendly. Examples include adding a Save As Draft button in the reflection page where users can save the in-progress reflection when they are not ready to submit it yet and a Verification page and a Comments page where users can easily track the latest activities in the application.

3. Maintenance

Apart from adding to the application, we also put in effort to fix legacy issues. During a year of using the application, our clients had flagged out some bugs and issues they found out while using the application. Hence one of our main objectives this summer was centred around fixing existing issues.

Also, we upgraded the backend Rails version from Rails 5.2 to Rails 6.0, which was the latest stable Rails release by Aug 2020. We upgraded to the latest version to keep up to date with the latest issue fixes. Also, the latest version of Rails is better supported by the community. Hence upgrading to Rails 6 allows our application to be more scalable in the future.

Project Process

1. Codebase Familiarization

The groundwork for the Sparks project was already laid by the previous team. In order to continue work on it, we first had to understand how it was designed, as well as the rationale behind these choices. We gradually got familiar with the code base while we engaged in bug fixes for the system.

2. Building New Features

After meeting with the Sparks client, our team carefully designed new schemas for the database according to the needs of our clients, while also putting in consideration of extensibility for future development. As we were developing, we kept in touch with our clients to seek clarification. We put emphasis on UI and UX and gathered advice from clients and Prof Ben to improve the design of the new features.

3. Refactoring Workflow

As we were working on developing new features for the application, we constantly reflected on what could be improved to make the application more efficient and more convenient to use. As we maintained communication with the clients, we understood the user needs more deeply, allowing us to find ways to improve the current workflow.

4. Deployment

We deployed our application on a newly spun Digital Ocean Droplet. After setting up the new application, we switched the floating IP address of the Sparks application over from the old Droplet to the new Droplet. As switching floating IP takes effect instantly, we managed to get the application upgraded within a few seconds. Also, by Dockerizing the application, we were able to apply patches to the application quickly by just pulling the Docker images and running them.


Project Team

  • Tiu Wee Han (Project Lead)
  • Zhou Zijian (Project Co-Lead, Year 1)
  • Seow Alex (Developer, Year 1)
  • Aung Thuya Oo (Developer, Year 1)


CVWO Sparks joy 🙂

– Tiu Wee Han

CVWO is a very enriching experience for me. Working on CVWO is not merely about grasping the technology stack but also about learning to work as a team efficiently and communicate clearly. Technology can be learnt through books or tutorials, but other soft skills are much harder to acquire. CVWO offers me a precious opportunity to hone these skills.

– Zhou Zijian

CVWO has been a valuable experience that I feel everyone should go through given the opportunity. Whether you’re a beginner with no web development experience, or you already have several web applications under your belt, CVWO offers many learning opportunities, ranging from frontend/backend development, DevOps, project management and even communication with clients.

– Seow Alex

Doing CVWO this summer was a great experience that cannot be found elsewhere. The soft skills that I’ve learned such as collaboration and communicating with the client will stay with me for my future career as a software engineer.

– Aung Thuya Oo

We would like to express our heartfelt gratitude to the following people who have been influential and supportive during our project:

  • Prof Ben Leong (NUS) for his patient guidance
  • GIC for their generous support for the programme
  • Beyond Staff for their co-operation and support for the programme