← All projects

Complete, in staging

Construction marketplace

Homeowners who need work done and construction companies looking for clients have no single place to meet, negotiate and reach a contract.

Role
Built almost entirely by me
Period
2025 → 2026
Status
Complete, live in staging on the client’s server, with Stripe in test mode.
Stack
Laravel 12
Livewire 4 + Volt
Flux
Cashier + Stripe
Reverb
Leaflet
Pest 4
Forge

A complete marketplace, from the listing to the final review, with a back office and a mobile version.

Listings and offers

  • Listings created through a guided wizard.
  • Search by distance in kilometres, with a map and clustered listings.
  • Offers with counter-proposals and private attachments.
  • Contracts that switch to In progress on their own and, once closed, unlock reviews.

Subscriptions

  • 3 free listings, then a Stripe subscription.

Communication and management

  • Chat and tickets, real-time notifications.
  • A full back office and statistics for companies.
  • A mobile version built from 101 prototype screens.

Payments that hold up when Stripe doesn’t answer

I made payments resilient: if the Stripe API can’t be reached, the site keeps working.

A secret key in public JavaScript

I found that a secret key was ending up in the JavaScript downloaded by browsers. I removed it and regenerated both keys before it could turn into an incident.

Home page from 1.88 seconds to 265 milliseconds

The home page was slow because its components carried heavy data in their state. I slimmed them down and load time dropped from 1.88 s to 265 ms.

No broken links

An automated check visited 196 pages and 304 links: zero broken.

265 ms home page load, down from 1.88 s
411 automated tests
153 commits of mine
196 pages checked, zero broken links
0 vulnerabilities in dependencies
101 screens in the mobile version