Inspiration
Our journey in developing UnityLink, a web app designed to assist individuals with special needs and the elderly with events and travel, was profoundly shaped by our collective experiences volunteering with diverse organisations and communities.
One notable example was our collaboration with APSN Tanglin Special School to guide children with special needs to the RDA (Riding for Disabled Association). The RDA facility was challenging to access independently due to many cross-roads, uneven walkways, and its distance from the nearest bus stop. Volunteers worked with the children’s parents to identify a more accessible meeting point (e.g Toa Payoh MRT Station), and then chaperoned them to the RDA, ensuring a safer and smoother journey while providing both physical and emotional support.
Another significant incident was when we witnessed an elderly man struggling to book a cab to his exercise centre at Hong Lim imPAct Gym, where he found it difficult to describe the pick up spot due to language barriers as well as not being so familiar with the taxi hiring applications.
These experiences brought to light the daily challenges faced by vulnerable groups when they engage in events, from navigating complex environments to ensuring their safety and convenience during travel. They inspired us to develop UnityLink as a solution that integrates technology with compassionate support. We envisioned a web-app that could coordinate volunteers from across the country, relay important user details to stakeholders, and facilitate transportation to meet the unique needs of each user when wanting to participate in events and activities.
What did we learn?
Through our development of UnityLink, we gained key insights into enhancing the experience of vulnerable groups. We learned the importance of understanding their unique needs and tailoring technology to address these challenges, such as improving navigation and coordinating transportation. Our experiences emphasised the value of user-centric design in creating effective solutions that cater specifically to the users’ requirements. We also discovered how technology can be leveraged to strengthen community networks by facilitating better coordination and communication among caregivers, volunteers, and users. Furthermore, we recognized the essential role of empathy and understanding in designing an app that not only meets practical needs but also provides emotional support. These lessons guided us in developing an app that enhances planning, safety, and accessibility, ensuring it is both compassionate and effective.
Technical
The Web Application will be run in the cloud using a Virtual Cloud Computer running Linux with Docker installed.
Docker is used to containerize our application into four/five separate parts:
- Nginx Reverse Proxy
- Front-end Web Server (ReactJS)
- Back-end API Server (ExpressJS)
- MariaDB Database (Relational SQL Database)
- Redis Cache (optional)
The Nginx Reverse Proxy is used to point connections to the correct server. For base routes starting with '/api', it points to the Back-end API Server while any other base route leads to the Front-end Web Server. This will have an open bridge port, which will also be port forwarded to for public-facing connections.
The docker containers will be within a Docker Internal Network. Here are the list of containers per network.
- Web Internal Network: The Nginx Reverse Proxy, Front-end Web Server and Back-end API Server
- Back-end Network: The Back-end API Server, MariaDB Database and Redis Cache (optional)
A docker-compose.yaml file will be used to streamline and speedup the deployment of the containers.
Cloudflare will be used for the domain name and DNS propagation. LetsEncrypt is used to the renewal of SSL/TLS Certificates.
What we Learnt
- how to make use of ReactJS to create the Web Application
- how to make use of ExpressJS to create the API Endpoints and making use of SwaggerUI to test the endpoints efficiently
- how to structure and work together as a development team to ensure consistency throughout the development cycle
- how to deploy the web application using Dockerfile and docker-compose.yaml on a Linux machine
Challenges Faced
- Since we were mostly newbies in Web Development, we weren't able to code out all of the features that we wanted into the application.
- Due to time and money constraints, we weren't able to get tokens for testing out the API services that we want to use along-side our application.
- Developing the application together caused some technical bugs due to differences in programming ethics and style. It was also caused from a lack of structure as we were not used to developing in production. This was eventually sorted out later on close to the deadline.
Log in or sign up for Devpost to join the conversation.