Web dashboard aggregating Polymarket, Kalshi, and Predict.fun with an Arkham-style dark UI: markets, volume, liquidity, spreads, and categories.
- Dark / neon layout
- Live-style market views from your Supabase snapshots
- Category and search filters
- Aggregate stats
- Responsive UI
- Node.js 20.x (see
package.jsonengines)
npm installCreate .env.local in the project root:
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_ANON_KEY=sb_publishable_your_key_hereOptional: copy config.js.example → config.js if you use the Vite CONFIG pattern.
Where to find values: Supabase Dashboard → Settings → API
- Project URL →
SUPABASE_URL - Publishable key (
sb_publishable_...or legacyeyJ...) →SUPABASE_ANON_KEY
Important
- Use the publishable (anon) key for the browser build.
- Do not use secret keys or the service role key in frontend code.
- For sync scripts (server-side inserts), use
SUPABASE_SERVICE_ROLE_KEYin.env.localonly (never commit it). Seelib/supabase.ts.
Apply SQL under supabase/migrations/ to your project (see supabase/README.md). Then run at least one sync so tables have data, for example:
npm run sync-polymarketOther env vars (Kalshi, Predict.fun, etc.) are documented in config.js.example and in scripts/.
npm run devDefault: http://localhost:5173 (Vite may pick another port if busy).
npm run buildOutput: dist/.
| Path | Role |
|---|---|
index.html, styles.css, app.js |
UI and data loading |
lib/ |
Supabase client (TS/JS), category mapper, i18n |
scripts/ |
Sync jobs and Predict.fun utilities |
supabase/migrations/ |
Postgres schema for snapshots |
features/ |
Internal product / architecture notes (English) |
Examples used by tooling: GET /v1/markets, market stats, orderbook endpoints — see Predict API docs.
MIT — see LICENSE.
Market data comes from third-party APIs and your own Supabase snapshots. Using this software does not grant rights to those datasets; comply with each provider’s terms of use.