Inspiration
The inspiration for Mindful stems from the communication breakdown often seen in community service. For caregivers of people with disabilities, the journey from signing up to an event to actually coordinating logistics is often fragmented across multiple platforms. We wanted to build a one-stop solution that leverages readily available government data to simplify registration and bridge the gap between planning and participation.
What it does
Mindful is a comprehensive event management and communication platform featuring three distinct user roles:
Staff (Admin): Empowered with Dynamic Event Planning, staff can create and modify events even after publication. They can add new dates to existing events and delegate admin rights to trusted volunteers to manage communication channels.
Caregivers: Utilizing a Profile-Based System, one caregiver can manage multiple disabled participants. Their data is pulled securely via Singpass, and they can toggle between their caregiver duties and their own personal volunteering interests.
Volunteers: A personalized onboarding system filters events based on their specific skills (e.g., music therapy vs. socializing).
How we built it
Frontend: Built with Flutter and Dart for a responsive, multi-role interface.
Identity: Integrated GovTech’s MockPass to simulate the use of Singpass, enabling the use of "ready-made" information to populate user profiles.
Networking: Leveraged Localtunnel and ngrok to bridge our local development environment to the mobile emulator.
Challenges we ran into
Our biggest hurdle was the technical orchestration of the Automated Syncing logic:
Socket Connectivity: We faced recurring 503 Tunnel Unavailable and net::ERR_SOCKET_NOT_CONNECTED errors when the tunnel links became unstable during testing.
WebView Intercepts: We had to engineer custom logic to bypass tunnel "reminder" pages that would otherwise prevent the Singpass login from completing.
Build Failures: Encountered significant Execution failed for task ':app:compileFlutterBuildDebug' errors due to asset directory naming conflicts (assets vs images).
What we learned
System Architecture: The importance of a profile-based system when dealing with complex user relationships (1 caregiver to many participants).
OIDC Flow: Gained a deep understanding of how to use Bypass-Tunnel-Reminder headers to facilitate automated testing of secure web views.
Local Infrastructure: Learned how to effectively use the 10.0.2.2 IP bridge to connect Android emulators to local hardware ports.
Log in or sign up for Devpost to join the conversation.