marketplace · real time
¡Chamba Ya!
An on-demand marketplace for skilled trades: the client posts a job, nearby workers bid on it, and everything is coordinated over real-time chat.
Built · academic project, not commercial
Context
Hiring a tradesperson plumbing, carpentry, gardening still happens by word of mouth, with no clarity on price, timing or trust. The idea was to move that hiring into an on-demand flow: request a service, receive proposals from people nearby, and follow it in real time.
What I built
A cross-platform client-server system web and mobile from a single codebase with four roles (client, worker, support and administrator) and the full cycle:
- Geolocated requests. The client posts a job with trade, description, budget and location; nearby workers see it by coordinates.
- Proposals that turn into jobs. The worker proposes and, once accepted, a job is created with its own lifecycle (pending, in progress, completed, cancelled).
- Real-time chat between client, worker and support, with attachments.
- Verifiable records. Workers upload documents and associate trades in order to be verified.
- Support and disputes. Reports, resolutions and penalties, with web panels for administration and support.
- Access via email/password and Google OAuth, with role-based JWT.
Technical decisions
- A FastAPI backend as a modular monolith organized by domain auth, requests, proposals, jobs, communications, records, support with SQLAlchemy 2 and Alembic on MySQL.
- Event-oriented real time: separate WebSocket channels for chat, support, notifications and requests by trade, each authorized by role.
- A single Expo / React Native + TypeScript client serving mobile and web/PWA, with a centralized Axios instance and interceptors that inject the JWT.
- Docker Compose to bring up MySQL and the backend locally.
Result
A broad, working foundation: registration and roles, requests, proposals, jobs, chat, records, support and administration, on an app that runs on mobile and web from the same code. It demonstrates full-range command: real-time backend, geolocated data and a cross-platform app.
It is an academic project, not commercial. The next stage outside the current scope would be real payment processing, security hardening and production readiness.