Web Application Project
A dual‑portal Flask web application developed for SG Enable, an agency supporting Persons with Intellectual Disabilities (PWIDs) in Singapore. The platform streamlines service access for PWIDs and caregivers while automating administrative tasks for staff.
The Brief
Target Audience
My Role
-
PWIDs and caregivers – to easily discover activities, submit enquiries, and manage profiles.
-
Staff members – to manage accounts, track transactions, and monitor participation.
-
General public – to access information and submit enquiries without registering.
I was a core developer responsible for:
-
PWID portal pages – activity discovery, profile management, and participant‑specific views.
-
Customer support system – unified enquiry management with reply functionality for both public and registered users.
-
Staff analytics dashboard – built with Chart.js to visualise activity participation trends and enquiry categories.
-
Code integration and ensuring smooth collaboration across team members.
The Problem
The Solution
SG Enable’s services were only accessible through calls or in‑person visits, leading to:
-
Limited accessibility for PWIDs and caregivers.
-
Inefficient manual operations – staff manually handled activity sign‑ups, feedback, and participant tracking.
-
Poor communication – important information scattered across calls, emails, and SMS.
-
Lack of personalised support – no centralised system for individual profiles or tailored recommendations.
A Flask web application with three distinct user roles (Public, PWID/Member, Staff) that centralises services.
Key features:
-
Public portal – browse activities, submit enquiries, and view information without logging in.
-
PWID/Member portal – secure account management, activity registration with accessibility needs tracking, and enquiry tracking.
-
Staff portal – centralised dashboard for managing accounts, activities, transactions (with multi‑payment support), and enquiries.
-
Analytics dashboard – real‑time visualisation of participation rates and enquiry topics using Chart.js.
-
Security – 10‑minute session timeout to protect user data, role‑based access control.
Process
The Solution
-
Requirements gathering – identified pain points through user stories (limited accessibility, manual operations, poor communication).
-
Design – created wireframes in Figma with a simple layout, clear language, and intuitive navigation tailored for PWIDs.
-
Implementation – built with Flask, Jinja2 templates, Bootstrap 5, and shelve for persistence. I led the enquiry system, PWID pages, and analytics dashboard.
-
Integration – merged code from team members (member 1 on account/public activity management, member 2 on transaction/shopping cart) and resolved conflicts.
-
Testing – validated functionality with pre‑configured test accounts for each user role.
-
Iteration – refined UI and added features like Sync ID protocol to prevent ID collisions across storage files.
-
Fully functional web application delivered within the project timeline.
-
Reduced administrative workload – staff can now manage sign‑ups, enquiries, and transactions from a single dashboard.
-
Improved accessibility – PWIDs and caregivers can independently browse, register, and communicate online.
-
Data‑driven insights – analytics dashboard helps staff identify popular activities and common enquiry topics.
-
Successful integration of three team members’ code with consistent UI and secure role‑based access.
Tech Stack
-
Backend: Python, Flask
-
Frontend: Jinja2 templates, HTML5, CSS3, Bootstrap 5
-
Data Visualisation: Chart.js
-
Persistence: shelve (object‑based storage)
-
Form Handling: WTForms with custom validation
-
Authentication: Session‑based login with role‑specific access












