Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

349 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿš€ HustleHub

HustleHub Logo

Your Campus Marketplace

Platform Language Framework Backend License PRs Welcome

Connecting campus hustlers with customers through trust, convenience, and innovation

Features โ€ข Tech Stack โ€ข Getting Started โ€ข Contributing โ€ข Roadmap


๐Ÿ“– About

HustleHub is a native Android marketplace app that transforms the informal peer-to-peer service economy at Meru University of Science & Technology. Students offer laundry, salon, tutoring, graphic design, food, and more โ€” but currently rely on chaotic WhatsApp groups and word of mouth.

HustleHub organizes this economy into a structured, trustworthy platform with:

  • ๐Ÿ” AI-powered search โ€” "braids near Gate B under 500"
  • ๐Ÿ’ฌ Safe in-app messaging โ€” no phone number sharing required
  • ๐Ÿ—บ๏ธ Campus map โ€” real-time provider locations
  • โญ Reputation system โ€” ratings, reviews, and trust scores
  • ๐ŸŽ“ Student-only access โ€” verified via university email
  • ๐Ÿ“ธ Portfolio showcase โ€” providers display their work

โœจ Features

Core Features (v1.0)

Authentication: Student email signup (@must.ac.ke), email OTP verification, Google Sign-In, role selection (Provider / Customer / Both)

Service Management: Create and edit listings with portfolio images, category selection, price range, availability toggle (Available / Busy / Offline)

Discovery: Browse by category, text search, AI-powered natural language search via Gemini, sort by relevance / rating / distance

Messaging: Real-time 1-on-1 chat, voice notes with waveform, image sharing, location sharing, Service Request Cards, read receipts, push notifications (FCM)

Campus Map: Google Maps with provider pins color-coded by category, distance-based discovery, quick actions from map

Ratings & Reviews: 5-star rating, written reviews, moderation, auto-prompt after service

Future Features (Roadmap)

  • ๐Ÿ“ž Voice/video calls (WebRTC)
  • ๐Ÿ’ฐ M-Pesa payment integration
  • ๐Ÿ† Gamified Hustle Score, badges, leaderboards
  • ๐Ÿซ Multi-campus support (Kenyatta, UoN, etc.)
  • ๐Ÿ“ˆ Provider analytics dashboard

๐Ÿ› ๏ธ Tech Stack

Android Client

  • Language: Kotlin 2.x
  • UI: Jetpack Compose + Material 3 Expressive
  • Architecture: MVVM + Clean Architecture (feature-based)
  • Navigation: Navigation 3 (androidx.navigation3)
  • DI: Hilt (Dagger)
  • Networking: Retrofit 3.0.0 + OkHttp 5.x
  • Real-time Chat: OkHttp WebSocket client โ†’ Spring Boot WebSocket/STOMP
  • Local Cache: Room 2.8.4 + DataStore Preferences (offline-first)
  • Image Loading: Coil 2.7.0
  • State: Kotlin Flow + StateFlow

Backend & Infrastructure

  • REST API: Spring Boot (Kotlin) โ€” all data at /api/v1/
  • Real-time: Spring WebSocket / STOMP โ€” live chat and presence
  • Authentication: Firebase Auth (Email/Password + Google Sign-In)
  • Push Notifications: Firebase Cloud Messaging (FCM)
  • AI Search: Gemini API (invoked server-side)
  • Maps: Google Maps SDK for Android

โš ๏ธ No Firestore, no Firebase Realtime Database, no Supabase. All application data is served by the Spring Boot backend. Firebase is used exclusively for Auth and FCM.


๐Ÿ—๏ธ Architecture

Android Client
โ”œโ”€โ”€ Presentation (Compose + ViewModels)
โ”œโ”€โ”€ Domain (Use Cases + Repository Interfaces)
โ””โ”€โ”€ Data (Retrofit APIs + Room Cache + WebSocket)
        โ”‚
        โ–ผ REST /api/v1/ + WebSocket
Spring Boot Backend
โ”œโ”€โ”€ REST API (services, discovery, chat, users, reviews, media)
โ”œโ”€โ”€ WebSocket Server (real-time chat)
โ”œโ”€โ”€ Gemini AI Service (natural language search)
โ””โ”€โ”€ Database + File Storage
        โ”‚
Firebase (Auth + FCM only)

Package Structure

must.kdroiders.hustlehub/
โ”œโ”€โ”€ core/                    # Shared: ApiClient, AuthInterceptor, theme, utils
โ”œโ”€โ”€ di/                      # Hilt: NetworkModule, FirebaseModule, RepositoryModule
โ”œโ”€โ”€ navigation/              # Navigation 3 NavKeys + NavGraph
โ”œโ”€โ”€ local/                   # Room: DAOs, entities (offline cache)
โ””โ”€โ”€ feature/
    โ”œโ”€โ”€ auth/                # Firebase Auth โ†’ POST /api/v1/auth/register
    โ”œโ”€โ”€ profile/             # GET/PUT /api/v1/users/me
    โ”œโ”€โ”€ services/            # CRUD /api/v1/services
    โ”œโ”€โ”€ discovery/           # /api/v1/discovery/* (browse, search, AI, map pins)
    โ”œโ”€โ”€ chat/                # REST history + WebSocket real-time
    โ”œโ”€โ”€ map/                 # Google Maps + provider pins
    โ”œโ”€โ”€ reviews/             # POST /api/v1/reviews
    โ”œโ”€โ”€ notifications/       # FCM service + notification center
    โ””โ”€โ”€ media/               # POST /api/v1/media/upload

