Skip to content

minkinad/pulseboard

Repository files navigation

Pulseboard Dashboard

Next.js React TypeScript Tailwind CSS Chart.js Zustand

Interactive analytics dashboard built with Next.js App Router, TypeScript, Tailwind CSS, Zustand, Chart.js, dnd-kit, and Framer Motion.

Features

  • Responsive dashboard shell with sidebar, sticky header, and adaptive widget grid
  • Draggable widgets powered by @dnd-kit
  • Widget resize controls with persisted layout state
  • Finance analytics from validated local mock JSON data
  • Global filtering by date range and category
  • Global search and sorting
  • CSV export for the active transaction slice
  • Saved dashboard layout snapshots
  • Empty states and retryable error state
  • Keyboard-friendly drag-and-drop sensor support
  • Static export workflow for GitHub Pages with configurable base path support

Project structure

Dashboard/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ globals.css
β”‚   β”œβ”€β”€ layout.tsx
β”‚   └── page.tsx
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ app/
β”‚   β”‚   └── dashboard-app.tsx
β”‚   β”œβ”€β”€ dashboard/
β”‚   β”‚   β”œβ”€β”€ dashboard-grid.tsx
β”‚   β”‚   β”œβ”€β”€ error-state.tsx
β”‚   β”‚   β”œβ”€β”€ filters-bar.tsx
β”‚   β”‚   β”œβ”€β”€ widget-empty-state.tsx
β”‚   β”‚   └── widget-frame.tsx
β”‚   β”œβ”€β”€ layout/
β”‚   β”‚   β”œβ”€β”€ header.tsx
β”‚   β”‚   └── sidebar.tsx
β”‚   └── widgets/
β”‚       β”œβ”€β”€ bar-chart-widget.tsx
β”‚       β”œβ”€β”€ line-chart-widget.tsx
β”‚       β”œβ”€β”€ pie-chart-widget.tsx
β”‚       β”œβ”€β”€ summary-widget.tsx
β”‚       └── transactions-widget.tsx
β”œβ”€β”€ data/
β”‚   └── finance-data.json
β”œβ”€β”€ hooks/
β”‚   └── use-dashboard-data.ts
β”œβ”€β”€ lib/
β”‚   β”œβ”€β”€ chart.ts
β”‚   β”œβ”€β”€ constants.ts
β”‚   β”œβ”€β”€ dashboard-data.ts
β”‚   β”œβ”€β”€ finance-data.ts
β”‚   β”œβ”€β”€ export.ts
β”‚   β”œβ”€β”€ format.ts
β”‚   └── utils.ts
β”œβ”€β”€ store/
β”‚   └── dashboard-store.ts
β”œβ”€β”€ types/
β”‚   └── dashboard.ts
β”œβ”€β”€ eslint.config.mjs
β”œβ”€β”€ .gitignore
β”œβ”€β”€ next.config.ts
β”œβ”€β”€ package.json
β”œβ”€β”€ postcss.config.mjs
β”œβ”€β”€ tailwind.config.ts
β”œβ”€β”€ tsconfig.json
└── README.md

Install

npm install

Run locally

npm run dev

Open http://localhost:3000.

Production build

npm run check
npm run build
npm run start

Notes

  • Filters, widgets layout, and saved layout snapshots are persisted in localStorage.
  • The mock dataset is anchored to the latest transaction date so date filters stay meaningful.
  • CSV export always uses the currently filtered transaction list.
  • NEXT_PUBLIC_BASE_PATH or BASE_PATH can override the repository-derived GitHub Pages path.

About

πŸ“ˆ Interactive financial analytics dashboard with drag-and-drop widgets, filtering, and CSV export.

Resources

Code of conduct

Contributing

Stars

Watchers

Forks

Contributors