An in-house booking and contract system

Clients book their own intake call and accept contracts digitally. Built in Laravel, without third-party plugins, trackers or subscriptions.

Client
MDJI Services (in-house product)
Type
Web application
Technology
Laravel, PHP, SQLite, JavaScript
Year
2026
The first step of the booking wizard: a choice of services, with One-page website ticked
5 steps
from choosing a service to a confirmed booking
0
third-party scripts or trackers on the site
70+
automated tests that run on every change

The goal

Two things had to improve. Scheduling an intake call by email quickly takes several messages back and forth. And a quote that gets an "agreed" by email is hard to verify afterwards: which version was accepted exactly, and by whom?

The solution had to live inside the website itself, in the same visual style, without an external scheduling platform or signing service with a monthly subscription.

Booking appointments

  • A five-step wizard: service, type of call, date, time and details. From the homepage you can start straight away with a service.
  • Only genuinely free slots can be picked, based on working hours, at least 24 hours ahead and days blocked in the dashboard.
  • The database allows only one confirmed appointment per time slot, even when two people book at the same moment.
  • The confirmation includes a calendar invite. Cancelling takes two steps, so an email scanner that opens links never cancels anything by accident.

Accepting contracts digitally

  • When sent, a contract version is frozen and recorded with a SHA-256 hash. Any later change always creates a new version.
  • The client opens a personal link and accepts with a verification code. Name, role, time and the hash of the version are recorded.
  • Every version gets a PDF, and a log tracks when the contract was sent, viewed and accepted.
  • After delivery, a review request and a maintenance offer follow automatically.

The admin side

Everything comes together in one overview: today's and upcoming appointments, new questions, website check requests and a funnel that shows where visitors drop off. That measuring happens without cookies and without data that could identify a visitor.

Try it yourself

This system runs on this website. When you book an intake call, you are using it.

The admin overview with key figures, today's appointments and the coming fourteen days
The admin overview. The names and details in this screenshot are sample data.

Something like this for your business?

In a free thirty-minute intake call we discuss what you need and what it costs.

Book an intake call
Book a call