See ARCHITECTURE.md for full detail.


๐Ÿš€ Getting Started

Prerequisites

  • Android Studio Ladybug (or latest stable)
  • JDK 17+
  • Firebase account (Auth + FCM only)
  • Google Cloud account (Maps API key)
  • HustleHub Spring Boot backend running locally

Installation

  1. Clone the Android repo

    git clone git@github.com:Android-Community-MUST/kotlin-hustlehub.git
    cd kotlin-hustlehub
  2. Clone and start the Spring Boot backend

    git clone git@github.com:Android-Community-MUST/hustlehub-backend.git
    cd hustlehub-backend
    ./gradlew bootRun   # starts on localhost:8080
  3. Set up Firebase (Auth + FCM only)

    • Create a Firebase project at console.firebase.google.com
    • Add Android app with package must.kdroiders.hustlehub
    • Download google-services.json โ†’ place in app/
    • Enable Authentication (Email/Password + Google Sign-In)
    • Enable Cloud Messaging (auto-enabled)
    • โŒ Do NOT enable Firestore, Realtime Database, or Storage
  4. Configure API keys

    cp keys.properties.template keys.properties

    Edit keys.properties:

     MAPS_API_KEY=AIzaSy...your_maps_key
     BASE_URL=http://10.0.2.2:8080/api/v1/
     WS_BASE_URL=ws://10.0.2.2:8080/ws
     GEMINI_API_KEY=AIzaSy...your_gemini_key
     GOOGLE_WEB_CLIENT_ID=your_google_web_client_id_here
  5. Build and run

    ./gradlew installDebug

See SETUP.md for full setup instructions.


๐Ÿ“ฑ Screenshots

Login Home / Discovery Chat Profile
Home Chat Profile

Screenshots coming soon as development progresses


๐Ÿค Contributing

  1. Fork the repo and create a feature branch: git checkout -b feature/amazing-feature
  2. Follow Kotlin coding conventions
  3. Run quality checks before committing:
    ./gradlew ktlintCheck detekt test
  4. Use Conventional Commits: feat(chat): add typing indicators
  5. Open a Pull Request against develop

See CONTRIBUTING.md for full guidelines.


๐Ÿ“… Roadmap

โœ… Phase 1: MVP (Months 1โ€“3) โ€” In Progress

  • Authentication & profile setup
  • Design system + shared composables
  • Service creation & discovery feed
  • AI-powered search
  • Real-time messaging (WebSocket)
  • Campus map with provider pins
  • Ratings & reviews
  • Beta launch (500 users)

๐Ÿšง Phase 2: Growth (Months 4โ€“6)

  • In-app voice/video calls
  • M-Pesa payment integration
  • Gamification (Hustle Score, badges, leaderboards)
  • Provider analytics dashboard

๐Ÿ”ฎ Phase 3: Scale (Months 7โ€“12)

  • Multi-campus support
  • Service swap / barter matching
  • Emergency request broadcasts
  • Web admin panel

๐Ÿงช Testing

# Unit tests
./gradlew test

# Instrumented tests (requires emulator/device + backend running)
./gradlew connectedAndroidTest

# Code quality
./gradlew ktlintCheck detekt

Test coverage targets: 70%+ for domain and data layers, critical UI flows covered.


๐Ÿ“„ Documentation

Document Description
PRD.md Full product requirements
ARCHITECTURE.md Codebase structure and patterns
API.md Spring Boot REST + WebSocket API reference
SETUP.md Development environment setup
TROUBLESHOOTING.md Common issues and solutions
CHANGELOG.md Version history
CONTRIBUTING.md Contribution guidelines

๐Ÿ”’ Privacy & Security

  • Student verification: Only @must.ac.ke emails allowed
  • Token security: All API calls use short-lived Firebase ID tokens (auto-refreshed)
  • No phone number sharing: In-app messaging only
  • User safety: Block/report features, content moderation, in-app safety tips
  • Privacy Policy: View Policy

๐Ÿ‘ฅ Team & Contributors

Built and maintained with โค๏ธ by the Android Community MUST engineering team at Meru University of Science & Technology:

  • Korir Aldo โ€” @korryrdev โ€” Lead Android Engineer & Backend Architect
  • Vertigo โ€” @vertigo0628 โ€” Android Developer
  • Botmaster Kenya โ€” @Botmasterkenya โ€” Android Developer
  • Nancy โ€” @NancyN00 โ€” Android & KMP Developer

๐Ÿ“œ License

Proprietary & Confidential License โ€” see LICENSE for details.


๐Ÿ™ Acknowledgments


Built with โค๏ธ by campus hustlers, for campus hustlers

โฌ† Back to Top

About

Hustlehub is a campus-focused peer-to-peer marketplace that connects verified students offering services with fellow students through secure in-app discovery, messaging, and reputation features. Built with Kotlin, Jetpack Compose, and Firebase.

Topics

Resources

Contributing

Security policy

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages