{"id":31733682,"url":"https://github.com/omar-mazen/herafi","last_synced_at":"2026-05-05T14:03:50.936Z","repository":{"id":317022547,"uuid":"799837269","full_name":"omar-mazen/herafi","owner":"omar-mazen","description":"A full-stack platform that connects clients with skilled craftsmen to post, manage, and complete service jobs. Clients can post offers and review proposals; craftsmen can showcase work and find jobs.","archived":false,"fork":false,"pushed_at":"2025-08-04T01:01:36.000Z","size":11490,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-09T08:53:44.362Z","etag":null,"topics":["pusher","react-router","reactjs","reactrouter","tailwindcss"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/omar-mazen.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-05-13T07:42:24.000Z","updated_at":"2025-08-04T01:01:39.000Z","dependencies_parsed_at":"2025-09-28T10:29:26.755Z","dependency_job_id":"a8a57729-d753-4760-845e-462ced0e2b4e","html_url":"https://github.com/omar-mazen/herafi","commit_stats":null,"previous_names":["omar-mazen/herafi"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/omar-mazen/herafi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omar-mazen%2Fherafi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omar-mazen%2Fherafi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omar-mazen%2Fherafi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omar-mazen%2Fherafi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/omar-mazen","download_url":"https://codeload.github.com/omar-mazen/herafi/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omar-mazen%2Fherafi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32652492,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-05T11:29:49.557Z","status":"ssl_error","status_checked_at":"2026-05-05T11:29:48.587Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["pusher","react-router","reactjs","reactrouter","tailwindcss"],"created_at":"2025-10-09T08:53:35.942Z","updated_at":"2026-05-05T14:03:50.920Z","avatar_url":"https://github.com/omar-mazen.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Hirafi (حِرَفي) — Platform for Clients \u0026 Craftsmen\n\n\u003e **⚠️Note:** This project is **not currently hosted online**, as the backend was developed using **Laravel** and temporarily hosted with **nGrok**.\n\u003e To understand how it works, check the **walkthrough video** below.\n\n\n\n### Walkthrough Video\n\n[👉 Watch the full walkthrough of the platform here](https://vimeo.com/1106946518)\n\n\n##  Project Overview\n\n**Hirafi** is a full-stack web application that bridges the gap between clients and skilled craftsmen. In today’s digital world, finding reliable household services can be time-consuming and frustrating. This platform streamlines the process by offering a robust interface for both sides to connect, collaborate, and manage tasks efficiently.\n\nCraftsmen can showcase their portfolio, receive job offers, and maintain their reputation, while clients can easily find, review, and hire craftsmen based on skills, location, and ratings.\n\n\n\n##  Features\n\n### Authentication\n\n* Sign up and login with role selection (Client or Craftsman)\n* Forgot password recovery\n* Social login (Google \u0026 Facebook)\n\n\u003cp align=\"left\"\u003e\n\u003cimg src=\"./screenshots/login/Screenshot_11-6-2024_11154_localhost.jpeg\" width=\"500\"/\u003e\n\u003cimg src=\"./screenshots/sign up/1- choose sign up as client or handyman.jpeg\" width=\"500\"/\u003e\n\u003cimg src=\"./screenshots/sign up/2-fill form of signup.jpeg\" width=\"500\"/\u003e\n\n\u003c/p\u003e\n\n### Handymen Complete Data After Signup\n\n\u003cp align=\"left\"\u003e\n  \u003cimg src=\"./screenshots/craftsman/data complete wizard/1.jpeg\" width=\"500\"/\u003e\n  \u003cimg src=\"./screenshots/craftsman/data complete wizard/2.jpeg\" width=\"500\"/\u003e\n  \u003cimg src=\"./screenshots/craftsman/data complete wizard/3-add phone number or whatsapp number.jpeg\" width=\"500\"/\u003e\n  \u003cimg src=\"./screenshots/craftsman/data complete wizard/4.jpeg\" width=\"500\"/\u003e\n\u003c/p\u003e\n\n###  Client Pages\n\n1. **Add Job Offer (Multi-Step Form)**\n\n   * Step 1: Enter title, description, select skill category, and upload images\n   * Step 2: Choose start date or a date range\n   * Step 3: Add address and expected budget\n   * Step 4: Review and confirm submission\n  \u003cp align=\"left\"\u003e\n  \u003cimg src=\"./screenshots/client/2-add job offer/1.jpeg\" width=\"500\"/\u003e\n  \u003cimg src=\"./screenshots/client/2-add job offer/2.jpeg\" width=\"500\"/\u003e\n  \u003cimg src=\"./screenshots/client/2-add job offer/3.jpeg\" width=\"500\"/\u003e\n  \u003cimg src=\"./screenshots/client/2-add job offer/4.jpeg\" width=\"500\"/\u003e\n\u003c/p\u003e\n\n2. **My Job Offers**\n\n   * View offers submitted by the client that are still awaiting a craftsman assignment\n  \u003cp align=\"left\"\u003e\n  \u003cimg src=\"./screenshots/client/3-job offers/Screenshot_18-6-2024_5232_localhost.jpeg\" width=\"500\"/\u003e\n\u003c/p\u003e\n\n3. **Job Offer Detail**\n\n   * View job details and see proposals from craftsmen\n   * Accept one of the proposals to assign the task\n  \u003cp align=\"left\"\u003e\n  \u003cimg src=\"./screenshots/client/4-job offer/1.jpeg\" width=\"500\"/\u003e\n  \u003cimg src=\"./screenshots/client/4-job offer/2.jpeg\" width=\"500\"/\u003e\n\u003c/p\u003e\n\n4. **Active Jobs**\n\n   * Jobs currently in progress with assigned craftsmen\n  \u003cp align=\"left\"\u003e\n  \u003cimg src=\"./screenshots/client/5-active jobs/Screenshot_18-6-2024_51036_localhost.jpeg\" width=\"500\"/\u003e\n\u003c/p\u003e\n\n5. **Active Job Detail**\n\n   * Full job details\n   * Button to “End Job” which opens a modal for submitting craftsman review\n  \u003cp align=\"left\"\u003e\n  \u003cimg src=\"./screenshots/client/6-active job/1.jpeg\" width=\"500\"/\u003e\n  \u003cimg src=\"./screenshots/client/6-active job/2- العميل بينهي الشغلانه ويكتب تقييمه للصنايعي.jpeg\" width=\"500\"/\u003e\n\u003c/p\u003e\n\n6. **Favorites**\n\n   * Create and manage favorite lists of craftsmen for easy access later\n  \u003cp align=\"left\"\u003e\n  \u003cimg src=\"./screenshots/client/7-favorites/1-create favorite list.jpeg\" width=\"500\"/\u003e\n  \u003cimg src=\"./screenshots/client/7-favorites/2-add to favorite List.jpeg\" width=\"500\"/\u003e\n  \u003cimg src=\"./screenshots/client/7-favorites/3-favorite List.jpeg\" width=\"500\"/\u003e\n  \u003cimg src=\"./screenshots/client/7-favorites/4-all favorite lists.jpeg\" width=\"500\"/\u003e\n\u003c/p\u003e\n\n7. **Search Craftsmen**\n\n   * Search by craft type\n   * Sort by: Join date, rating, completed jobs\n   * Filter by: Years of experience, rating, or city\n\n  \u003cp align=\"left\"\u003e\n  \u003cimg src=\"./screenshots/client/search/Screenshot_18-6-2024_81815_localhost.jpeg\" width=\"500\"/\u003e\n\u003c/p\u003e\n\n### Craftsman Pages\n\n1. **New Jobs**\n\n   * See job listings that match their skill and city\n  \u003cp align=\"left\"\u003e\n  \u003cimg src=\"./screenshots/craftsman/new jobs/1.jpeg\" width=\"500\"/\u003e\n  \u003cimg src=\"./screenshots/craftsman/new jobs/2.jpeg\" width=\"500\"/\u003e\n\u003c/p\u003e\n\n2. **New Job Details**\n\n   * View full job description\n   * Submit offer via modal window\n  \u003cp align=\"left\"\u003e\n  \u003cimg src=\"./screenshots/craftsman/new job/1.jpeg\" width=\"500\"/\u003e\n  \u003cimg src=\"./screenshots/craftsman/new job/2-الصنايعي بيقدم عرض للعميل علي الشغلانه اللي العميل عارضها علي الموقع.jpeg\" width=\"500\"/\u003e\n\u003c/p\u003e\n\n3. **Pending Jobs**\n\n   * Jobs they have applied to, but not yet accepted\n  \u003cp align=\"left\"\u003e\n  \u003cimg src=\"./screenshots/craftsman/pending jobs/Screenshot_12-6-2024_33755_localhost.jpeg\" width=\"500\"/\u003e\n\u003c/p\u003e\n\n4. **Pending Job Details**\n\n   * View submitted offer and status\n  \u003cp align=\"left\"\u003e\n  \u003cimg src=\"./screenshots/craftsman/pending job/مهمه معلقه يعني الصنايعي قدم عليها علشان يشتغلها ولسه العميل مقبلش الطلب بتاعه او اي طلب من اي صنايعي اخر.jpg\" width=\"500\"/\u003e\n\u003c/p\u003e\n\n5. **Active Jobs**\n\n   * Jobs currently in progress\n\u003cp align=\"left\"\u003e\n  \u003cimg src=\"./screenshots/craftsman/active jobs/1.jpeg\" width=\"500\"/\u003e\n\u003c/p\u003e\n\n6. **Active Job Detail**\n\n   * Full job info\n   * Button to “End Job” opens modal to rate the client\n\u003cp align=\"left\"\u003e\n  \u003cimg src=\"./screenshots/craftsman/active job/Screenshot_12-6-2024_51833_localhost.jpg\" width=\"500\"/\u003e\n  \u003cimg src=\"./screenshots/craftsman/active job/2-انهاء المهمه من قبل الحرفي و يكتب تقييمه وينتظر ان ينهي العميل ايضا المهمه و يكتب تقييمه لكي تنتقل الي المهمام المنهيه.jpg\" width=\"500\"/\u003e\n\u003c/p\u003e\n\n7. **Craftsman Portfolio**\n\n   * Displays:\n\n     * Work locations\n     * Completed jobs count\n     * Active jobs\n     * Contact info\n     * Featured photos (shown in search)\n     * Portfolio gallery of previous projects\n     * Client feedback from past jobs\n\n  \u003cp align=\"left\"\u003e\n  \u003cimg src=\"./screenshots/craftsman/portfolio/1.jpeg\" width=\"500\"/\u003e\n  \u003cimg src=\"./screenshots/craftsman/portfolio/2.jpeg\" width=\"500\"/\u003e\n  \u003cimg src=\"./screenshots/craftsman/portfolio/3.jpeg\" width=\"500\"/\u003e\n  \u003cimg src=\"./screenshots/craftsman/portfolio/4.jpeg\" width=\"500\"/\u003e\n  \u003cimg src=\"./screenshots/craftsman/portfolio/5.jpeg\" width=\"500\"/\u003e\n  \u003cimg src=\"./screenshots/craftsman/portfolio/6.jpeg\" width=\"500\"/\u003e\n\u003c/p\u003e\n\n## Problem Addressed\n\n### For Clients:\n\n* Hard to find trusted, skilled craftsmen\n* Unclear quality and pricing\n* Poor communication and job misalignment\n\n### For Craftsmen:\n\n* Inconsistent visibility and job flow\n* No centralized place to display their work\n* Struggles with pricing and negotiation\n* Lack of transparent client feedback\n\n\n\n##  Project Objectives\n\n* Bridge the gap between clients and craftsmen\n* Build trust through reviews, ratings, and portfolios\n* Empower craftsmen to promote their skills and services\n* Create more stable job opportunities for skilled workers\n* Offer clients reliable, filtered access to local professionals\n\n\n\n## Tech Stack\n\n### Frontend\n\n* **React** + **Vite**\n* **TailwindCSS** for styling\n* **React Router DOM** for routing\n* **Framer Motion** for animations\n* **React Hook Form** for forms\n* **React Query** for data caching and async state\n* **Recharts** for data visualizations\n\n### Authentication \u0026 Social Login\n\n* Google OAuth (`@react-oauth/google`)\n* Facebook login (`@greatsumini/react-facebook-login`)\n\n### Utilities\n\n* Axios (API calls)\n* JWT Decode\n* Date-fns (date handling)\n* Pusher.js (realtime interactions)\n* React Toastify\n\n### Dev Tools\n\n* ESLint \u0026 Prettier (code formatting and linting)\n* PostCSS \u0026 Tailwind Prettier plugin\n\n\n\u003e ⚠️ Backend is not included — it was built using **Laravel** and hosted locally via **nGrok** for testing purposes.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fomar-mazen%2Fherafi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fomar-mazen%2Fherafi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fomar-mazen%2Fherafi/lists"}