Skip to main content
Technical Case Study
Flagship Project

ChatBoq

Enterprise real-time chat inbox with multi-platform filtering, virtualized message lists, infinite scroll, debounced search, normalized responses, and full Stripe subscription billing.

ReactNext.jsTypeScriptZustandReduxReact QueryTailwind CSSStripeWebSockets
The Problem & Context

What challenges was this built to solve?

Customer support teams managing thousands of concurrent conversations across web, mobile, and social channels experienced sluggish browser performance, erratic scroll positions upon incoming socket messages, memory leaks from unbounded DOM nodes, and decoupled billing states.

Architecture & What I Built

Technical Architecture

Engineered a high-throughput chat inbox using React, Next.js, and TypeScript. Implemented DOM virtualization and windowed message lists to sustain 60fps scrolling under heavy volume. Designed a synchronized state pipeline uniting Zustand for immediate client feedback with React Query for normalized API caching and real-time WebSocket state reconciliation. Built full Stripe billing UI with tiered subscriptions and checkout.

latency

<100ms socket sync

fps

60 FPS virtualization

threads

10k+ messages per inbox

benchmark

TODO: Verified customer conversion lift

Hard Technical Challenges

Engineering Bottlenecks Overcome

1. Virtualized Scroll Stability: Preventing jarring jumps and maintaining precise scroll anchoring as older paginated messages prepended while live incoming messages appended simultaneously. 2. State Synchronization: Coordinating optimistic client updates via Zustand with React Query server-state revalidation and real-time push events without race conditions. 3. Security & Access: Implementing robust IP banning and rate-limiting at the gateway while safeguarding Stripe webhooks with cryptographic signature verification.
Key Architectural Decisions

Why These Technologies?

Zustand + React Query vs Redux

Zustand manages ephemeral, client-only UI states (such as active modals, audio nodes, and draft filters) with minimal boilerplate. React Query handles all asynchronous remote cache invalidation and server reconciliation.

Next.js App Router & Server Components

Kept heavy database and serialization logic on the server to minimize client bundle payloads. Client components are strictly restricted to interactive boundaries (audio players, filters, form inputs).

Strict Zod Schemas

Shared type contracts between client form validation and backend route handlers eliminate duplicate logic and guarantee typed safety across runtime boundaries.

Virtualized DOM Lists

Windowing renders only what is visible within the viewport, ensuring continuous 60fps scrolling even when threads reach 10,000+ messages.

Outcomes & Results

Impact & Verification

Achieved sub-100ms real-time delivery latency, eliminated DOM memory bloat with stable 60fps scrolling across 10,000+ message threads, and delivered a friction-free Stripe checkout workflow. [TODO: Production conversion lift and NPS metrics to be benchmarked].