KH
Open navigation menu
Back to work
Abstract radar field connecting media signals, report progress, filters, and analytics

Media analytics · Long-running reports

Adam Radar

A social and media monitoring product with analytics dashboards, content exploration, and custom report generation.

Role

Frontend engineer across the analytics experience, custom reports, authentication, notifications, and resilient application states.

Scope

KPI, sentiment, time-series, keyword, and word-cloud analytics · Custom report creation, progress tracking, cancellation, and completed results · URL/date state, infinite pagination, notifications, and query-cache coordination · Filter-aware backend CSV export

Team

Built at Misraj Technologies

Challenge

Turning complexity into legible state.

Challenge

Custom reports are long-running backend jobs. The interface needed to stay accurate across submission, five-second polling, partial states, cancellation, notifications, pagination, filters, and completed exports.

Approach

I modeled the workflow as explicit UI states, coordinated React Query cache invalidation with URL-backed filters, polled only while a report was active, and kept export and filtering unavailable until the report was complete.

Outcome

Users could start, monitor, cancel, revisit, and explore report jobs without guessing what the system was doing, while large result sets remained navigable through infinite pagination and server-generated exports.

Selected contributions

  1. 01Built main and custom dashboards with multiple charting libraries and responsive loading, empty, and error states.
  2. 02Implemented report progress through polling—not WebSockets or server-sent events.
  3. 03Connected Firebase Cloud Messaging notifications with report completion behavior.
  4. 04Kept date and filter context shareable through the URL.

Stack

ReactTypeScriptMUIReact QueryAxiosApexChartsRechartsVisxFirebaseReact Hook Form

Repository snapshot

210 of 245 commits in the inspected repository history were attributed to my identified Git identities.

Continue exploring