Bongbetic
HomeAboutExperienceProjectsContact
Marketing x Training x Product
Back to projects

Reporter

A dashboard helper that turns Excel sheets into useful visual readouts and correlates data between worksheets.

Analytics
Excel
Dashboards

Problem

Teams spent too much time manually cross-checking worksheets before sharing performance updates.

Outcome

Reporter reduced repetitive analysis by creating clean dashboard views with sheet-to-sheet correlation.

Technical Spec Sheet

Reporter engineering blueprint

Platform

Cross-platform desktop analytics workbench (Electron)

Architecture

  • Electron main process hosts secured IPC handlers for AI, dashboard serialization, settings, and Google Sheets import.
  • Preload bridge exposes controlled APIs to renderer for file and AI operations.
  • Renderer app (React + TypeScript + Zustand) manages datasets, widgets, relationships, and dashboard state.
  • Shared type contracts (`src/types/shared.ts`) align main/renderer message formats.

Stack

  • Electron 39 + electron-vite + TypeScript
  • React 19 + Zustand + Radix UI + Tailwind
  • Recharts + react-grid-layout for dashboard composition
  • DuckDB + xlsx + PapaParse for data ingestion/manipulation
  • OpenAI / Anthropic / Gemini / Ollama provider support

Core Modules

  • `src/main/ipc/ai.ts`: provider routing, key testing, structured widget suggestions, tool-call filtering by autonomy level
  • `src/main/ipc/sheets.ts`: Google Sheets URL parse + tab discovery + CSV fetch with redirect/private-sheet handling
  • `src/renderer/src/store/useAppStore.ts`: multi-dataset state, calculated columns, relationships, widget schema
  • `src/renderer/src/lib/*`: aggregation, joins, formula evaluation, trendline, formatting/export utilities

Data Flow

  • CSV/XLSX/Sheets input parsed into normalized dataset metadata.
  • User composes widgets mapped to dataset columns, relationships, and optional temporal/join transforms.
  • Dashboard engine computes chart-ready datasets and table outputs in renderer state.
  • AI assistant can propose/operate widgets through constrained tool blocks and store-aware context sharing.

Integrations

  • OpenAI, Anthropic, Gemini, Ollama inference providers
  • Google Sheets public-share import path
  • Multi-format export pipeline (HTML, PPTX, image, workbook workflows)

Packaging and Delivery

  • electron-builder targets: Windows installer, macOS dmg, Linux AppImage
  • Separate dev/build pipelines (`electron-vite dev`, `build:win|mac|linux`)
  • Settings + dashboard spec persistence for offline-first usage

Quality and Reliability Measures

  • Vitest unit coverage across aggregation, joins, formulas, trendline, and AI tooling helpers
  • Strict typed store/actions for widget schema evolution
  • Main-process boundary for network-sensitive operations

Built with Next.js, Tailwind, and shadcn/ui.