Scattered across Singapore are numerous Senior Activity Centres (SACs) and Neighbourhood Links (NLs). Typically located in the void deck of rental flats, these SACs/NLs act as a communal space for the elderly to socialise with their peers, and find emotional and psychological support. While NLs have a wider reach and serve all elderly residents in the neighbourhood, SACs are targeted at needy and vulnerable seniors staying in one and two-room HDB rental flats.

The CVWO SAC/NL system traces its roots back to 2007, when CVWO first partnered with Geylang East Home for the Aged (GEHA). Over the years, we have rolled out the system to other SACs/NLs. The system supports the day-to-day operations of the centres, allowing staff members to keep track of the centre’s activities and the people they serve. It also generates data for the various reports that the SACs and NLs have to submit to reduce the amount of manual bookkeeping required.

At present, we have 12 centres across 3 organisations under our care:

  • Geylang East Home for the Aged
  • Care Corner Singapore
  • Society of Sheng Hong Welfare Services
Geylang East Home for the Aged Logo
Care Corner Logo
Society of Sheng Hong Welfare Services Logo


1. Rails 6 Upgrade

As of summer 2020, Rails 6.0.3 was the latest stable release of Ruby on Rails, the application framework on which the backend was built. We upgraded Rails from 5.2.3 to 6.0.3 to keep up to date with the latest security fixes. In the process, we had to replace deprecated dependencies with our own implementations.

2. Revamp of Frontend

Previously, the frontend was being served by Rails as a multi-page application. To improve the user experience, we rebuilt the frontend in React as a single-page application. This eliminates the need for page reloads and offers a much more fluid user experience. In addition, decoupling the application into a Rails backend and a React frontend allows for greater maintainability.

3. Enhanced System Reporting

Every SAC/NL has to submit the Enhanced Programme Evaluation System (EPES) report semi-annually to the National Council of Social Service (NCSS). This is to allow the agency to track performance indicators and evaluate the effectiveness and impact of programmes.

A key feature of our application is the generation of the EPES report. In consultation with the various centres using our system, we have updated the application to support the latest EPES reporting requirements. Additionally, we have also added the ability for users to view the raw data behind the numbers generated for the EPES report. This will allow the centres to examine how the data for the EPES report was generated and give them more confidence in the system.

4. Performance Optimisations

Over the past decade or so, the amount of data handled by our system has steadily increased. This has resulted in slowdowns when loading parts of the legacy application. In the revamped frontend, we make heavy use of backend pagination to ensure that the performance of the application is snappy, no matter how much data the system may contain in future.

5. Containerisation

Using Docker, we containerised the entire application, including auxiliary functions such as automated backups to AWS S3. This makes redeployment and scaling up of the system extremely easy.


Setting Up and Gathering Requirements

Our initial two weeks were spent setting up the architecture of the new application. After spending a few days familiarising ourselves with the necessary tools, including Rails, React, Redux, and Typescript, we moved on to design the API and build various components of the new React application. The application was designed for multi-tenancy since some centres have slightly different requirements. We also upgraded the backend to Rails 6 during this period.

In those initial weeks, we also gathered requirements from the various centres that we support. Since the system had not been revamped since 2015, we held (online) meetings with staff from Care Corner and GEHA to better understand their current usage of the system and gather feedback about new features that they wished to add.

Building Features and Fixing Bugs

The remaining eleven weeks were spent re-creating all of the legacy system’s features using a modern frontend stack — this involved building 23 modules and over 60 distinct pages! To carry this out, each of us was in charge of several modules, along with any newly requested features. Since each of the existing features supports a specific aspect of staff workflow, we had to properly understand the intricacies of each feature to avoid missing out any part of its functionality.

Throughout the process of revamping the frontend, we sought to modernise the interface and make it intuitive for new users while ensuring that it remained familiar for existing staff. To that end, we preserved the overall structure of each page but made key elements more prominent and improved the ease of navigation between modules. In addition, one under-utilised feature underwent a major overhaul to make it similar to existing features and thus more familiar.

A less exciting but equally important aspect of our work over this summer was to maintain and fix bugs in the legacy system. As we worked with the existing Rails backend, we discovered several eccentricities in design or implementation that had led to certain features not working properly over the years. Feature-building then had to be put on hold to resolve these issues. SAC staff also occasionally reported bugs which we were able to speedily identify and resolve. While some problems were relatively simple to solve, others were unexpectedly far-reaching and we had to systematically go through the entire system to fix them. Nonetheless, we were able to resolve all major legacy issues before we deployed the new application.

Many of our features went through multiple iterations to ensure that they would be fully functional, intuitive, and scale well in the long run. We also designed the system to be extensible and easily maintained. The new interface was well-received, and we were glad to hear from SAC staff that they found it “fresh and great”. Our hope is that future CVWO teams will be able to spend less time maintaining the codebase and more time meeting VWOs’ new needs.

Looking Ahead

Towards the end of the summer, we had an interesting new development. The Agency for Integrated Care (AIC), which is in charge of Singapore’s senior care sector, expressed interest in working with CVWO in their efforts to digitise the operations of the senior activity centres. AIC is currently transitioning all senior activity centres over to their new model of care, which will see the senior activity centres taking on the additional responsibility of looking after the entire elderly population in Singapore. They are interested in the potential of IT systems in supporting this change and would like to tap on the experience that CVWO has in working with the senior activity centres.

Moving forward, it is a possibility that the current SAC/NL system will be rolled out to more SACs/NLs nation-wide. We look forward to CVWO’s collaboration with AIC in this endeavour.



  • Tiu Wee Han (Project Lead, Year 2)
  • Ian Yong (Project Lead, Year 1)
  • Dorcas Tan (Project Co-Lead, Year 2)
  • Mayank Keoliya (Developer, Year 1)
  • Isaac Ng (Developer, Year 0)


Happy to work with a great team 😄

– Wee Han

I am grateful to have had the opportunity to be a part of CVWO. Not only has CVWO helped me to be more confident in my abilities, it has also allowed me the pleasure of working with some of the most motivated and competent people in the School of Computing. Moreover, it has been immensely rewarding to see the various Senior Activity Centres using our system.

– Ian

CVWO has been a whirlwind of a journey, but it has also been very fulfilling. Beyond the technical aspects of designing and delivering good software, I have learnt many soft skills involved in understanding user needs and managing projects. I’m thankful for this opportunity to serve the community through supporting Singapore’s eldercare service providers. And of course, I’m grateful for the incredible teammates who made this possible!

– Dorcas

Couldn’t have been a better summer for me - nothing beats an intense, learning experience with the smartest peers you could ask for!

– Mayank

CVWO has been the best opportunity available to me by far and has helped me grow as a software developer

– Isaac

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 advice, encouragement, and guidance.
  • GIC for their generous support of this programme.
  • The various Senior Activity Centre staff for their co-operation and support throughout the project.