Our team had two projects this year - Sparks web application with GIC, and the case management system (CMS) with Care Corner Counselling Center / Care Corner Co-Parenting Center.
In our first project, we are building a mobile-friendly progressive web application (PWA) for the Sparks and Smiles programme. Initiated by GIC, students would be trained by experienced social service professionals and commit 25 hours to serve the community, particularly mentoring children and youth.
Our application provides a friendly user-interface that unifies all the complicated workflow that is previously done, eliminating multi-medium information storage (hard copy, spreadsheets, phone-calls). In addition, the application will provide automated calculation for the students’ service hours and reflection writing, clear overview for the administrator, as well as automated email notifications.
Another project that our team took up was the Case Management System for the CCCC and CCCP centres. This application helps staff at the cetres manage the progress of individual cases, caseworkers, as well as generate reports for audit purporses.
1. Create an extensible backend database
For the Sparks application, we had the chance to create the app from scratch, hence we took the effort to design an extensible database schema to allow future additions without any major refactoring.
2. Create a user-friendly interface
We chose to use React + Redux + Typescript, a modern frontend stack to make our application easier to maintain in the future. We go through iterative evaluation of the user interface to make the usage more intuitive to the users.
3. CI/CD with devops
During development, we leveraged continuous integration to catch errors early before they are shipped to production. This also makes code changes more visible and allows for better collaboration and software quality.
For deployment, we used Docker to containerise the system, making redeployment and scaling extremely easy.
Case Management System
1. Rails 5.2 major upgrade
Rails 5.2 was the latest stable release of Ruby on Rails, on which the CMS backend was built on. When we took over this project, it was written in Rails 4.2.10, which was released almost 2 years ago. We cleaned up the legacy code and upgraded the CMS to Rails 5.2 to keep up to date to the security fixes.
2. Feature requests and bug fixes
As with any IT system, the requirements for features evolve over time due to new direction and policies. We had an extensive list of features requested, and most of them require extensive refactoring of the database. Our team made the necessary decision to carry out major revamp of the codebase to deliver a more functional application to the clients.
Codebase Familiarization + Upgrade
The groundwork for the Case Management System was already laid by the past teams. 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 did so while fixing bugs within the system and upgrading the CMS to the latest Rails version.
Sparks Backend + Frontend
After meeting with the Sparks client, our team devoted most manpower to deliver a web application from scratch during the summer. We took special care in designing the database schema, fleshing out every single detail of permissions and organization of data, before coding the backend in Ruby on Rails.
As the backend is built, we started working on the frontend, and we constantly evaluated our design decisions as each page and components are built. We gathered advice from seniors, Prof Ben and clients, which helped to improve our user interface design.
Behind the scenes: DevOps
Our team constantly mantained the infrastructure for us developers and clients, via continuous integration and on-site deployment respectively. A team of devoted individuals took charge of the clients servers and were ready to deal with any errors as soon as they arise, using error reporting tools. Continuous integration allow our team to develop features and preview them quickly, before shipping the application to the clients.
- Trang Mai (Project Lead)
- Daryl Chan (Project Co-Lead, Year 1)
- Chandrasekaran Hema (Developer, Year 1)
- Gary Liu (Developer, Year 1)
- Jonathan Chan (Developer, Year 1)
- Liu Zimu (Developer, Year 1)
- Na Nazhou (Developer, Year 1)
- Qiu Siqi (Developer, Year 2)
- Tan Yee Jian (Developer, Year 1)
- Trang Mai
It’s been a valuable experience in learning how to lead a team of developers to build a full-stack product from the ground up. I think the work we do is very meaningful and I’m glad to have had this opportunity.
- Daryl Chan
This was an interesting experience and a great learning opportunity.
- Chandrasekaran Hema
This summer has been particularly enlightening and rewarding. Software engineering and DevOps for a production-level system is not something that can easily be learnt from university classrooms. I truly appreciate the opportunity to see, to learn, to become a better engineer and a better person.
- Gary Liu
Whether or not you intend to do web dev, CVWO offers a great opportunity as a peek into how real world software development is like. It is a rare opportunity for a year 1 that is difficult to find elsewhere.
- Jonathan Chan
As a freshman with zero experience in web development, CVWO is a precious opportunity for me to learn software engineering with a bunch of amazing teammates. It was immensely gratifying to see our final product deployed and how it helped to optimise the workflow of VWO people. How cool is that?
- Liu Zimu
CVWO is truly eye opening and it is also a precious opportunity to experience full software development cycle!
- Na Nazhou
- Qiu Siqi
The opportunity to learn from impressive peers are my greatest takeaways from this programme.
- Tan Yee Jian
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
- Our partners and clients for their co-operation and support for the programme:
- Beyond Social Services
- Care Corner Counselling Center
- Care Corner Co-Parenting Center