top
Project Images
Redat-Woreda: Revolutionizing Ethiopian Civic Appointments. As project lead and primary full-stack developer for Redat-Woreda, our senior capstone project, I spearheaded the creation of a digital appointment scheduling system designed to modernize a critical Ethiopian government service. This project addressed the real-world challenge of inefficient paper-based processes within a tight academic delivery timeline, demanding innovative solutions from our team. The Domain: Bridging the Digital Divide. A 'woreda' is an administrative district in Ethiopia, akin to a county or municipality. Woreda offices handle essential citizen services like ID processing and permit applications, traditionally managed through a cumbersome paper-based appointment system. A breakdown in this scheduling process, due to manual errors or lost paperwork, can cause significant delays and hardship for citizens needing these vital documents. Scheduling Core: Conflict-Aware Appointment Creation. At the heart of Redat-Woreda is a robust conflict-aware appointment creation mechanism. We leveraged MongoDB and Mongoose to define a data model that inherently prevents double-bookings. The Mongoose schema enforces uniqueness on a combination of the assigned staff member, start time, and end time, ensuring that no two appointments can occupy the same slot for a given staff member. const mongoose = require('mongoose');
Eliminating double-booking and providing real-time queue visibility transforms a woreda office by streamlining citizen access to services and freeing up administrative staff from constant inquiry management.
Preventing double-bookings necessitated enforcing uniqueness at the schema level using MongoDB's unique index on appointment slots. This approach is crucial because concurrent booking requests, where two users attempt to reserve the same slot simultaneously, can bypass simple application-level checks if not handled atomically at the database layer. The unique index ensures that only one booking can succeed for a given slot, preventing race conditions inherent in simultaneous requests by leveraging the database's atomic operations.
Citizens can now track their appointment status in real-time via a web interface, significantly reducing the need for in-person visits or phone calls. This shift operationally benefits staff by decreasing interruptions and allowing them to focus on serving appointments rather than managing queues and inquiries. The ability for citizens to monitor progress *without visiting the office* is a key operational efficiency gain.
Simultaneously acting as project lead, scrum master, and primary full-stack developer demanded constant context switching and prioritization. Failure in any of these roles would have directly impacted the others: poor technical execution would undermine project direction, and weak scrum facilitation would derail development velocity. This required granular task breakdown, continuous risk assessment, and direct intervention to resolve blockers across all facets of the project lifecycle.
Shipping a functional full-stack system within an academic timeline required a strict Minimum Viable Product (MVP) scope. Features deemed non-essential for core appointment scheduling and real-time visibility were deferred. This MVP focus ensured delivery of core functionality, acknowledging the constraints of a capstone project rather than aiming for feature parity with production systems.
๐ก On-time delivery under academic constraints, particularly with a multi-hat role, provides a practical understanding of project management that theoretical frameworks alone cannot fully impart.
While acknowledging the inherent scope limitations of a capstone project, the engineering solutions for concurrency and real-time updates, coupled with the leadership demonstrated in a complex multi-role capacity, form the project's core value.
Imagine spending hours in line at a Woreda office, a local administrative district in Ethiopia, only to find that the permit or ID you need requires another visit due to a disorganized paper-based scheduling system. This friction hinders access to essential government services. Redat-Woreda aimed to digitize this process, replacing cumbersome manual systems with an efficient online appointment scheduler.
As Project Lead, Full-Stack Developer, and Scrum Master, I navigated a complex set of responsibilities. The Project Lead role demanded strategic vision and stakeholder communication, while the Full-Stack Developer role required deep dives into implementation across the MERN stack. Simultaneously, as Scrum Master, I facilitated agile processes, removed impediments, and ensured team velocity. This tripartite role necessitated constant context switching; I personally owned the architectural decisions and the final deployment strategy, while delegating specific feature development and testing responsibilities to the team based on their strengths and our sprint goals.
Delivering a functional full-stack application within an academic semester's constraints required rigorous prioritization. We focused on core features: secure user authentication, appointment booking with real-time slot availability, and a basic administrative dashboard for managing schedules. Features such as advanced reporting, automated notifications, and granular permissioning were deferred to a potential Phase 2, ensuring we could deliver a polished MVP.
๐ก Prioritization was key; we defined an MVP that addressed the core user need of appointment scheduling, deferring non-essential features to manage scope effectively within the academic timeline.
Ensuring accurate appointment scheduling required robust conflict detection. While a unique index on resource and time slots could prevent duplicate saves at the database level, a proactive query-time check provides a superior user experience. This allows us to intercept potential conflicts and deliver clear feedback to the user *before* a database constraint violation occurs. The following function illustrates this check:
For real-time updates on appointment availability and queue status, we implemented WebSockets. This approach offers persistent, bidirectional communication, minimizing latency and providing an immediate user experience as slots fill or become available. Rejecting polling was a strategic decision; constant client-side requests would have imposed a significant load on our Node.js server and introduced delays, negatively impacting the perceived responsiveness of the system, especially during peak demand.
๐ก WebSockets were chosen over polling to ensure low-latency, real-time updates for appointment availability, enhancing the user experience and reducing server overhead.
With a production timeline, we would invest more heavily in comprehensive end-to-end testing and more sophisticated error handling strategies.
WoredaConnect represents a focused effort to apply modern web technologies to a tangible civic problem, demonstrating both leadership adaptability and core MERN stack proficiency within the defined scope of a senior capstone project.