← All projects

13 / FULL-STACK / CASE STUDY

RouteNG

Exploring a more connected intercity travel experience in Nigeria.

MVP Inspect source on GitHub ↗
Architecture schematic: Web frontend to Express API to PostgreSQL to Optional Paystack
Architecture schematic based on reviewed source. No live system data.

Architecture

Web frontend → Express API → PostgreSQL → Optional Paystack

Problem & context

Intercity carpooling needs coordinated ride listings, passenger requests and seat availability.

Objectives

Build an MVP for Nigerian city search, ride management and driver/passenger booking workflows.

My role & project work

Project source includes a vanilla HTML/CSS/JavaScript frontend, Express API and PostgreSQL booking model.

Technical implementation

The API includes cookie-based JWT authentication, password hashing, city and ride search, vehicle management, seat-aware bookings, notifications and reviews. Paystack initialization and verification routes require server configuration.

Engineering decisions

The booking route uses PostgreSQL transactions and SELECT FOR UPDATE to coordinate seat reservations. Express rate limits, Helmet and Zod validation provide baseline request controls.

Challenges & solutions

Booking state transitions and payment reconciliation need additional hardening. The README explicitly lists payment webhooks, identity verification and operational monitoring as pre-launch work. No real payments were tested.

Testing & verification

Reviewed README.md, package.json, src/server.js and the repository tree. Frontend is vanilla JavaScript, not React. API routes are implemented in source; database, concurrency and end-to-end tests were not run here.

Current status

MVP, not a verified live transportation service. Payment integration is optional and its production configuration is unverified. No paid booking or passenger-volume claim is made.

Lessons & next steps

The design highlights the importance of transactional seat allocation and explicit booking states. Payment verification and reconciliation need separate validation before launch.

Discuss this work → View resume