Interactive survey result visualizations built with Observable Plot and Astro.
# Start dev server
pnpm run dev
# Visit dashboards
open http://localhost:4321/dashboard
src/
├── pages/dashboard/
│ ├── index.astro # Dashboard overview
│ └── survey-2026.astro # 2026 Survey results
│
├── components/
│ ├── charts/
│ │ ├── ObservablePlot.tsx # Plot wrapper
│ │ └── BarChart.tsx # Bar chart component
│ └── metrics/
│ └── MetricCard.tsx # KPI cards
│
├── config/
│ ├── theme.ts # Guild42 theme
│ └── survey-schemas.ts # TypeScript types
│
├── data/surveys/
│ └── guild42-survey-2026.json # Aggregated data
│
└── utils/survey/
└── csvParser.ts # CSV parser utilities
Export CSV from Findmind
# Place in: src/data/surveys/your-survey.csv
Convert to JSON
import { parseCSV, aggregateSurveyData } from './utils/survey/csvParser';
const csv = await fs.readFile('your-survey.csv', 'utf-8');
const rows = parseCSV(csv);
const data = aggregateSurveyData(rows);
Create Dashboard Page
---
// src/pages/dashboard/your-survey.astro
import surveyData from '../../data/surveys/your-survey.json';
// ... use BarChart, MetricCard components
---
Update Index
Add entry to src/pages/dashboard/index.astro
Currently implemented:
Can be added (Observable Plot supports):
Built with ❤️ for Guild42