Cookie Preferences
We use cookies to keep the site running and improve your experience.
Learn more in our privacy policy .
Home About Portfolio Blog Contact
7

Rahlatek — SaaS for car rental operations and WhatsApp notifications

Rahlatek
Year

2024

Status

In Progress

Tech Stack
Laravel Redis Stripe Filament Livewire Tailwind CSS PHP stancl/tenancy WhatsApp Cloud API MySQL Chargebee Soulbscription

Gallery

Car rental businesses run on coordination. Bookings come in, drivers need assignment, vehicles need tracking, customers need confirmations and payment links, and the office needs to know what happened and when.

Most internal tools handle the CRUD side well enough. The part that breaks down is communication. A driver who didn't know about a pickup because the message went out late. A customer who never got their invoice. An office manager checking three apps to figure out whether a payment came through. In a rental operation, these aren't edge cases. They're Tuesday.

Rahlatek was built around that problem. It's a multi-tenant SaaS platform for car rental businesses where WhatsApp notifications are part of the system architecture, not a feature bolted on after launch.


Core capabilities

Each business on Rahlatek gets its own tenant environment with a structured onboarding flow. Company setup, WhatsApp Business connection, subscription activation, then access to the operational dashboard. That keeps onboarding cleaner for non-technical teams and cuts the manual configuration needed before the system becomes usable.

Inside the tenant, the platform covers the operational side of a car rental business:

  • Booking and rental management with driver assignment

  • Shipping workflow tracking (pickup, in-transit, delivered)

  • Payment handling with Stripe, including invoice generation and payment links

  • Vehicle fleet management with inspection and registration reminders

  • Role-based driver actions scoped to operational responsibility

These flows are connected. A rental can trigger a customer message, a shipping task can notify both admin and driver, a completed payment can send an invoice link without staff doing it manually.

The WhatsApp layer is where the project gets distinctive. Notifications are organized by audience (admin, driver, customer) and by business domain (bookings, rentals, shipping, payments, vehicle operations). The business can enable or disable specific notification types from the dashboard, control reminder timings, sync approved templates from Meta, and manage the WhatsApp account connection from inside the product. No external dashboards involved.

The product roadmap includes custom notification builders, tenant-defined template rules, and dashboard-based real-time WhatsApp chat.


Architecture

Multi-tenancy with database isolation

Each business runs in its own tenant database. The tenancy layer handles database creation, migrations, and bootstrapping through a job pipeline when a new tenant signs up. Domain resolution is cached in Redis to keep tenant routing fast in production.

This was a deliberate choice. Car rental businesses deal with sensitive customer data, driver records, vehicle documents, and payment information. Full database isolation means there's no application-level filter standing between one company's data and another's. The boundary is structural.

When a tenant is created, the system triggers a preparation pipeline: database setup, permission seeding, default settings, and notification template configuration. A new business gets a working environment without manual setup.

WhatsApp notification architecture

The notification system has the most moving parts. It spans three audience layers and five business domains, which means 30+ dedicated handler classes. Each handler is responsible for its own template payload, recipient resolution, and message parameters.

The flow works like this: when a business event occurs, the system resolves the correct handler, checks whether that notification type is enabled in tenant settings, verifies the WhatsApp template exists and is approved by Meta, sends the message via the WhatsApp Cloud API, and records that the notification was sent to prevent duplicates.

Rental operations generate different message types at different points:

  • A new booking triggers immediate notifications to admin and customer

  • A shipping task notifies the assigned driver

  • A rent approaching its end date fires a scheduled reminder

  • A completed payment sends an invoice download link

Different handlers, different templates, different delivery rules for each.

The system separates event-driven notifications from scheduled ones. Booking, rental, and shipping events fire through queued listeners for immediate delivery. Reminders run on scheduled commands every two minutes for time-sensitive operations, and daily at staggered times for vehicle inspections and registration expiry alerts. That separation keeps the logic clean and the scheduling predictable.

WhatsApp Embedded Signup

Setting up WhatsApp Business API access is usually manual and error-prone — token generation, webhook subscription, phone number registration, all done across multiple dashboards.

Rahlatek handles this through WhatsApp Embedded Signup as part of the tenant onboarding flow. The business connects their WhatsApp account through a guided setup screen, the system exchanges the authorization code for an access token, subscribes the account to webhooks, fetches phone number details, and stores the configuration inside tenant-level settings. The entire process runs within the product.

Subscription and payment architecture

Two payment systems serve two different purposes. Chargebee with Soulbscription manages the SaaS subscription layer — plan tiers, billing cycles, checkout, and billing portal flows. Subscription status gates access to the tenant dashboard, and a daily sync command keeps subscription data current.

Stripe handles the other side: tenant-facing payment processing. When a car rental business needs to collect payment from its customers, Stripe processes that transaction. Payment links, invoice generation, and payment confirmations all flow through the tenant's Stripe connection. This separation keeps SaaS billing completely independent from operational payment processing.


Admin experience

Operations dashboard

The Filament-based dashboard is built around daily operational work. Bookings, rentals, shipping tasks, vehicles, drivers, and customers each have their own resource with full CRUD, filtering, and relation management. Operational actions like creating payment records, assigning drivers, and triggering notifications happen inline through Filament actions, not through separate workflows.

WhatsApp control panel

From the settings area, a business can manage their WhatsApp connection, review template sync status, and control which notifications are active. Templates synced from Meta are tracked by approval status (approved, pending, rejected) inside the dashboard. Notification settings are grouped by audience, and reminder-based notifications support configurable timing.

Roles and permissions

Access control uses Filament Shield with tenant-scoped roles and permissions. A driver's dashboard access is limited to bookings, shipping, vehicles, and inspections. Office managers see the full operational picture, while owners control settings, billing, and team access.

That matters when field drivers and back-office staff share the same system.


Performance

Notification-heavy systems break when everything runs in the request cycle. Rahlatek pushes all WhatsApp delivery through queued jobs and listeners. The scheduler runs reminder commands every two minutes for bookings, rentals, and shipping. Vehicle inspection reminders fire at 09:00, registration expiry at 09:15, driver inspection reminders at 09:30. Staggered intentionally to avoid burst loads on the WhatsApp API.

Tenant creation runs through a queued job pipeline. Chargebee subscription data syncs daily at midnight. Demo tenant data refreshes twice daily. Background processing is part of the expected production setup, not an optimization added later.


My role

I designed and built the full system architecture and the Laravel implementation behind it. That includes the multi-tenant structure, onboarding flow, subscription layer, Stripe payment integration for tenants, Filament dashboard, role and permission model, WhatsApp integration, template synchronization flow, notification architecture with 30+ handlers, reminder commands, and the business logic connecting bookings, rentals, shipping, payments, and vehicle operations.

This project matters in my portfolio because the SaaS product was shaped around a real operational bottleneck. Most internal business systems break down around communication and process coordination, not around the CRUD screens. Rahlatek addresses that directly by making WhatsApp part of the system architecture.

Chat on WhatsApp