Admoon Dashboard

Overview

Operating high-density advertising portals creates intense front-end bottlenecks: streaming real-time telemetry alongside dense financial records leads to frame drops, complex multi-step checkout funnels risk state loss on page reloads, and uncoordinated API schema changes trigger runtime null pointer exceptions.

Engineered a scalable multi-tenant architecture with Next.js App Router and Feature-Sliced Design. Decoupled compute-heavy analytical charts via React concurrent transitions, virtualized dense transaction grids to render only visible DOM nodes, built a persistent multi-wallet state machine, and automated end-to-end API type generation.

Interaction to Next Paint
INP < 180ms
Grid Virtualization
60 FPS (2,000+ Rows)
Contract Safety
100% Type-Safe Contracts
Admoon Dashboard
ENGINEERING CHALLENGES

Technical Bottlenecks & Architectural Constraints

Operating high-density advertising portals creates intense front-end bottlenecks: streaming real-time telemetry alongside dense financial records leads to frame drops, complex multi-step checkout funnels risk state loss on page reloads, and uncoordinated API schema changes trigger runtime null pointer exceptions.

Core Implementation Hurdles & Engineering Solutions:

Sub-180ms INP Tuning across Analytical Dashboards

Concurrent ECharts re-rendering alongside live AG-Grid data updates blocked the browser main thread, driving Interaction to Next Paint (INP) above 320ms during rapid user filtering.

↳ Decoupled UI state from chart rendering by wrapping analytical mutations in React startTransition and debouncing filter change dispatches by 150ms.

Real-Time Split-Currency Balance Validation & Input Masking

Splitting ad recharge payments across multiple currency balances (USD, AED, TRY, IRR) required dynamic cross-rate conversion, wallet ceiling checks, and formatted numeric inputs without cursor jumping during rapid typing.

↳ Developed custom currency input masking hooks with debounced exchange rate conversions and client-side Zod validation rules that verify the aggregate split sums match the required total before enabling checkout submission.

Optimistic State Updates for 25-Permission Matrix

Toggling complex agency permissions panel-by-panel suffered from network roundtrip lag, leading to checkbox state flicker and race conditions during rapid bulk edits.

↳ Implemented optimistic Redux state mutations with automatic rollback caches, queuing batched PATCH requests with exponential retry backoff.

PERFORMANCE BUDGETS

Front-End Performance Budgets & Quality Gates

01< 180ms

Interaction to Next Paint (INP)

Target Budget: < 200ms

Measured via Chrome DevTools Performance panel under 4x CPU throttling during continuous table filtering. Offloaded chart re-renders and table filtering to React startTransition, keeping UI interactions instant.

0260 FPS (0 Frame Drops)

Data Table Virtualization

Target Budget: 60 FPS Sustained

Measured via Chrome DevTools Rendering HUD (Frame Rendering Stats) while rapidly scrolling 2,000+ financial records. Recycled off-screen DOM nodes via AG-Grid row virtualization, rendering only 18 active DOM rows regardless of dataset size.

03Zero Runtime Drift

API Contract Synchronization

Target Budget: 100% Type-Safe

Validated via automated Orval OpenAPI client generation and strict TypeScript `tsc --noEmit` build verification. Payload boundaries are strictly validated at runtime with Zod schemas.

PROJECT SCREENS & INTERFACES

Interface & Architecture Showcase

Admin Command Center & High-Density Analytics

High-density executive dashboard rendering real-time campaign health, revenue velocity, and active account distribution. Built with reactive ECharts wrapped in memoized sub-trees, consuming server state via TanStack Query with automated cache invalidation.

Admin Command Center & High-Density Analytics

Operational Order Queue & Status Triage

Real-time order triage interface designed for rapid operator dispatch. Built with AG-Grid Enterprise utilizing custom cell status renderers, debounced server-side query filters, and modal triggers without triggering layout shifts.

Operational Order Queue & Status Triage

Google Ads Telemetry & Campaign Health Cockpit

Client-facing monitoring dashboard transforming raw Google Ads API streams into legible metric cards. Engineered with CSS Grid auto-fill layouts, SVG progress rings, and custom data-normalization hooks.

Google Ads Telemetry & Campaign Health Cockpit

Service Package Selection & Dynamic Fee Engine

Interactive pricing engine with real-time fee breakdown. Constructed using stateful React cards computing live sum totals with zero layout shift before dispatching to the checkout slice.

Service Package Selection & Dynamic Fee Engine

Multi-Currency Wallet & Multi-Step Checkout Funnel

5-step checkout state machine supporting multi-currency wallet payments across USD, AED, TRY, and IRR balances. Engineered with React Hook Form, Zod discriminated union validation, and Redux Persist session storage.

Multi-Currency Combination Checkout

Multi-Currency Combination Checkout

Full multi-currency combination payment deducting from USD, AED, and TRY wallets simultaneously.

Granular Role-Based Access Control (RBAC) Matrix

Security governance interface regulating view and edit permissions across 25 features for agency roles. Implemented as a controlled matrix table with optimistic updates, batch mutation hooks, and Next.js route-guard middleware.

Role Definition Panel (Account, Campaign, Finance, CEO)

Role Definition Panel (Account, Campaign, Finance, CEO)

Establishes agency roles across the multi-team organization with segregated access boundaries.

CORE MODULES

