Guild42 Survey Dashboards

Interactive survey result visualizations built with Observable Plot and Astro.

📊 Available Dashboards

🚀 Quick Start

# Start dev server
pnpm run dev

# Visit dashboards
open http://localhost:4321/dashboard

📁 Project Structure

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

🎨 Features

📝 Adding New Surveys

  1. Export CSV from Findmind

    # Place in: src/data/surveys/your-survey.csv
  2. 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);
  3. Create Dashboard Page

    ---
    // src/pages/dashboard/your-survey.astro
    import surveyData from '../../data/surveys/your-survey.json';
    // ... use BarChart, MetricCard components
    ---
  4. Update Index Add entry to src/pages/dashboard/index.astro

🎯 Chart Types

Currently implemented:

Can be added (Observable Plot supports):

🛠 Tech Stack

📖 Documentation


Built with ❤️ for Guild42