Skip to content

sozercan/pano

Repository files navigation

Pano

A modern, subscription-based viewer for TestGrid dashboards with desktop notification support.

Features

  • Dashboard Navigation - Browse TestGrid dashboard groups, dashboards, and tabs with an intuitive accordion sidebar
  • Virtual Scrolling Grid - Efficiently render thousands of test results with virtual scrolling
  • Subscriptions - Subscribe to dashboards, tabs, or individual tests to track their status
  • Global Search - Quick search across all groups, dashboards, and tabs (Cmd/Ctrl+K)
  • Grid Filtering - Filter test results by status (pass/fail/skip/flaky) or name pattern
  • Dark/Light Mode - System-aware theme with manual toggle
  • Offline Support - View cached data when offline with status indicators
  • Real-time Updates - Auto-refreshing data with configurable intervals

Tech Stack

Layer Technology
Runtime Bun 1.2+
Frontend React 19
Build Tool Vite 6
Styling Tailwind CSS 4
State Management Zustand 5
Data Fetching TanStack Query 5
Routing TanStack Router
Schema Validation Zod 3
UI Primitives Radix UI

Getting Started

Prerequisites

  • Bun 1.2 or later

Installation

# Clone the repository
git clone https://github.com/your-org/pano.git
cd pano

# Install dependencies
bun install

Development

# Start development server (frontend + hot reload)
bun run dev

The app will be available at http://localhost:5173

Testing

# Run all tests
bun test

# Run tests in watch mode
bun test --watch

# Run tests with coverage
bun test --coverage

Building

# Build for production
bun run build

# Preview production build
bun run preview

Project Structure

pano/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ frontend/               # React application
β”‚   β”‚   β”œβ”€β”€ components/         # React components
β”‚   β”‚   β”‚   β”œβ”€β”€ dashboard/      # Dashboard views
β”‚   β”‚   β”‚   β”œβ”€β”€ grid/           # Test grid components
β”‚   β”‚   β”‚   β”œβ”€β”€ layout/         # App shell, sidebar, header
β”‚   β”‚   β”‚   β”œβ”€β”€ search/         # Global search modal
β”‚   β”‚   β”‚   └── subscriptions/  # Subscription management
β”‚   β”‚   β”œβ”€β”€ hooks/              # Custom React hooks
β”‚   β”‚   β”œβ”€β”€ stores/             # Zustand stores
β”‚   β”‚   β”œβ”€β”€ routes/             # TanStack Router routes
β”‚   β”‚   β”œβ”€β”€ lib/                # Utilities
β”‚   β”‚   └── styles/             # Global styles
β”‚   └── shared/                 # Shared code (schemas, types)
β”‚       └── schemas/            # Zod schemas for API responses
β”œβ”€β”€ tests/                      # Test files
β”œβ”€β”€ public/                     # Static assets
└── .github/workflows/          # CI/CD workflows

Configuration

Environment Variables

Variable Description Default
PORT Server port 3000

TestGrid API

The app fetches data directly from the TestGrid API at https://testgrid-api.prow.k8s.io/api/v1.

Usage

Navigation

  1. Sidebar - Click on dashboard groups to expand and see dashboards
  2. Dashboard View - Shows tab summaries with status indicators
  3. Tab View - Displays the full test results grid

Keyboard Shortcuts

Shortcut Action
Cmd/Ctrl + K Open global search
↑ / ↓ Navigate search results
Enter Select search result
Escape Close search/dialogs

Subscriptions

  1. Click the bell icon or "Subscribe" button on any dashboard, tab, or test
  2. View all subscriptions in the "Subscribed" view
  3. Export/import subscriptions as JSON for backup

Grid Filtering

On any tab's test grid:

  • Text filter - Type to filter tests by name
  • Status filter - Dropdown to show only pass/fail/skip/flaky
  • Failures only - Toggle to show only failing tests

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Run tests (bun test)
  5. Commit your changes (git commit -m 'Add amazing feature')
  6. Push to the branch (git push origin feature/amazing-feature)
  7. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

About

πŸ“Š Modern Kubernetes TestGrid viewer

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors