Inspiration
The inspiration for myUmuganda comes from Rwanda’s rich tradition of Umuganda — the nationwide community work practiced monthly to promote unity and development. I wanted to create a digital platform to modernize and streamline the coordination of Umuganda activities, making it easier for officials and citizens to participate actively and efficiently. The goal was to support government officers managing activities at different administrative levels while empowering citizens with relevant, personalized information via a mobile app.
What it does
myUmuganda provides a full-stack system combining a Django backend and admin panel with a React Native mobile app for citizens.
- SuperAdmins manage the entire system and create admin accounts (Sector Officers and Cell Officers).
- Sector Officers schedule sector-level Umuganda dates and assign activities.
- Cell Officers add detailed session info per cell, including location, tools, fines, and descriptions.
- Citizens receive notifications and attendance tracking based on their assigned sectors and cells.
- The system also supports OTP-based password reset via email and mobile money fine payments integration.
How we built it
The backend and admin panel are built with Django, using models that reflect Rwanda’s administrative hierarchy: Province → District → Sector → Cell → Village.
User roles are strictly managed with filtering to keep the system secure and organized.
Notifications, OTP emails, attendance tracking, and fine notifications are handled asynchronously using Celery with Redis as the message broker.
The citizen-facing app is a React Native Expo app that connects with the backend APIs to deliver personalized Umuganda session information.
Challenges we ran into
A major challenge was hosting the asynchronous task system (Celery and Redis) due to the difficulty in finding reliable free hosting services for brokers and workers. This impacted the ability to deploy the full background task system live initially.
Managing the complexity of filtering users and activities strictly by administrative boundaries without user input errors was also challenging, especially considering the possibility of sectors and cells sharing names in different districts.
Accomplishments that we're proud of
- Successfully modeling Rwanda’s detailed administrative divisions in the backend with strong relational integrity.
- Implementing a multi-role system that respects strict hierarchical permissions and prevents unauthorized access.
- Building a seamless workflow for Umuganda session creation, notification, attendance, and fine management.
- Enabling OTP password reset and asynchronous notifications with Celery and Redis (when hosted).
- Providing a fully functional mobile app that citizens can use to access their localized Umuganda info.
What we learned
- How to handle complex user roles and permissions in a nationwide civic tech application.
- Integrating hierarchical filtering for user accounts and activities based on precise administrative locations.
- Building asynchronous task queues with Celery and Redis and the challenges of hosting them for free.
- The importance of tight data validation and automation for community-based systems like Umuganda.
What's next for myUmuganda
The next major feature is implementing location-based filtering using latitudes and longitudes of administrative units with the Haversine formula.
Since the project already includes detailed geographical data down to the village level and already deployed to my github account, this will allow precise mapping and filtering of users and Umuganda sessions even when administrative names are duplicated.
This will improve accuracy and usability when assigning officers and managing participation geographically.
Log in or sign up for Devpost to join the conversation.