{"id":28483321,"url":"https://github.com/damiancodes/m-joba-","last_synced_at":"2025-06-29T00:32:43.074Z","repository":{"id":288586405,"uuid":"968143867","full_name":"damiancodes/M-JOBA-","owner":"damiancodes","description":"MJOBA is a Kotlin-based Android marketplace app connecting urban Kenyans with verified local service providers across Nairobi's busy hubs, featuring secure M-Pesa escrow payments that protect both customers and providers","archived":false,"fork":false,"pushed_at":"2025-05-21T15:18:18.000Z","size":669,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-07T21:44:52.942Z","etag":null,"topics":["firebase-database","kotlin-android","kotlin-multiplatform","mpesa-api"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/damiancodes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-04-17T15:23:32.000Z","updated_at":"2025-05-21T19:25:02.000Z","dependencies_parsed_at":null,"dependency_job_id":"a2a7316d-a0cd-4683-a50c-28a588cb7cf1","html_url":"https://github.com/damiancodes/M-JOBA-","commit_stats":null,"previous_names":["damiancodes/firstrepooo","damiancodes/m-joba-"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/damiancodes/M-JOBA-","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/damiancodes%2FM-JOBA-","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/damiancodes%2FM-JOBA-/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/damiancodes%2FM-JOBA-/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/damiancodes%2FM-JOBA-/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/damiancodes","download_url":"https://codeload.github.com/damiancodes/M-JOBA-/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/damiancodes%2FM-JOBA-/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262518102,"owners_count":23323301,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["firebase-database","kotlin-android","kotlin-multiplatform","mpesa-api"],"created_at":"2025-06-07T21:38:16.209Z","updated_at":"2025-06-29T00:32:43.066Z","avatar_url":"https://github.com/damiancodes.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MJOBA App Documentation\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Platform-Android-3DDC84?style=for-the-badge\u0026logo=android\u0026logoColor=white\" alt=\"Android\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Language-Kotlin-7F52FF?style=for-the-badge\u0026logo=kotlin\u0026logoColor=white\" alt=\"Kotlin\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Architecture-MVVM-FF6F00?style=for-the-badge\u0026logo=firebase\u0026logoColor=white\" alt=\"MVVM\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Payment-M--Pesa-4CD964?style=for-the-badge\u0026logo=mpesa\u0026logoColor=white\" alt=\"M-Pesa\" /\u003e\n  \n  \u003cp\u003eConnecting urban Kenyans with verified local service providers\u003c/p\u003e\n  \n  \u003cimg src=\"https://github.com/damiancodes/M-JOBA-/blob/master/app/src/main/res/drawable/home1.jpeg?raw=true\" width=\"300\" alt=\"MJOBA App Screenshot\"/\u003e\n\u003c/div\u003e\n\n##  Overview\n\nMJOBA is a marketplace app that bridges the gap between urban Kenyan customers and local service providers. Operating in busy urban centers like Gikomba, Toi Market, Nairobi CBD, and Lavington, the app provides instant access to verified service professionals including:\n\n- Beauticians\n- Plumbers\n- Electricians  \n- Cobblers\n- And more local services\n\n## 🛠️ Technical Architecture\n\n\u003cdiv align=\"center\"\u003e\n  \u003ctable\u003e\n    \u003ctr\u003e\n      \u003cth\u003eComponent\u003c/th\u003e\n      \u003cth\u003eTechnologies\u003c/th\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eFrontend\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Jetpack_Compose-4285F4?style=flat-square\u0026logo=jetpackcompose\u0026logoColor=white\" /\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Material_Design-757575?style=flat-square\u0026logo=materialdesign\u0026logoColor=white\" /\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eBackend\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Firebase-FFCA28?style=flat-square\u0026logo=firebase\u0026logoColor=black\" /\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Cloud_Functions-4285F4?style=flat-square\u0026logo=googlecloud\u0026logoColor=white\" /\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eDatabase\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Firestore-FFCA28?style=flat-square\u0026logo=firebase\u0026logoColor=black\" /\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eAuthentication\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Firebase_Auth-FFCA28?style=flat-square\u0026logo=firebase\u0026logoColor=black\" /\u003e\n        \u003cimg src=\"https://img.shields.io/badge/SMS_Verification-FF6F00?style=flat-square\u0026logo=africas-talking\u0026logoColor=white\" /\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eMaps \u0026 Location\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Google_Maps_API-4285F4?style=flat-square\u0026logo=googlemaps\u0026logoColor=white\" /\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003ePayments\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg src=\"https://img.shields.io/badge/M--Pesa_Daraja_API-4CD964?style=flat-square\u0026logo=mpesa\u0026logoColor=white\" /\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eNotifications\u003c/td\u003e\n      \u003ctd\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Firebase_Cloud_Messaging-FFCA28?style=flat-square\u0026logo=firebase\u0026logoColor=black\" /\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/table\u003e\n\u003c/div\u003e\n\n##  Key Features\n\n\u003cdiv align=\"center\"\u003e\n  \u003ctable\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" width=\"20%\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/-Instant_Booking-007BFF?style=flat-square\u0026logoColor=white\" /\u003e\n        \u003cp\u003eBook immediately or schedule services for later\u003c/p\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" width=\"20%\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/-Escrow_Payments-28A745?style=flat-square\u0026logoColor=white\" /\u003e\n        \u003cp\u003eSecure M-Pesa transactions with funds held until job completion\u003c/p\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" width=\"20%\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/-Provider_Verification-FFC107?style=flat-square\u0026logoColor=white\" /\u003e\n        \u003cp\u003eAll service providers are vetted and verified\u003c/p\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" width=\"20%\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/-Ratings_\u0026_Reviews-DC3545?style=flat-square\u0026logoColor=white\" /\u003e\n        \u003cp\u003eQuality assurance through customer feedback\u003c/p\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" width=\"20%\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/-Provider_Dashboard-6610F2?style=flat-square\u0026logoColor=white\" /\u003e\n        \u003cp\u003eEarnings tracking and job management\u003c/p\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/table\u003e\n\u003c/div\u003e\n\n## 🔄 App Workflow\n\n### Customer Journey\n\n```mermaid\ngraph TD\n    A[Download App] --\u003e B[Create Account]\n    B --\u003e C[Browse Service Providers]\n    C --\u003e D[Select Provider]\n    D --\u003e E[Book Service]\n    E --\u003e F[Pay via M-Pesa]\n    F --\u003e G[Service Fulfilled]\n    G --\u003e H[Confirm Completion]\n    H --\u003e I[Rate \u0026 Review]\n```\n\n### Provider Journey\n\n```mermaid\ngraph TD\n    A[Register as Provider] --\u003e B[Complete Verification]\n    B --\u003e C[Set Services \u0026 Pricing]\n    C --\u003e D[Receive Booking Requests]\n    D --\u003e E[Accept/Decline Jobs]\n    E --\u003e F[Complete Service]\n    F --\u003e G[Customer Confirms]\n    G --\u003e H[Receive Payment]\n    H --\u003e I[View Dashboard Analytics]\n```\n\n##  Business Model\n\n\u003cdiv align=\"center\"\u003e\n  \u003ctable\u003e\n    \u003ctr\u003e\n      \u003cth\u003eRevenue Stream\u003c/th\u003e\n      \u003cth\u003eDescription\u003c/th\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eCommission\u003c/td\u003e\n      \u003ctd\u003e10% fee on each successful service transaction\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eProvider Subscriptions\u003c/td\u003e\n      \u003ctd\u003eOptional premium tiers for increased visibility and features\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eBoosted Listings\u003c/td\u003e\n      \u003ctd\u003ePaid promotion to appear at top of search results\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/table\u003e\n\u003c/div\u003e\n\n##  Security Features\n\n- **Secure Payments**: M-Pesa integration with escrow functionality\n- **Identity Verification**: Multi-step provider verification process\n- **User Authentication**: Firebase Authentication with phone verification\n- **Data Protection**: Secure credential storage and encryption\n- **Transaction Monitoring**: Automated flagging of suspicious activities\n\n## 📊 Market Impact\n\nMJOBA aims to digitize Kenya's informal economy by:\n\n- Providing local service providers access to wider urban markets\n- Building trust through verified profiles and customer reviews\n- Creating consistent income opportunities for skilled workers\n- Offering convenient, secure service bookings for urban residents\n\n## 🚀 Roadmap\n\n### MVP (Current Focus)\n- Core booking functionality\n- M-Pesa payment integration\n- Provider verification system\n- Rating and review system\n- Basic provider dashboards\n\n### Future Expansions\n- Service categories expansion\n- In-app messaging\n- Loyalty rewards program\n- Advanced analytics for providers\n- Subscription tiers and premium features\n\n##  Implementation Details\n\n### Architecture\nMJOBA follows the MVVM (Model-View-ViewModel) architecture pattern:\n\n```\napp/\n├── data/\n│   ├── repository/    # Data repositories\n│   ├── model/         # Data models\n│   └── remote/        # API services (Firebase, M-Pesa)\n├── domain/\n│   ├── usecase/       # Business logic\n│   └── model/         # Domain models\n├── presentation/\n│   ├── ui/            # Screens and components\n│   ├── viewmodel/     # ViewModels\n│   └── navigation/    # Navigation components\n└── util/              # Utility classes\n```\n\n### Key Dependencies\n\n- **UI**: Jetpack Compose, Material Design Components\n- **Navigation**: Jetpack Navigation Compose\n- **Networking**: Retrofit, OkHttp\n- **Async**: Kotlin Coroutines, Flow\n- **DI**: Hilt\n- **Database**: Firebase Firestore\n- **Maps**: Google Maps Compose\n- **Payments**: M-Pesa Daraja SDK\n- **Analytics**: Firebase Analytics\n- **Testing**: JUnit, Espresso, Mockito\n\n##  Screen Showcase\n\n\u003cdiv align=\"center\"\u003e\n  \u003ctable\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" width=\"33%\"\u003e\n        \u003cstrong\u003eRegistration\u003c/strong\u003e\u003cbr\u003e\n        \u003cimg src=\"https://github.com/damiancodes/M-JOBA-/blob/master/app/src/main/res/drawable/register.jpeg?raw=true\" width=\"250\" alt=\"Registration Screen\"/\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" width=\"33%\"\u003e\n        \u003cstrong\u003eHome Screen\u003c/strong\u003e\u003cbr\u003e\n        \u003cimg src=\"https://github.com/damiancodes/M-JOBA-/blob/master/app/src/main/res/drawable/home1.jpeg?raw=true\" width=\"250\" alt=\"Home Screen\"/\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" width=\"33%\"\u003e\n        \u003cstrong\u003eLocation Search\u003c/strong\u003e\u003cbr\u003e\n        \u003cimg src=\"https://github.com/damiancodes/M-JOBA-/blob/master/app/src/main/res/drawable/searchlocation.jpeg?raw=true\" width=\"250\" alt=\"Location Search\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" width=\"33%\"\u003e\n        \u003cstrong\u003eBooking Summary\u003c/strong\u003e\u003cbr\u003e\n        \u003cimg src=\"https://github.com/damiancodes/M-JOBA-/blob/master/app/src/main/res/drawable/bookingsummary.jpeg?raw=true\" width=\"250\" alt=\"Booking Summary\"/\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" width=\"33%\"\u003e\n        \u003cstrong\u003eProvider Services\u003c/strong\u003e\u003cbr\u003e\n        \u003cimg src=\"https://github.com/damiancodes/M-JOBA-/blob/master/app/src/main/res/drawable/providerservives.jpeg?raw=true\" width=\"250\" alt=\"Provider Services\"/\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" width=\"33%\"\u003e\n        \u003cstrong\u003eProvider Dashboard\u003c/strong\u003e\u003cbr\u003e\n        \u003cimg src=\"https://firebasestorage.googleapis.com/v0/b/mjoba-3daad.firebasestorage.app/o/provider2.jpeg?alt=media\u0026token=32bbcf7a-f1e4-4ead-86bd-6428ba92b4ea\" width=\"250\" alt=\"Provider Dashboard\"/\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/table\u003e\n\u003c/div\u003e\n\n##  Target Audience\n\n### Customers\n- Urban residents in Nairobi\n- Time-conscious professionals\n- People seeking verified service providers\n\n### Service Providers\n- Skilled workers in various trades\n- Small business owners\n- Individual service professionals\n\n##  Contact \u0026 Support\n\nFor technical support or feature requests:\n- Email: support@mjoba.com\n- In-app feedback form\n- GitHub issues (for developers)\n\n---\n\n\u003cdiv align=\"center\"\u003e\n  \u003cp\u003eMJOBA: Connecting Service Needs with Verified Providers\u003c/p\u003e\n  \u003cp\u003e\u003csmall\u003e© 2025 MJOBA. All rights reserved.\u003c/small\u003e\u003c/p\u003e\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdamiancodes%2Fm-joba-","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdamiancodes%2Fm-joba-","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdamiancodes%2Fm-joba-/lists"}