Skip to main content
Mohamed Amine MIDENI
All projects

Shoofli

Services marketplace connecting clients with local technicians

ReactTypeScriptTailwind CSSSingle-page app (SPA)Client
Shoofli

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

architecture.diagram
Users
Client
Posts needsContacts technicians
Technician
Offers servicesResponds to clients
Admin
Moderates contentAdmin panel
Application
React SPA
Routing & stateRole-based views
Interactions
Publications
Create & browse
Contact & alerts
In-app contactOwner notifications
Three distinct roles: client, technician, adminReact + TypeScript single-page appPublications / service listingsIn-app contact between clients and techniciansNotifications for publication ownersAdmin panel for moderation

Tech stack

Technologies used

Frontend

ReactTypeScriptTailwind CSSSingle-page app (SPA)

Roles & access

ClientTechnicianAdminRole-based views

Features

Publications / listingsIn-app contactNotificationsAdmin panel

Want to know more about Shoofli?

The complete source code is available on GitHub, along with the history and deployment configuration.