| 📋 Contract Management |
💰 Payment Tracking |
📍 GPS Monitoring |
| Create and track daily rental contracts between boda owners and riders |
Log daily payments (full/partial/short), auto-calculate balances |
Track rider routes during work hours via device GPS |
| 👤 Role-Based Dashboards |
🔔 Real-time Notifications |
📄 PDF Export |
| Separate views for Admin, Owner, and Rider |
Payment alerts and contract status updates |
Download payment receipts directly from mobile |
| Layer |
Technology |
Description |
| Frontend |
React 19 + Vite |
Modern UI with fast HMR |
| Mobile |
Capacitor 8 |
Cross-platform native builds |
| Database |
Dexie.js (IndexedDB) |
Client-side database, works offline |
| Styling |
Custom CSS |
Hand-crafted, no framework bloat |
| State |
React Context |
Lightweight state management |
| Routing |
React Router |
SPA navigation |
| Android |
Gradle + JDK 17+ |
Native Android build |
| Role |
Access Level |
Icon |
| Admin |
Full system control — manage owners, riders, view all data |
🔑 |
| Owner |
Manage their riders, track payments, view GPS history |
🏢 |
| Rider |
View assigned contract, submit daily payments, see history |
🏍️ |
# Install Node.js (v18+)
# Install npm
# Install Android Studio (for APK build)
# Clone the repository
git clone https://github.com/abnormal-yi/my-mkataba.git
# Navigate to project
cd my-mkataba
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build
# Sync with Capacitor
npx cap sync android
# Build Android APK
cd android
./gradlew assembleDebug
my-mkataba/
├── src/
│ ├── components/ # Reusable UI (Badge, Layout)
│ ├── context/ # Auth context (AuthContext)
│ ├── data/ # Database layer (Dexie.js)
│ ├── pages/ # Route pages (Login, Dashboards)
│ ├── App.jsx # Router setup
│ ├── main.jsx # Entry point + back button handler
│ └── index.css # Global styles
├── android/ # Capacitor Android project
├── screenshots/ # App screenshots
├── package.json # Dependencies
└── README.md # This file
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature)
- Commit your Changes (
git commit -m 'Add some AmazingFeature')
- Push to the Branch (
git push origin feature/AmazingFeature)
- Open a Pull Request
Private — Abnormal Tech Solutions

Note: You may need to enable "Install from unknown sources" in your Android settings.
Built with ❤️ for Boda Boda businesses in Tanzania
