SRSam Robinson
Back to Blog
Building Racker: A Multi-Tenant CRM Application
June 30, 2025
8 min read
Sam Robinson

Building Racker: A Multi-Tenant CRM Application

How I built Racker, a Laravel + React multi-tenant CRM with role management, ticketing, contact and calendar systems, real-time notifications, and analytics for resolution times.

Web DevelopmentLaravelReactCRMMulti-TenancyTicketingSocketiWeb DevelopmentAnalyticsSocketi

Building Racker: A Multi-Tenant CRM Application

One of my biggest projects so far has been Racker, a CRM application I designed and developed using Laravel and React. The goal was to build a system that could handle multiple tenants, give me a management layer as the product owner, and provide businesses with all the tools they need to manage their operations efficiently.


Multi-tenancy and management control

At the core of Racker is a multi-tenant architecture. Each business operates in its own isolated tenant space, while I, as the product owner, have a management panel to create, manage, and oversee tenants.

  • Tenant Creation: Spin up new tenants with dedicated configurations
  • Navigation Builder: Custom menus for each tenant so they can shape the UI to their needs
  • Roles & Permissions: Fine-grained access control across tenants

This means each customer gets a tailored experience without losing the efficiency of a shared platform.


Support ticketing system with email integration

I wanted to make Racker more than just a contact manager, so I built in a support ticketing system.

  • SMTP & IMAP Integration: The app can both send and receive emails, automatically scanning mailboxes for incoming support requests
  • Ticket Dashboard: Centralised management of tickets with statuses, assignees, and SLA tracking
  • Email-to-Ticket Conversion: Customer emails automatically become tickets, keeping everything in one workflow

Contact management system

Every CRM needs robust contact management, and Racker delivers this with:

  • Customer Profiles: Store names, companies, numbers, and key details
  • Linked Records: Connect contacts with tickets, calendar events, and notes
  • Search & Filters: Quickly find the right person across tenants

Calendar and scheduling system

Keeping track of activities is just as important as managing contacts, so I included a calendar system.

  • Events & Appointments: Log customer meetings, calls, and internal reminders
  • Team View: Shared visibility across a tenant's team
  • Integration Ready: Designed with external calendar sync in mind

Resolution time analytics

To measure performance, I added a dedicated analytics module for ticket resolution times.

  • Average Resolution Time: Track how quickly issues are being resolved
  • Trend Analysis: Spot improvements or bottlenecks over time
  • Tenant-Level Reporting: Each business gets their own analytics view

Employee profiles with a social twist

To give teams more personality inside Racker, I built employee profiles styled like a social media feed.

  • Profile Pages: Show roles, tickets handled, posts, and updates
  • Activity Feeds: Updates and milestones logged like social posts
  • Team Presence: Encourages collaboration and visibility

Real-time notifications with Socketi

I wanted notifications to feel instant, so I integrated a Socketi-powered notification system.

  • Real-Time Alerts: Tickets, mentions, assignments, and calendar updates appear instantly
  • Tenant-Specific: Notifications respect tenant boundaries
  • Scalable Infrastructure: Designed for high concurrency

The stack

  • Backend: Laravel for multi-tenancy, queues, mail handling, and API
  • Frontend: React for dashboards, ticketing UIs, and calendar interactions
  • Email Integration: SMTP/IMAP for two-way email communication
  • Notifications: Socketi for real-time push updates
  • Database: Isolated tenant databases for data integrity and security

Final thoughts

Racker has been one of my most ambitious builds, combining multi-tenancy, ticketing, contact management, calendars, analytics, and real-time features into one cohesive CRM platform.

The idea was simple: give businesses an all-in-one system that can adapt to their workflows, while giving me as the product owner a clear management layer to onboard and support multiple tenants at scale.

It's a project I'm really proud of, and it continues to evolve with new features as I refine how tenants and teams use the platform.