A modern web application for tracking and visualizing Solana Improvement Documents (SIMDs) voting status and validator participation.
This Next.js application provides a comprehensive interface for monitoring SIMD proposals in the Solana ecosystem, displaying voting metrics, validator votes, and proposal statuses in real-time.
- SIMD Dashboard: Browse and filter all SIMD proposals
- Detailed SIMD Views: View individual SIMD details, voting metrics, and validator participation
- Validator Tracking: Monitor how validators vote on different proposals
- Visual Analytics: Interactive charts showing voting distribution and participation rates
- Responsive Design: Optimized for desktop and mobile devices
- Framework: Next.js 15.5 with App Router
- Language: TypeScript
- Styling: Tailwind CSS
- UI Components: shadcn/ui
- Data Fetching: TanStack Query (React Query)
- Charts: Recharts
- Icons: Lucide React
- Node.js 18.x or higher
- npm or yarn package manager
- Clone the repository:
git clone [repository-url]
cd simd-tracking-frontend- Install dependencies:
npm install- Set up environment variables:
cp .env.example .env.local- Configure your environment variables in
.env.local:
NEXT_PUBLIC_API_URL=your-api-endpoint-here
NEXT_PUBLIC_USE_MOCK_DATA=falseRun the development server:
npm run devOpen http://localhost:3000 in your browser.
Build the application:
npm run buildStart the production server:
npm run start| Variable | Description | Default |
|---|---|---|
NEXT_PUBLIC_API_URL |
Backend API endpoint | Required (no default) |
NEXT_PUBLIC_USE_MOCK_DATA |
Use mock data for development | false |
simd-tracking-frontend/
├── app/ # Next.js app router pages
│ ├── layout.tsx # Root layout
│ ├── page.tsx # Home page
│ └── simd/ # SIMD routes
│ └── [title]/ # Dynamic SIMD detail pages
├── components/ # React components
│ ├── layout/ # Layout components
│ ├── simd/ # SIMD-specific components
│ └── validators/ # Validator components
├── lib/ # Utility functions and API
│ ├── api/ # API client and hooks
│ ├── formatters.ts # Data formatting utilities
│ └── utils.ts # General utilities (includes cn helper)
├── public/ # Static assets
└── components.json # shadcn/ui configuration
The application connects to a backend API for SIMD data. The API client is configured in lib/api/client.ts and provides the following endpoints:
GET /simds- List all SIMDsGET /simd/{title}- Get SIMD detailsGET /simd/{title}/validators- Get validator votes for a SIMD
npm run dev- Start development servernpm run build- Build for productionnpm run start- Start production servernpm run lint- Run ESLint