Oracle3
Open-source trading engine and MCP server for prediction markets. Fee-aware no-arbitrage trading across related contracts, live on Kalshi, Polymarket and Solana or on paper.
Live crypto trending board, fresh launches, community listings and token boosts across Solana, BSC, Ethereum and more.
Translation pending
FinanceTypeScript · JavaScriptGitHub @CrypzicOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Multi-chain crypto discovery board with paid boosts, community votes and an admin panel. Built with Next.js 16 + React 19 + Tailwind 4, data in Supabase, market data from DexScreener and CoinGecko. English and 中文 throughout.Read the full README ↗
Multi-chain crypto discovery board with paid boosts, community votes and an admin panel. Built with Next.js 16 + React 19 + Tailwind 4, data in Supabase, market data from DexScreener and CoinGecko. English and 中文 throughout.
| Page | What it does |
|---|---|
/ ThunderTrend | Live trending board. Boosted tokens are pinned by Thunder Points; Tier 3+ names shimmer gold (Thunder Ticker); Tier 5 gets the glowing Thunder Elite frame and the front-page spotlight. Live banner carousel (paid banners → running boosts, including ones the admin adds → whatever is trending on DexScreener right now, refreshed every 30s). Top 10 Hot Spot (votes), newest listings. |
/trenches | Fresh launches, newest first. |
/hottest | Largest stablecoins ranked by 24h volume. |
/advertising | Thunder Advertising: Thunder Profile (Free / Elite $148), Thunder Trend Tiers 1–5, Banner Ads (1500×500, 24h / 3d / 7d). Checkout creates an order. |
/coin/[chain]/[address] | Token page: chart, stats, links, votes. Elite Profiles get a banner, gold frame and every social link. |
/submit, /dashboard | Free listing submission; a user's own listings and orders. |
/admin | Overview (revenue, pending work), listing review (approve / reject / feature / add votes / edit), orders (mark paid & activate, extend, end), Add trending (put any token on the board + carousel for free, instantly), pricing editor (prices, "was" prices, points, durations, sale toggle), users (grant admin). |
tx_hash column for when on-chain payments are wired in.npm install
cp .env.example .env.local # leave the Supabase values empty to use demo mode
npm run dev # http://localhost:3000
Demo mode. With no Supabase keys, accounts, listings, orders and votes live in the browser's localStorage, so every screen works, admin included (sign up with the username admin). Demo mode is for previews only: nothing is shared between visitors.
Offline market data. MARKET_FIXTURES=1 npm run dev serves sample tokens instead of calling DexScreener and CoinGecko.
supabase/schema.sql and run it. It creates the tables, security rules, pricing rows and functions, and is safe to run again.anon public key into your env (step 2).update profiles set is_admin = true where username = 'YourName';
| Variable | |
|---|---|
NEXT_PUBLIC_SUPABASE_URL | Supabase project URL |
NEXT_PUBLIC_SUPABASE_ANON_KEY | Supabase anon key. It is meant to be public; the database rules protect the data. |
NEXT_PUBLIC_ADMIN_TELEGRAM / _URL | Where buyers are sent to complete payment |
Import the repo at vercel.com/new, add the env vars, deploy. No other config is needed.
Old passwords can't be carried over, so everyone signs up again. Listings and votes do come across.
node scripts/migrate-from-sheets.mjs listings.csv votes.csv > supabase/import.sqlsupabase/import.sql in the Supabase SQL editor, after schema.sql.Each imported listing keeps its old username. When that person signs up again with the same username, their listings are re-attached to the new account automatically.
src/
├── app/ pages (one folder per route) + /api/market/[kind]
├── components/ board, chrome (nav/footer/dialogs), checkout, home sections
└── lib/
├── config.ts networks, pay tokens, banner spec, site settings
├── tiers.ts default product catalog + perk rules per tier
├── i18n/ en.ts + zh.ts (every visible string)
├── market/ DexScreener/CoinGecko (server, cached) + client hooks
└── store/ data layer: supabase.ts (live) and demo.ts (localStorage)
supabase/schema.sql tables, row-level security, triggers, RPCs
scripts/ Google Sheets → Supabase import
tiers table inside the database. Whatever price a browser sends is ignored. Regular users can only create pending listings and unpaid orders; approving, activating and pricing are admin-only, enforced by row-level security.src/app/globals.css.src/lib/i18n/en.ts and zh.ts.robinhood (src/lib/config.ts). Change it there if their listings use a different id.