Shoofli
Services marketplace connecting clients with local technicians

About
Context, problem & solution
Shoofli is a services marketplace that connects people who need a job done with the technicians who can do it — built as a role-aware single-page application where each type of user gets an experience tailored to what they're there to do.
Context and problem. A marketplace only works when both sides of it are served well. A client wants to describe a need and reach the right technician quickly; a technician wants to surface their services and respond to requests; and someone has to keep the platform healthy. Bundling all of that into one generic interface serves no one. The challenge was to model three genuinely different roles — client, technician, and admin — inside a single coherent app.
Solution. Shoofli is a React + TypeScript SPA with Tailwind CSS, structured around role-based views: the same application renders different navigation, permissions, and actions depending on who's signed in. Clients create and browse publications and reach technicians through in-app contact; technicians manage their offerings and respond; publication owners receive notifications when someone engages with their post; and an admin panel gives moderators oversight of the content on the platform.
Engineering focus. The interesting work here is on the frontend: cleanly separating what each role can see and do while keeping a single shared codebase and component library. TypeScript keeps the role and data models explicit, which makes the permission boundaries easier to reason about and less error-prone as the app grows.
Architecture
How the system is built
Tech stack
Technologies used
Frontend
Roles & access
Features
Want to know more about Shoofli?
The complete source code is available on GitHub, along with the history and deployment configuration.