WorkCustomer Support System – Multi-Channel Helpdesk Platform8 min

SaaS & Customer Support · Active Production · Proprietary

Customer Support System – Multi-Channel Helpdesk Platform

Full-Stack Software Engineer (Solo Core Contributor)2026 — Present

PHPBladeQuasarKnockout.jsIMAPMySQL

Architected a multi-tenant customer support platform delivering sub-second triage across 4 agent workbenches and 3 ingestion channels by designing a dual-database engine (MongoDB + MySQL), automated IMAP synchronization, and a Laravel BFF.

Customer Support System – Multi-Channel Helpdesk Platform interface
Role
Full-Stack Software Engineer (Solo Core Contributor)
Timeline
2026 — Present
Class
Proprietary

Overview

Architected and delivered an enterprise-grade multi-channel helpdesk and customer support platform across 4 primary agent workbenches (Triage Inbox, Stream Queues, Form Builder, Email Templates) [X], supporting 3 automated inbound ingestion channels (agent manual entry, bidirectional IMAP email sync, and public embeddable web forms) [Y] backed by a 30+ endpoint RESTful BFF, asynchronous queue workers, and a dual-database architecture combining MongoDB flexible documents with MySQL relational RBAC [Z].

Decisions

Organizations previously managed customer requests through fragmented email inboxes and ad-hoc spreadsheets, causing delayed response times, lost tickets, and no visibility into team workload. Support teams needed a centralized multi-tenant platform with triage queues, assignee routing, threaded customer conversations with private internal notes, automated email ingestion, and custom web forms—without forcing external customers to create platform accounts.

Challenge

Flexible Ticket Schema vs. Strict Relational Configuration

Decision

Adopted a dual-database architecture: stored highly variable ticket payloads, custom fields, and conversation threads in MongoDB, while keeping tenant configurations, mailbox credentials, queues, and permissions in relational MySQL.

Outcome

Achieved ultra-fast ticket reads and schema flexibility for custom customer attributes while preserving strict relational integrity for system administration.

Challenge

Unified Conversation Threading with Public Replies vs. Private Internal Notes

Decision

Engineered a dual-lane messaging system allowing support agents to toggle between customer-facing email replies and private internal team notes within the same chronological thread.

Outcome

Streamlined agent collaboration and eliminated accidental exposure of internal discussion to end customers.

Challenge

Reliable Bidirectional Email Ingestion Without Direct Provider Webhooks

Decision

Implemented an asynchronous IMAP polling pipeline on dedicated background worker queues with automatic message deduplication and email thread matching via In-Reply-To, References, and ticket hash identifiers.

Outcome

Incoming customer emails automatically convert into tickets or append to existing threads reliably without blocking web API requests.

Challenge

Lightweight Public Web Forms Without Heavy Frontend App Overhead

Decision

Rendered visitor-facing forms as lightweight server-rendered HTML pages with client-side validation and anti-spam protection (reCAPTCHA, rate limits, honeypots), while keeping the full-featured drag-and-drop form builder in the agent SPA.

Outcome

Instant load times for external customers and embeddable iframe compatibility across third-party websites without loading heavy SPA bundles.

Challenge

Frontend State Management Across Complex Multi-Tab Workbenches

Decision

Designed a modular composable architecture with scoped services and clean memory lifecycle resets on tenant switches, avoiding global state bloat.

Outcome

Fast, responsive split-pane navigation with zero state leakage across organizational tenants.

Challenge

Spam Prevention & Data Quality on Public Submissions

Decision

Introduced configurable double opt-in email verification, automated acknowledgement triggers, honeypot fields, and IP rate limiting on public form endpoints.

Outcome

Drastically reduced spam submissions and prevented bogus ticket creation in agent triage queues.

Before → after

Multi-Tenant SaaS Enterprises, Support Team Leads & Customer Success Desks

Before

Lost Inquiries in Scattered Gmail Inboxes

Customer emails were spread across unmonitored aliases and personal inboxes, causing delayed responses, duplicate replies, and zero visibility into team backlog.

After

Unified Multi-Channel Agent Workbench

Centralized Vue 3/Quasar desktop triage inbox aggregating automated IMAP email streams, custom public web forms, and manual ticket creation in one split-pane workspace.

Before

Accidental Leaks of Internal Discussions to Customers

Support agents collaborating with engineers frequently replied on customer email threads, accidentally exposing internal technical deliberations.

After

Dual-Lane Public Replies vs. Private Internal Notes

Engineered strict message channel isolation within the same thread—yellow-tinted private notes remain internal, while public replies trigger sanitized SMTP emails.

Before

Spam Overload & Heavy Client Overhead on Web Forms

