A single-page, self-contained web application that renders interactive charts and visual reports entirely client-side. Chart Studio lets users create, customize, brand, and export professional charts and reports — all from a single HTML file with zero server-side dependencies.
- Six Chart Types — Bar, line, pie, area, scatter, and radar charts with full customization (colors, labels, legends, axes, tooltips, responsive sizing)
- Real-Time API Playground — Author JSON chart definitions with instant schema validation, descriptive error messages, and live preview
- No-Code Workflow — Template picker, paste-from-spreadsheet data editor (TSV/CSV), drag-and-drop field mapping, and one-click report generation
- Three Report Templates — Executive Summary, KPI Dashboard, and Data Comparison layouts with multi-chart branded output
- White-Label Branding — Hex color pickers (primary, secondary, accent), logo URL input with live preview, and curated font selector (10+ web-safe and Google Fonts)
- Browser-Native Export — PNG (2× resolution), SVG (clean vector), and multi-page PDF via jsPDF and html2canvas — no server round-trip
- Embeddable Output — Generate iframe markup, inline SVG, base64 data URIs, and copyable image URLs for every chart
- On-Page Documentation — Quick-start walkthrough, annotated JSON examples, contextual tooltips, and guided first-run tour
To use the application: Any modern web browser (Chrome, Firefox, Safari, or Edge — latest two versions supported). No installation required.
To run the automated test suite: The following are needed:
- Node.js (v16 or later) or Python 3 (3.8 or later)
- Playwright browser automation library
- Node.js:
npm install playwright - Python:
pip install playwright && python -m playwright install
- Node.js:
No build step, package manager, or installation is required to use Chart Studio. The entire application is a single self-contained HTML file (src/index.html) with inline CSS and JavaScript.
-
Clone or download the repository:
git clone <repository-url> cd <project-directory>
-
That's it. The application is ready to use.
Open src/index.html directly in any modern browser:
# macOS
open src/index.html
# Linux
xdg-open src/index.html
# Windows
start src/index.htmlOr serve it from any static file server — the file works at any arbitrary path URL without configuration or URL rewriting:
# Python
python3 -m http.server 8080
# Node.js (npx)
npx serve .
# Then navigate to http://localhost:8080/src/index.htmlYou can also deploy the file to any static hosting provider (GitHub Pages, Netlify, S3, Cloudflare Pages, etc.) by uploading src/index.html.
The project includes a comprehensive test suite (49 tests across 7 groups) that runs in a headless browser via Playwright. Two equivalent test runners are provided:
node run-tests.cjsThis starts a local static server on port 9876, launches a headless Chromium browser, executes the test suite at tests/test-suite.html, and writes results to test-results/results.json.
python3 run-tests.pyThis starts a local static server on port 9877, launches a headless Chromium browser, executes the test suite, and writes results to test-results/results.json.
| Group | Tests | Description |
|---|---|---|
| Chart Type Rendering | 6 | Verifies all six chart types render without errors |
| Branding Propagation | 6 | Confirms branding changes propagate to CSS, charts, SVG exports, and events |
| JSON Schema Validation | 11 | Tests validation of chart definitions (missing fields, invalid types, syntax errors) |
| Export Formats | 5 | Validates PNG, SVG, and PDF export output |
| Embed Snippets | 7 | Verifies iframe, SVG, data URI, and image URL embed generation |
| TSV / Spreadsheet Parsing | 7 | Tests CSV/TSV parsing, quoted fields, multi-column data, and edge cases |
| Report Templates | 7 | Validates all three report templates render with branded headers and chart canvases |
After running, test results are saved as JSON at:
test-results/results.json
You can also open tests/test-suite.html in a browser to run the tests interactively with a visual UI.
Chart Studio requires no external configuration files. All configuration is done through the in-app UI:
- Chart Type — Select from bar, line, pie, area, scatter, or radar
- Data Input — Paste spreadsheet data (TSV/CSV) or enter data manually
- Labels & Titles — Chart title, axis labels, legend position
- Colors — Per-dataset color customization
- Axes — Min/max values, step size, grid display, axis formatting
- Tooltips — Enable/disable, custom formatting
- Responsive Sizing — Automatic or fixed dimensions
Define charts programmatically using a JSON schema. Example:
{
"type": "bar",
"labels": ["Q1", "Q2", "Q3", "Q4"],
"datasets": [
{
"label": "Revenue",
"data": [120, 190, 300, 250],
"backgroundColor": "#4f46e5"
}
],
"options": {
"title": "Quarterly Revenue",
"legend": true
}
}- Primary Color — Main theme color (hex)
- Secondary Color — Supporting color (hex)
- Accent Color — Highlight/call-to-action color (hex)
- Logo URL — URL to a logo image displayed in headers and exports
- Font Family — Choose from 10+ web-safe and Google Fonts
Branding settings apply consistently across all chart renders, report templates, and exported files.
Chart Studio loads the following libraries from public CDNs at runtime:
| Library | Version | CDN | Purpose |
|---|---|---|---|
| Chart.js | 4.4.7 | jsDelivr | Chart rendering engine |
| html2canvas | 1.4.1 | jsDelivr | PNG and PDF rasterization |
| jsPDF | 2.5.2 | jsDelivr | PDF document generation |
No proprietary SaaS dependencies are used at runtime.
├── src/
│ └── index.html # The complete application (single HTML file)
├── tests/
│ └── test-suite.html # Browser-based test suite (49 tests)
├── test-results/
│ └── results.json # Test run output
├── run-tests.cjs # Node.js/Playwright test runner
├── run-tests.py # Python/Playwright test runner
└── README.md # This file
Chart Studio is tested and supported on the latest two versions of:
- Google Chrome
- Mozilla Firefox
- Apple Safari
- Microsoft Edge
Both desktop and tablet viewports are supported.
- Page load: Under 3 seconds on a 25 Mbps connection (cold CDN load)
- File size: Under 2 MB total HTML
- Live preview: Sub-second updates for typical payloads (≤1,000 data points)
See the project repository for license information.
Built by HermesOrg — an orchestration of distinct AI personas working in concert. Product Manager → Designer → Engineer → QA, each contributing expertise to build something real.