尚未收集仓库信息。
尚未检测到更新。GitHub 发布版本后会显示在这里。
制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗A direct carer–client marketplace: verified, self-employed carers, families who choose them, and simulated escrow payments. Built with Next.js 16, Supabase and Tailwind, the same stack as MatchKits.
One web app with three areas:
/client, /carers): search, carer profiles, messaging, booking, confirming visits, disputes, reviews./carer): onboarding, documents, requests, check-in and check-out, earnings. Designed for phones first./admin): verification queue, disputes, safeguarding, payment ledger, users, audit log.Payments are simulated (PRD 8.6). Bookings move through the real states (pending, held, then released, refunded or partially refunded), with fees, cancellations, the 48-hour auto-release and dispute outcomes all calculated in the database. A "Test mode" banner is shown wherever money appears. Identity checks and the DBS Update Service check are also simulated: an admin approves the DBS document, which records the check.
eu-west-2).pg_cron, and run the schema again. It then runs auto-release and no-shows every 10 minutes. Without it, the same rules run whenever a dashboard loads.http://localhost:3000, then your Vercel URL). Add <site>/auth/callback under Redirect URLs for each site.https://<project-ref>.supabase.co/auth/v1/callback./welcome..env.example to .env.local and fill in your values from Project Settings, then API.npm install
npm run dev
update public.profiles set role = 'admin' where id = (select id from auth.users where email = '[email protected]');
The location box suggests UK towns, cities and postcodes using postcodes.io (free, open data, no key), plus a bundled list of major places in src/lib/major-places.ts for instant prefix matches. Carers save a location and how far they'll travel. Clients see carers who travel to them, nearest first (carers_near in the schema). Distances are rounded to the half mile. A carer's postcode and coordinates are only readable by that carer and by admins, through carer_private(). If postcodes.io is unreachable, typed text is still accepted and looked up when the form is submitted.
All booking, payment, cancellation and dispute logic is in Postgres functions in supabase/schema.sql, so the web app can't bypass it. Writes go through those functions. Row Level Security plus column grants stop users from editing their own role, approval status or payment fields.
The fee percentages and time windows are in the settings table (PRD section 16 open decisions):
update public.settings set client_fee_bps = 500, carer_commission_bps = 1000, auto_release_hours = 48;
BookingForm shows a 5% fee estimate. Update CLIENT_FEE in src/components/BookingForm.tsx if you change client_fee_bps.
settle_booking function is the one place to swap in)