A real-time events dashboard that receives data from external applications through a REST API, displays it in a live feed, and visualizes it with charts. Built with Next.js, Supabase, and shadcn/ui.
Polso is a tech demo and has no real function.
- REST API — POST endpoint for ingesting events with API key authentication
- Live feed — real-time event updates via Supabase Realtime (PostgreSQL subscriptions)
- Charts — events timeline, channel distribution, NEO scatter plot, space weather bar chart
- KPI cards — total events, events today, channel count, critical events (7d)
- Multi-project — each project has its own API key and isolated data
- Channel filtering — channels are created dynamically when events are pushed
- Search — full-text search across event titles and descriptions
- Favorites — mark important events with visual highlighting
- NASA integration — automated polling of DONKI (space weather) and NEO (asteroids) APIs
- Export/Import — backup and restore event data as JSON
- Dark/Light mode — system-aware theme toggle
# Install dependencies
npm install
# Set up environment variables
cp .env.local.example .env.local
# Edit .env.local with your Supabase credentials
# Run the Supabase schema (see docs/setup.md)
# Start development server
npm run devOpen http://localhost:3000 and create your first project at /projects.
| Layer | Technology |
|---|---|
| Framework | Next.js 16 (App Router) |
| Database | Supabase (PostgreSQL + Realtime) |
| UI | Tailwind CSS + shadcn/ui |
| Charts | Recharts (via shadcn/ui Charts) |
| Theming | next-themes |
| Icons | Lucide React |
| Font | SF Pro (macOS system font) |
- Setup guide — Supabase configuration, environment variables, Vercel deployment
- API reference — endpoints, authentication, request/response formats
- NASA module — DONKI and NEO polling, event mapping, cron configuration
- Database schema — tables, indexes, RLS policies, Realtime setup
Once you have a project and its API key, push events from any application:
curl -X POST https://your-app.vercel.app/api/events \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"channel": "my-app",
"title": "User signed up",
"description": "New user registered via OAuth",
"tags": ["user", "signup"],
"importance": "normal"
}'MIT