Skip to content
Client project · Yacht trade · SaaS marketplace

YachtBrokerBid – SaaS platform for yacht brokerage

I am Maurice de Felice, a freelance web developer in Augsburg, Germany. I built YachtBrokerBid end to end with Laravel, React, TypeScript and PostgreSQL: a SaaS auction platform where yacht owners list their yacht and vetted brokers bid with sealed offers for the mandate. The platform is live, and the client confirms that the tight schedule was beaten.

Client
YachtBrokerBid
Role
Full-stack developer (Laravel & React)
Period
2026
Screenshot of the YachtBrokerBid home page – auction platform for yacht brokerage

Starting point

The client wanted to turn yacht sales around: owners list their yacht, vetted brokers apply with sealed offers for the mandate. There was no software for this yet – and the schedule was tight.

Goal

A public platform where owners list yachts and vetted brokers bid with sealed offers – with secure payments, separate roles and several languages, live within the agreed 20 weeks.

Solution

Full stack in Laravel and React: data model, auction logic with deadlines and offer slots, a credit system based on double-entry bookkeeping, Stripe Hosted Checkout with server-side checks, roles for owners, brokers and admins, and translations without deployments.

YachtBrokerBid turns the usual way of selling a yacht around: instead of looking for a broker, the owner lists the yacht and vetted brokers apply with sealed offers for the mandate. I built the platform as a full-stack application – from the data model and the auction and billing logic to the payment integration. At its core is a credit balance that brokers use to pay for their offers and that must handle partial refunds: every booking runs in a database transaction and stays traceable through a complete history. An admin area lets the client approve brokers, manage users and correct credits without a developer, and automatic notifications keep owners and brokers informed about deadlines.

What I did

  • System architecture and data model for yachts, auctions, offers and billing
  • Auction logic including deadlines, offer slots and automatic notifications
  • A transaction-safe credit system with a complete booking history and partial refunds
  • Stripe Checkout integration with server-side verification and automatic reconciliation of open payments
  • Role-based authentication for owners, brokers and administrators, including email and phone verification
  • Multiple languages through a translation workflow that updates copy without a new release
  • Admin area for approvals, user management and credit corrections

Challenges & how they were solved

Brokers pay for their offers with credits, and some options are refunded if the offer is not selected. A wrong balance would be immediately visible to users and hard to explain.

The balance follows the principle of double-entry bookkeeping: every movement is its own ledger line with amount and resulting balance; the displayed balance is only a cache. All bookings run in a database transaction with a row lock, so double charges and negative balances are impossible even under parallel requests, and every movement remains traceable.

A webhook infrastructure with signature checks, retry logic and event storage would have been too much effort and too fragile in operation for the size of the project.

Payments run through Stripe Hosted Checkout with a redirect: after payment the server verifies the session directly with Stripe before credits are added. A regular reconciliation catches payments where the user closed the browser before being redirected. The result is a much smaller operational surface with the same reliability.

The platform is multilingual. Non-developers should be able to maintain translations without a new release for every text change.

Language files are maintained through a translation interface and live outside the deployment artefact. Frontend and backend read the same source at runtime – new copy goes live without a developer and without a deployment.

Technologies

  • Laravel
  • React
  • TypeScript
  • PostgreSQL
  • Stripe
  • SaaS

Results in numbers

until launch
12 weeks
earlier than agreed (20 weeks)
8 weeks
user roles: owner, broker, admin
3

Live and public at yachtbrokerbid.com – live after 12 weeks, 20 had been agreed. Oliver Haunschild, the client, confirms in his recommendation that the tight schedule was beaten; the full testimonial (in German) is below.

What the client says

„Ich kann die Zusammenarbeit mit Maurice zu 100 % empfehlen. Unkompliziert vom ersten Tag an, den von uns eng gesetzten Zeitplan sogar noch unterschritten und ein Top-Ergebnis. Auch so ein umfangreiches Projekt wie YachtBrokerBid hat er absolut professionell umgesetzt und steht einer großen Agentur in nichts nach. Ganz im Gegenteil: Die Reaktionszeiten und die persönliche Betreuung gehen nicht besser. Ich kann nur sagen – vielen Dank für die tolle Zusammenarbeit.“
Oliver Haunschildclient, YachtBrokerBidSource: LinkedIn, original in German

Free initial call, usually a reply within 24 hours, fixed-price offer after the call.

Last updated:

Contact

Tell me what you need

Tell me what you are planning – a new website, a web app or changes to an existing one. I usually reply within 24 hours with a first assessment and a suggested time for a free initial call; after that you receive a fixed-price offer. I am based in Germany and work in English or German.

Send a message

What should be built, by when, and is there an existing website? Plus a quick note on how you found me.

I only use your details to answer your enquiry – you can request information or deletion at any time. Details in the privacy policy (German).