Skip to content

Repository files navigation

Doora

Doora is a local-services marketplace concept: think "Uber for tradespeople." Customers say what they need — an electrician, a plumber, a generator technician, a hairdresser — and see verified, rated workers nearby, message them, agree on a job, and pay/rate once it's done. Workers get a public profile, a stream of nearby job requests, and a shopfront they don't have to build themselves.

This repo is a Next.js (App Router + TypeScript) implementation of that product, ported over from an original set of static HTML/design-comp mockups (landing page, auth flow, customer dashboard, worker dashboard). It's a fully interactive front end — every flow below actually works in the browser — but it currently has no backend: it's meant as a working prototype/demo you can deploy and click through today, with a clear seam (lib/auth.ts) for wiring up a real API and database later.

Who it's for

  • Customers — post what they need, browse/filter workers by category, request a job, message the worker, track status (Pending → Accepted → In progress → Completed), and leave a review.
  • Workers — sign up, pick service categories, set a location/radius, submit ID + portfolio for verification, then manage incoming requests, their public profile, portfolio, earnings, and reviews.

Pages

  • / — marketing landing page (hero, how-it-works, service categories, trust & safety, worker pitch, testimonials)
  • /auth — sign in / sign up (role toggle: customer or worker), forgot password, and the 3-step worker onboarding (skills → location → ID/ portfolio verification)
  • /dashboard/customer — home, find a worker, my requests (with a request detail + messaging view), messages, reviews, settings
  • /dashboard/worker — home, requests (new/active/history tabs), my profile (with a live preview card), portfolio, earnings, reviews, settings

Tech stack

  • Next.js 16 (App Router) + TypeScript, deployed as static-friendly pages — no server runtime required to view the app
  • Styling ported directly from the original design's CSS custom properties (see app/globals.css) via a small sx() helper (lib/sx.ts) that turns inline CSS-text strings into React style objects, so the original visual design carried over faithfully
  • Light/dark theme, fully responsive (desktop sidebar nav collapses to a mobile drawer)

Auth model (current, temporary)

No backend yet. Accounts are created and verified entirely in the browser: passwords are hashed (SHA-256 + a per-account random salt, via the Web Crypto API) and stored in localStorage alongside the account — never in plain text, and nothing is sent to a server. See lib/auth.ts for the full sign-up/sign-in/session API; swapping it for real API calls later shouldn't require touching the UI much, since every page already goes through this one module.

Jobs, messages, reviews, and earnings are seeded with realistic sample data and are fully interactive (accept/decline a job, step through status, message back and forth, leave a review) but only the account itself persists across page reloads — the rest lives in React state for the current session.

Getting started

npm install
npm run dev

Open http://localhost:3000.

Deploying

See DEPLOY.md for step-by-step Vercel + Cloudflare (doora.live) setup.

About

Uber for tradespeople.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages