v4.0 · Multi-Tenant · Java 22 · Spring Boot 3.3

Move people.
Track everything.

A multi-tenant transport ticketing platform with dynamic pricing, M-PESA STK push payments, real-time seat management, and role-based access for saccos, stages, and attendants.

Get Started → Go to Dashboard → Learn more
Multi
Tenant Architecture
AES-256
Credential Encryption
4
Role Levels
Real-time
Seat Management
Platform Features

Everything a sacco needs

💳

M-PESA STK Push

Per-tenant Safaricom integration with AES-256 encrypted credentials. STK push and confirmation SMS run in parallel via virtual threads.

📈

Dynamic Pricing

Fare windows keyed to LocalDateTime ranges. Peak-hour, off-peak, or open-ended pricing with automatic fallback to base fare.

🏢

Multi-Tenant

Fully isolated tenants — each sacco has its own stages, trips, vehicles, users, and encrypted M-PESA credentials.

Virtual Threads

Java 22 virtual threads + StructuredTaskScope for atomic batch bookings. Semaphore-throttled M-PESA concurrency.

🔐

Role-Based Access

Four roles: Super Admin, Tenant Admin, Stage Head, Stage Attendant — each with scoped permissions enforced at the API and UI layer.

📱

Offline PWA

Installable progressive web app with service worker caching, offline fallback, push notification support, and background sync.

Access Control

Built for every team member

Super Admin
  • ✓ Manage all tenants
  • ✓ Create any user
  • ✓ Full system access
Tenant Admin
  • ✓ Manage stages & trips
  • ✓ Invite users
  • ✓ Set fare windows
Stage Head
  • ✓ Manage vehicles
  • ✓ Set fares
  • ✓ Book tickets
Stage Attendant
  • ✓ Book tickets
  • ✓ View trips
  • ✓ View vehicles
Tech Stack

Built on proven foundations

Java 22 Spring Boot 3.3 TimescaleDB Flyway Spring Security + JWT Resilience4j Virtual Threads StructuredTaskScope Africa's Talking SMS Thymeleaf PWA / Service Worker

Ready to get started?

Sign in with your sacco credentials to access the dashboard, manage trips, and book tickets.

Sign In to TransitPass Go to Dashboard →