Front-End Implementations & Core Highlights

01Front-End Module

High-Density Virtualized Data Tables (AG-Grid Enterprise)

Recycled off-screen DOM nodes to render 2,000+ real-time financial transaction records at 60 FPS without layout shift or memory leaks.

  • ▸Maintained steady 60 FPS frame rates by rendering only 18 active DOM rows regardless of dataset scale
  • ▸Server-driven multi-column sorting and debounced status filtering with zero main-thread blocking
  • ▸Custom cell renderers for payment badges and operational triage action triggers
02Front-End Module

Audited Multi-Currency Checkout State Machine

A finite state machine coordinating multi-step checkout with split-currency balances (USD, AED, TRY, IRR) and persistent session recovery.

  • ▸Redux Persist integration preserving checkout step progression across unexpected page refreshes
  • ▸Zod discriminated union schemas validating multi-wallet split calculations against live exchange rates
  • ▸Eliminated 85% of redundant re-renders by migrating from Formik to uncontrolled React Hook Form inputs
03Front-End Module

Optimistic RBAC Security Matrix & Route Guards

Interactive security administration interface governing 25 granular feature permissions across administrative agency roles.

  • ▸Instant UI feedback via optimistic Redux store updates backed by automatic rollback caches
  • ▸Batched PATCH request queueing with exponential retry backoff to eliminate race conditions
  • ▸Next.js middleware route-guard enforcement preventing unauthorized route access before hydration
04Front-End Module

Automated Type-Safe API Contract Pipeline

Automated end-to-end type generation synchronizing backend OpenAPI schemas directly into strongly typed React Query hooks.

  • ▸Orval client generation eliminating contract drift between microservices and frontend code
  • ▸Zero runtime null pointer exceptions across all campaign telemetry payloads
  • ▸Strict TypeScript compile-time verification enforced across all API endpoints
ARCHITECTURAL DECISIONS & TRADE-OFFS

Technical Trade-offs & Engineering Decisions

Every architectural choice balances runtime performance, team velocity, and production scale. Here is how core frontend decisions were evaluated against realistic alternatives.

Decision 01Architecture

State Architecture: Redux Toolkit + Persist vs Zustand

✓ Chosen Approach

Redux Toolkit with Custom Serialization Middleware & Redux Persist

✕ Alternative Evaluated

Zustand with manual LocalStorage sync hooks

Engineering Rationale

The multi-currency checkout engine operates as an audited finite state machine with strict multi-step rollback and cross-tab session recovery. RTK slices enforced strict action serialization (rejecting non-serializable BigInt/Date instances) and integrated cleanly into NX monorepo feature boundaries. Zustand was retained for lightweight, transient drawer and modal states.

Decision 02Architecture

Data Grid: AG-Grid Enterprise vs TanStack Table

✓ Chosen Approach

AG-Grid Enterprise with DOM Row Virtualization & Server Pagination

✕ Alternative Evaluated

Headless TanStack Table (React Table v8)

Engineering Rationale

While TanStack Table offers complete CSS control, managing DOM node recycling, pinned summary columns, server-driven multi-column sorting, and real-time cell flash updates across 2,000+ financial records caused severe DOM bloat with custom virtualizers. AG-Grid provided native compositor-thread row virtualization out of the box with zero memory leaks during rapid pagination.

Decision 03Architecture

Form Architecture: React Hook Form + Zod vs Formik + Yup

✓ Chosen Approach

React Hook Form with Zod Discriminated Union Schemas

✕ Alternative Evaluated

Formik with Yup schema validation

Engineering Rationale

The 5-step checkout funnel contains conditional sub-forms depending on whether the user pays via a single wallet or splits between multiple currencies. Formik re-rendered the entire component tree on every keystroke, causing noticeable typing latency. RHF's uncontrolled input architecture reduced component re-renders by 85%, while Zod enabled strict TypeScript type inference matching backend API contracts.

SOLUTION & ARCHITECTURE

The Engineering Solution

Engineered a scalable multi-tenant architecture with Next.js App Router and Feature-Sliced Design. Decoupled compute-heavy analytical charts via React concurrent transitions, virtualized dense transaction grids to render only visible DOM nodes, built a persistent multi-wallet state machine, and automated end-to-end API type generation.

API & Networking

Axios Instance with JWT Auth Interceptors, Silent Refresh Queuing & Orval OpenAPI Codegen

State Architecture

Redux Toolkit (Audited Checkout State Machine), Redux Persist (Session Recovery), React Query (Server State Cache)

High-Density Data Grids

AG-Grid Enterprise (DOM Row Virtualization, Server-Side Pagination, Column Pinning)

Real-Time Visual Analytics

ECharts & Chart.js (React Transitions, Responsive Canvas Viewports, Sub-Tree Memoization)

Form & Validation Engine

React Hook Form (Uncontrolled Subscriptions), Zod Runtime Schema Validation

RESULTS & IMPACT

Results & Takeaways

01

Separating transient UI state (Zustand/local state) from transactional checkout state (Redux Toolkit) prevents cross-module state pollution in monorepos.

02

Applying React startTransition to heavy visualization repaints is essential for keeping Interaction to Next Paint (INP) under 180ms on data-dense dashboards.

03

Automating API clients from OpenAPI specs with Orval completely eliminates contract drift between backend microservices and frontend React components.