A comprehensive analysis of what the Abokabot system must do (functional requirements) and how well it must perform (non-functional requirements), with engineering justifications.
Eight core capabilities the system must deliver to satisfy stakeholder needs.
Passengers and transport operators must register with valid credentials. The system authenticates users via multi-factor authentication (MFA), ensuring that only verified individuals access ticketing functions. Role-based access distinguishes passengers from administrators and operators.
Users can browse available routes and purchase digital tickets through a secure payment gateway. Tickets are issued with a unique QR code or NFC token that encodes route, fare, and validity period. Multiple payment methods including Menged card, mobile money, and bank transfer are supported.
When a passenger taps or swipes their Menged card at a boarding terminal, the system sends a real-time validation request to the Menged gateway. The gateway responds with card status, balance, and authorization. If approved, the gate opens and fare is deducted atomically.
The system maintains a route registry covering all active public transport lines in Bahir Dar. Users can search, filter, and view route details including stops, schedules, and current fare. Route data is refreshed in real-time based on operator updates.
Fares are computed dynamically based on origin, destination, distance, passenger category (student, adult, elderly), and any active promotions. The fare engine exposes a calculation API that clients call before ticket purchase to display accurate pricing.
All transactions are logged with timestamps, route information, fare charged, and payment method. Users can access a paginated transaction history, filter by date or route, and download digital receipts in PDF format for personal or expense records.
Administrators have a dedicated dashboard for managing users, operators, routes, and fare tables. The panel supports bulk route uploads, real-time monitoring of active sessions, and audit log access. Role privilege escalation requires supervisor approval.
Abokabot integrates with Menged through a RESTful API over TLS. The integration handles card top-up notifications, balance inquiries, and debit transactions. A webhook mechanism pushes real-time transaction confirmations back to the Abokabot ledger.
Quality attributes that determine how the system performs under real-world conditions.
Bahir Dar's peak commuter hours involve thousands of simultaneous boarding events. A delayed validation response creates physical queues at bus stops, negating the efficiency benefit of the system. The 300ms target for card validation and 500ms for ticket purchase ensures a boarding throughput that matches or exceeds manual cash collection. To achieve this, the system employs database connection pooling, Redis caching for route and fare data, and horizontal scaling of the validation microservice.
The system handles financial transactions and personal identity data. Any breach undermines passenger trust and exposes the organization to regulatory liability. All API communication is encrypted with TLS 1.3. Fare deductions use atomic database transactions with rollback guarantees to prevent double charges. Sensitive fields such as card numbers are tokenized and never stored in plaintext. Input validation and rate limiting are applied at the API gateway layer to defend against injection and brute-force attacks.
Bahir Dar's population and transport network are growing. The architecture must accommodate more routes, operators, and users without a redesign. Stateless API servers behind a load balancer allow adding capacity by provisioning new instances. The Menged validation service is independently scalable. A microservice boundary between ticketing, validation, and admin functions prevents one service's load from degrading others.
Public transport is a critical daily service. System downtime prevents passengers from boarding and disrupts city mobility. Redundant server deployments across two data center zones ensure failover within 30 seconds. The Menged integration includes a circuit-breaker pattern: if Menged is temporarily unreachable, the system falls back to pre-authorized offline tickets valid for one journey, ensuring continuity during transient failures.
As fare policies, routes, and regulations change, developers must modify the system rapidly and safely. A layered architecture with clear separation between presentation, business logic, and data access layers enables targeted changes without cascading side effects. Comprehensive automated tests covering 85% of business logic allow confident refactoring. Configuration-driven fare rules mean policy changes require no code deployment, reducing maintenance overhead.