Transbook is a full-stack transport booking system built around advance ride scheduling. Passengers book rides in advance, drivers get notified, and seat availability is managed per route — all backed by secure payments via Paystack.
What sets Transbook apart architecturally is its multi-app frontend structure: each user panel (passenger, driver, admin) is an independent React application, enabling isolated development, deployment, and scaling per role.
Unlike traditional monolithic frontends, Transbook is structured as three independent React apps sharing one Node.js/Express backend:
Transbook/
|-- apps/
| |-- fy/ # React app for passengers
| |-- driver/ # React app for drivers
| `-- admin/ # React app for admins
|
|-- backend/ # Shared Node.js + Express backend
| |-- src/
| | |-- routes/ # API route definitions
| | |-- controllers/ # Business logic
| | |-- middleware/ # Auth, RBAC, rate limiting
| | |-- services/ # Paystack integration
| | `-- models/ # MongoDB schema definitions
|
`-- .env.example # Environment variable template
Why multi-app?
- Each panel can be developed, deployed, and scaled independently
- Smaller bundle sizes per app — only loads what each role needs
- Clear separation of concerns between passenger, driver, and admin concerns
- Easier to onboard contributors to a specific panel without touching others
- Browse available routes and scheduled rides
- Advance booking with seat selection
- Secure checkout and payment via Paystack
- Digital receipts after successful bookings
- OAuth social login and JWT-based authentication
- Real-time booking status updates
- Register vehicle with total seat capacity
- Publish rides and manage seat availability per route
- Reserve seats for regular agents and customers
- Receive real-time notifications for new bookings
- View and manage upcoming ride schedules
- Full platform oversight from a dedicated dashboard
- Manage users, drivers, routes, and bookings
- Assign or unassign routes
- View system logs and operational reports
- Role-based access control (RBAC) across all panels
- Paystack payment gateway integration
- Digital receipts generated after successful bookings
Frontend (x3 independent React apps):
Backend (shared):
Data & Infra:
Auth & Payments:
- Node.js v18+
- MongoDB 6+ (or MongoDB Atlas)
git clone https://github.com/j-deku/Transbook.git
cd Transbookcp .env.example .envOpen .env and fill in your values:
# Database
MONGO_URI=your_mongodb_connection_string
# Auth
JWT_SECRET=your_jwt_secret
JWT_EXPIRES_IN=7d
# OAuth
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
# Paystack
PAYSTACK_SECRET_KEY=your_paystack_secret_key
PAYSTACK_PUBLIC_KEY=your_paystack_public_key
# App
PORT=5000
PASSENGER_URL=http://localhost:5173
DRIVER_URL=http://localhost:5174
ADMIN_URL=http://localhost:5175# Backend
cd backend && npm install
# Passenger app
cd ../fy && npm install
# Driver app
cd ../driver && npm install
# Admin app
cd ../admin && npm install# Start backend (from /backend)
npm run dev
# Start passenger app (from /apps/fy)
npm run dev
# Start driver app (from /apps/driver)
npm run dev
# Start admin app (from /apps/admin)
npm run dev| App | URL |
|---|---|
| Passenger | http://localhost:5173 |
| Driver | http://localhost:5174 |
| Admin | http://localhost:5175 |
| Backend API | http://localhost:5000 |
| Role | Access |
|---|---|
| Passenger | Browse routes, book rides, manage bookings, make payments |
| Driver | Publish rides, manage seat availability, receive notifications |
| Admin | Full platform access, user management, operations oversight |
Transbook shares the same core booking concept as TOLI-TOLI but differs in two key ways:
| Transbook | TOLI-TOLI | |
|---|---|---|
| Frontend architecture | Multi-app (3 independent React apps) | Single monorepo React app |
| Database | MongoDB | MySQL |
| Stage | MVP | Production-grade |
Transbook served as the MVP validation ground for the booking flow that TOLI-TOLI later refined and scaled.
- Deploy all three frontend apps
- API documentation (Postman/Swagger)
- Screenshots and demo GIFs
- Driver earnings dashboard
- Email notifications for booking updates
- Paystack for payment integration
- MongoDB Atlas for cloud database
- Vite for fast multi-app builds
Jeremiah Deku
This project is licensed under the MIT License.