External contact forms were flooded with bot submissions and suffered slow load times from embedding heavy frontend SPA bundles.

After

Lightweight Server-Rendered Forms with Anti-Spam

Visitor-facing forms load instantly as server-rendered HTML with double opt-in email verification, honeypots, rate limiting, and reCAPTCHA protection.

Before

Rigid SQL Schemas Breaking Custom Customer Fields

Every enterprise client required different custom fields (order IDs, priority tags, device models) that caused frequent schema migrations.

After

Dual-Database Architecture (MongoDB + MySQL)

Flexible MongoDB ticket documents handle unlimited arbitrary custom payloads, while MySQL preserves strict relational integrity for auth, queues, and mailboxes.

Stack

FrontendQuasar Framework (v2)Blade TemplatesKnockout.jsVue 3TypeScriptVue Router 4Modular Composable ArchitectureVite Build System

BackendLaravel 11+ (BFF Architecture)Laravel Sanctum & Tenant Isolation MiddlewareAsynchronous Queues & Background WorkersIMAP / SMTP Email Ingestion EngineServer-Rendered Visitor Forms (Blade & JavaScript)

DatabaseMongoDB (Flexible Ticket Documents & Custom Schemas)MySQL (Relational Streams, Mailboxes, RBAC & Form Schemas)

DevOpsDocker Compose Local EnvironmentCron Scheduler & Multi-Worker Queue RunnersModular Monorepo Architecture

Security

  • Stateless token authentication (Sanctum) combined with tenant isolation middleware verifying membership and permissions on every API call.
  • Encrypted at-rest storage for external mailbox credentials; secrets are never exposed in API responses.
  • Multi-layered anti-spam defenses for public forms: cryptographic submission tokens, Google reCAPTCHA, and IP rate limits.
  • Immutable server-side audit trails for incoming customer emails and outbound notifications.
  • Isolated background worker queues separating high-throughput email polling from immediate notification delivery.

Roadmap

  • Direct webhook ingestion engine for major email providers (SendGrid, Postmark, AWS SES) alongside IMAP.
  • Embeddable customer live-chat widget connected to real-time agent presence.
  • Automated SLA tracking and ticket escalation workflows.
  • AI-assisted auto-categorization and smart draft response suggestions.

Executive Summary

Service Desk is a high-throughput, multi-tenant customer support and helpdesk platform. Built full-stack, it provides a modern Vue 3 / Quasar SPA workbench for customer support teams and a scalable Laravel Backend-for-Frontend (BFF) handling automated email synchronization, queue workers, and public web form ingestion.

Support agents work inside a desktop SPA featuring a Gmail-style triage inbox with split-pane ticket inspection, advanced multi-attribute filtering (queues, tags, assignees, search), file attachments, and a dual-lane messaging interface offering Public Customer Replies alongside Private Internal Team Notes. Administrators manage support queues (stream assignment, routing rules, team permissions), inbox mailboxes (IMAP/SMTP connection wizard, health checks, manual sync), public web forms (visual drag-and-drop form builder, custom theme styling, reCAPTCHA anti-spam), and templated automated emails (auto-acknowledgements, ticket confirmation links).

External customers never need an account. They submit inquiries seamlessly via email (automated background IMAP parsing into structured tickets) or public web forms (lightweight server-rendered visitor pages with double opt-in verification). Inquiries persist with rich custom metadata in MongoDB, while core relational configurations, user roles, and mailbox credentials reside in MySQL.


Architecture

System Topology & Ingestion Pipeline

