Provider Exchange
Provider Exchange is an early Laravel prototype for a provider-centered field service network and work-order exchange.
The code is intended to be open source under the MIT License.
Project record keeping lives in:
CHANGELOG.mdfor shipped changes, verification notes, and unusual commit/history notes.docs/ROADMAP.mdfor the current build direction and deferred features.- Git for rollback and branch history.
The .old backup convention is not used for routine Laravel edits in this project. Use Git for normal recovery. Create a local .old copy only before risky manual rewrites, legacy file replacement, or generated artifact recovery where a second local copy is useful before editing, then move that snapshot to an external archive safe outside the repo after the matching Git history is committed and pushed.
The product goal is not to clone Field Nation. The first version focuses on:
- provider and buyer profiles;
- community posts;
- buyer job posts;
- provider quotes;
- work-order assignment and status tracking;
- mutual reviews;
- peer-review dispute records;
- external profile/rating snapshots from Field Nation, WorkMarket, and similar platforms.
Guardrails
- The platform does not hold money in v1.
- The platform does not set or recommend market rates.
- Providers control their own rate cards and terms.
- Buyers control their own posted offer terms.
- Payment remains direct between buyer and provider unless a compliant payment partner is added later.
- Reputation is mutual: providers review buyers and buyers review providers.
- Dispute records are reputational/peer-review records, not legal adjudication.
Local Setup
composer install
npm install
cp .env.example .env
php artisan key:generate
touch database/database.sqlite
php artisan migrate:fresh --seed
php artisan storage:link
npm run build
php artisan serve --host=0.0.0.0 --port=8123
Server Install
See docs/INSTALL.md for the first-pass Ubuntu/Nginx installer and update script.
Demo Accounts
All seeded demo accounts use password password.
admin@example.comprovider@example.combuyer@example.comhybrid@example.com
Test Commands
php artisan test
npm run build
Current Roadmap Status
See docs/ROADMAP.md for the durable roadmap. The short status below is a convenience snapshot.
- Foundation: Laravel app, auth, roles, seeded demo users.
- Profiles: provider and buyer profiles.
- Social layer: community feed posts.
- Job posts: buyer job-post creation and listing.
- Quote flow: provider quotes and buyer acceptance.
- Work orders: assignment, role-aware status transitions, deliverables, messages, evidence files, completion notes.
- Reviews: mutual buyer/provider reviews with category metrics.
- Disputes: peer-review dispute records with comments, evidence files, and structured votes.
- API prep: Sanctum installed with starter API routes and authenticated work-order/dispute feeds.
- Hardening: tests, seed data, setup docs, database notifications, admin overview, and no-payment/no-rate-setting guardrails.
Implemented Hardening Pass
- Polymorphic attachments for provider profiles, buyer profiles, feed posts, jobs, work orders, disputes, and imported external profiles.
- Polymorphic comments for feed posts, jobs, and disputes.
- Work-order messages between buyer and provider.
- Quote revision history and quote decline flow.
- Role-aware work-order transition rules.
- Category review metrics for communication, scope accuracy, payment reliability, workmanship, and timeliness.
- Dispute peer votes with provider/buyer/split/insufficient-evidence recommendations.
- Database notifications for quote, work-order, review, and dispute events.
- Admin overview page for users, jobs, work orders, disputes, and attachment counts.
External Profile Imports
Provider profiles support manual external snapshots. For Field Nation, the first version records:
- platform name;
- external provider ID;
- profile URL if available;
- rating;
- review count;
- completed jobs;
- notes or copied review summaries.
Public search did not expose a Field Nation profile for provider ID 172-630, so any automated Field Nation import should be treated as a later authenticated/export-assisted workflow rather than a public scrape assumption.