Background
Our Case Management System (CMS) is a platform that empowers our partner organisations with the tools specially designed for their daily operations. It helps our partner organisations easily keep track and monitor their case activities and consolidates all case information into a central location that is easily accessible. This provides them with the ability to scale as they serve more clients while effectively serving each of them. With such a system, our partner organisations can focus on what they do best without having to worry about the administration side of things.
Our CMS dates all the way back to 2014 when it was first built. Since then, the system has evolved tremendously as the requirements that our clients have increased to what we have today.
This year, our team served Care Corner Counselling Centre, Care Corner Centre of Co-parenting and Children’s Aid Society, who we onboarded onto our system last year.
Care Corner consists of two centres, Care Corner Counselling Centre (CCCC), and Care Corner Centre of Co-parenting (CCP). They are one of the largest Social Service Organisations (SSO) in Singapore, and provide a range of counselling services to various communities across multiple touch points.
Established in 1902, Children’s Aid Society (CAS) is among Singapore’s oldest, secular philanthropic organisations. They provide a holistic range of residential care, counselling, and other specialised therapies to support disadvantaged children, youth and families through circumstances of violence and child neglect.
Project Objectives
This year, our team focused on porting of our CMS backend fom Ruby on Rails to Go as we aligned ourselves with Project Cornerstone. In addition to that, we also implemented several general enhancements to better serve our partner organisations this year. Our team had one objective: to port over our old CMS backend to Project Cornerstone.
Our project focused on porting over all functionalities from the old Ruby on Rails system to the new one. This was a huge undertaking as the original codebase contains almost a decade worth of work and spans ~110k lines of code (LoC). While porting the system over, we also took the opportunity to enhance and redesign the certain portions of the system to align ourselves with Project Cornerstone and accommodate new operational requirements from our partner organisations.
Project Process
We carried out our project in three phases: planning, porting and piloting.
Planning
Our team began by familiarising ourselves with the existing codebase to gain a better understanding of the system. This was done while exploring the system extensively. Afterwards, we broke down the system into modular parts such that there are as few dependencies between each module as possible. This is extremely important before we begin porting so as to ensure that we can port modules simultaneously and not be blocked by one another.
In addition to that, we factored in the future enhancements that our partner organisations have requested to ensure that those enhancements are taken care of after the porting is done.
Porting
In the porting phase, we ported our assigned modules independently with care to ensure that there are as few regressions as possible when moving to Go. There were several occasions where we also had to implement functionalities that were previously provided by Ruby gems in Go manually. This was a challenging process as there were many considerations and intricacies that we had to take into account.
To reduce the amount of changes we have to do to our frontend, we ensured that the API that the new backend exposes is similar to that of the old one. This would help to reduce potential bugs after the porting is completed.
Piloting
At last, we carried out extensive testing of the new ported system and also a User Acceptance Test (UAT) by one of our partner organisation. In this phase, we managed to identify several bugs that the new system have and also appreciate the fruits of labour. Though there were no visual changes to the CMS, we observed a huge increase in performance of up to a 6x speed-up in loading pages!
Screenshots
The following GIFs demonstrate the comparison in loading speed with an example.
Project Team
- Lee Jia Wei (Project Lead, Year 2)
- Chong Chin Herng (Developer, Year 1)
- Neo Jie Xiang (Developer, Year 1)
- Tan Khang Hou (Developer, Year 1)
- Titus Chew Xuan Jun (Developer, Year 1)
- Wong Li Yuan (Developer, Year 1)
- Wu Xiaoyun (Developer, Year 1)
Afterthoughts
Thankful for this opportunity to serve again in CVWO. It was a humbling and eye-opening experience hard to find elsewhere!
– Jia Wei
CVWO has taught me so much more than just software engineering. Though the whole journey can be stressful and overwhelming, by the end of the summer you would look back and realise how much you have done, feeling impressed and proud of yourself.
– Chin Herng
I am very grateful for the opportunity to work with CVWO. Not only have I gained valuable skills from working on a real-world application with capable teammates, but I was also able to contribute back to my community.
– Jie Xiang
Good learning experiences and even greater friends. One of the most rewarding internships I’ve had due to the deliberate challenges that stretched our capabilities to the fullest extent.
– Khang Hou
CVWO’s blend of challenges is what makes it exceptional. It’s a journey that transforms you. I am grateful for this unique opportunity to grow and make a meaningful impact.
– Titus
Throughout the challenging three-month journey with CVWO, I faced intense stress but also experienced significant growth as a full-stack web developer. Working alongside incredible developers led by my amazing team lead has not only sharpened my skills but provided me with unique insights into the software engineering world.
– Xiaoyun
CVWO has been a fun, yet challenging experience. Grateful for the chance to make a meaningful impact through technology!
– Li Yuan
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 patience and guidance
- GIC for their generous support for the programme
- Our partners and clients for their co-operation and support for the programme:
- Care Corner Counselling Center
- Care Corner Centre for Co-Parenting
- Children’s Aid Society