flowchart TB
    subgraph Customers["External Customers (Zero Account Overhead)"]
        EmailIn["Inbound Support Email"]
        WebForm["Public Embeddable Web Form"]
    end

    subgraph FrontendSPA["Agent Desktop SPA (Vue 3 / Quasar / TypeScript)"]
        Nav["Navigation & Route Guards"]
        Views["Agent Workbenches: Triage Inbox · Queues · Form Builder · Templates"]
        State["Modular State Composables & Service Client"]
        ThreadUI["Dual-Lane Message Thread (Customer Reply vs Internal Note)"]
    end

    subgraph BackendAPI["Backend-for-Frontend (Laravel REST API Host)"]
        BFF["REST API Gateway (/api/v1/support/*)"]
        VisitorRoutes["Lightweight Public Visitor Form Host"]
        AuthMW["Authentication & Tenant Isolation Middleware"]
        DomainServices["Domain Services: Ticket Manager · Ingestion · Form Engine · Mailer"]
        EventListeners["Event Listeners & Outbound SMTP Dispatcher"]
    end

    subgraph Workers["Background Asynchronous Workers"]
        Scheduler["Cron Task Scheduler"]
        PollWorker["Dedicated IMAP Polling Queue Worker"]
        MailWorker["Transactional Email Delivery Queue Worker"]
    end

    subgraph Persistence["Dual Database Layer"]
        Mongo[("MongoDB<br/>Rich Support Ticket Documents & Custom Fields")]
        MySQL[("MySQL<br/>Queues, Mailbox Auth, Forms, Templates & Audit Logs")]
        ExtMail["External IMAP Mail Servers"]
        SMTP["Outbound SMTP Gateways"]
    end

    EmailIn --> ExtMail
    WebForm --> VisitorRoutes

    Views --> State
    State --> ThreadUI
    Nav --> Views

    State --> AuthMW --> BFF
    BFF --> DomainServices
    VisitorRoutes --> DomainServices
    DomainServices --> Mongo
    DomainServices --> MySQL

    Scheduler --> PollWorker
    BFF -->|"Manual Sync Trigger"| PollWorker
    PollWorker --> ExtMail
    PollWorker --> DomainServices

    EventListeners --> MailWorker
    MailWorker --> SMTP
    EmailIn -.->|"Threaded Inbox View"| Customers
    MailWorker -.->|"Automated Notification"| Customers

Technical Architecture Breakdown

Frontend Engineering (Vue 3 / Quasar SPA)

Functional Area Engineering Implementation
Routing & Navigation 11 authenticated routes under /service-desk/* with strict permission guards
State Management Scoped modular composables with automatic tenant cache reset on workspace switch
API Client Layer Structured REST service layer communicating with dedicated /api/v1/support endpoints
RBAC Security Granular action-based access control checking user roles before rendering sensitive actions
Triage Inbox High-performance split-pane inbox with dynamic sorting, filtering, and load-more pagination
Stream Management Multi-tab queue administration for routing rules, notification preferences, and team assignments
Visual Form Builder Drag-and-drop custom field builder with live preview, routing config, and embed code generator

Backend Engineering (Laravel BFF & Background Pipeline)

Functional Area Engineering Implementation
API Gateway RESTful /api/v1/support endpoints serving dedicated agent queries and mutations
Ticket Persistence Document-based persistence in MongoDB enabling flexible schemas, arbitrary tags, and nested custom fields
Email Ingestion Engine Asynchronous IMAP sync with RFC-compliant threading (In-Reply-To, References, hash detection)
Public Form Ingress Double opt-in verification service with cryptographic token validation, honeypots, and rate limiters
Outbound Email Pipeline Event-driven queued transactional mailers sending branded customer updates and auto-acknowledgements
Granular RBAC Backend authorization gates enforcing support.view, create, edit, assign, delete, and config
Public Form Runtime Ultra-lightweight server-rendered HTML forms designed for high-speed iframe embeds

Channel → Ticket Ingestion Lifecycle

Ingestion Channel Ingress Mechanism Ticket Channel Tag Agent Workflow
Manual Creation POST /support/tickets manual Agent creates ticket directly during phone or in-person support
Email Ingestion Asynchronous IMAP Polling Job email Automated parsing into ticket thread with customer reply lanes
Public Web Form Web Form API with optional email verification form Verified submissions convert into tickets with custom field tables

Visual Workflows & Production Interfaces

1. Split-Pane Agent Inbox & Threaded Detail View

Service Desk Agent Inbox Split View [desktop]

2. Multi-Channel Ticket Queue & Filter View

Service Desk All Tickets Queue [desktop]

3. Public Web Form Field Builder

Service Desk Form Builder Questions [desktop]

4. Public Form Routing & Mailbox Settings

Service Desk Form Builder Settings [desktop]

5. Multi-Channel Email Template & Auto-Ack Editor

Service Desk Email Template Editor [desktop]


Full-Stack Ownership Map

Architecture Layer Core Responsibilities Key Technologies
Frontend UI & Workbenches Inbox triage, queue administration, form builder, email template editor Vue 3, Quasar Framework, TypeScript
Frontend State & Services Modular state composables, HTTP client services, RBAC UI gates Vue Composables, Axios REST Client
Backend REST API Request validation, resource serialization, tenant isolation middleware Laravel 11, Laravel Sanctum
Domain Services Ticket lifecycle management, IMAP parser, email thread matcher, form builder PHP 8.3 Services, MongoDB ODM
Asynchronous Workers Scheduled mailbox polling, email dispatching, deduplication pipelines Laravel Queues, Redis / MySQL Queue
Public Visitor Surface High-performance embeddable forms, anti-spam filters, double opt-in confirmation Server-rendered HTML, JavaScript, reCAPTCHA

Case closed

More work.