Live · In development

MarketMind — Developer Portal

The revenue seat of the platform: a developer portal where anyone can open an account, generate API keys for Indian market intelligence, watch quota burn down against plan limits, and pay for more — through a real Razorpay flow. Deployed on Vercel with no build step.

Vanilla JSVercelCustom AuthGoogle OAuthRazorpayAPI KeysQuota
MarketMind developer portal screenshot

Overview

developers.marketmind-hub.in is where the relationship with the product actually lives: signup, API-key management, quota tracking, API reference, and billing. It's a dark, terminal-flavored console that deliberately reuses none of the light marketing sites' code — it's its own hand-written system with its own config, partials, and auth — because the audience and the job are different: engineers, not browsers.

It's the only one of the three sites that touches real money, and it does so through two real pipelines: a server-approved Razorpay checkout for paid plans, and a backend enquiry form for enterprise deals.

Design & layout

  • Fixed dark console: tokens in :root blocks — --dev-bg #080c10, --dev-surface #0d1117, green #00ff88, cyan #00d4ff, red for destructive states — with the block duplicated per page so each page is fully standalone.
  • Type pairing: Syne for headings and nav, JetBrains Mono for code and labels; inline SVG icons plus emoji in the API cards — no icon font.
  • Terminal flavor: blinking cursors, grid-and-glow background layers, API cards with hover glow, a sticky frosted header that gains a blur .scrolled state, and a mobile hamburger — with no theme toggle (deliberately a different vibe from the light sub-sites).

Architecture

  • Multi-page static: index, docs, dashboard, pricing, contact, legal, 404, and an OAuth callback page — no framework, no build step, no package.json.
  • Runtime partials: utils.js fetches the header, footer, and login/signup modals into shared placeholders; the dashboard opts out (data-skip-utils) and mounts its own chrome because it has a sidebar instead of a nav.
  • One config global: window.APP_CONFIG centralizes the portal API base, the contact/enquiry backend, the Google client id, and shared URLs — though several modules hardcode their base URL instead of reading it, which is exactly the drift that bites.
  • Per-page CSS: a header.css/footer.css core plus index/docs/dashboard/pricing/contact/legal page styles, with separate modal sheets for checkout and enterprise.

Auth & sessions

  • Custom API auth against api.marketmind-hub.in — signup, login, logout, plus Google OAuth. No Firebase/Supabase dependency.
  • Two-part session: the server sets an httpOnly api_key cookie while the client mirrors userEmail in localStorage for UI state; every call sends credentials:'include'.
  • Google sign-in flow: Google Identity Services with a redirect-mode code flow → google-redirect.html exchanges ?code at the portal's /api/google-auth → bounce to home, where the session restores.
  • Guard rails: protected moments stash a pendingRedirect and prompt login; after a successful login the flow tries to resume the interrupted plan selection or deep link.

Dashboard & API keys

  • Auth-guarded, data-driven — the tenant profile (id, company editable inline, plan, member-since), usage meters, and the key table all come from backend calls, updated live.
  • Complete key lifecycle: generate (label + portal context) → the raw mm_live_… key is revealed exactly once in a modal with copy and an "I've saved it" handshake → rotate/regenerate and revoke, the destructive ones gated behind a permanence confirm.
  • Quota engine: today/month progress bars that shift to warning at 70% and danger at 90%, an all-plans comparison grid, and consistent 401 handling that boots you to login when a session dies.
  • Full-screen chrome: a sidebar plus a mobile tab bar driven by data-panel attributes — completely different layout from the marketing pages.

API documentation

docs.html is a hand-authored static reference (not generated) — a feature for exactness, a cost for maintenance:

  • Auth: X-API-Key header with mm_live_ keys, error codes 400/401/402/503/504, per-account daily quotas resetting at midnight UTC, and quota echoed in every response.
  • Ticker Extractor — POST /v1/signals/ticker-extract, Mistral-7B, 70K+ training rows.
  • Price Prediction — POST /v1/signals/price-predict, Chronos-Bolt, 7-day forecast with median + p10–p90 band, 1-hour Redis cache on identical inputs.
  • RAG Retrieval — POST /v1/intelligence/rag, ONNX embeddings + Redis HNSW, token-budget depth tiers and filters (ticker / event type / days back).
  • Presentation: four-language code tabs (curl / Python / JavaScript / Node) with copy buttons, full JSON schemas, an IntersectionObserver scroll-spy, and a mobile search/dropdown — developer-grade UX on a static page.

Pricing & billing

  • Plans: Sandbox ₹0 (100 cr/day) · Starter ₹499 (500/day) · Builder ₹999 (1,500/day, "Most Popular", 99.5% SLA) · Scale ₹2,499 (5,000/day, 99.9% SLA) · Enterprise custom.
  • Credit model: the marketplace is metered in credits — RAG = 3, Price Predict = 2, Ticker = 1, MCP tools 0.5–3 — and the pricing page marks the newest APIs (sentiment, earnings, sector) as coming soon.
  • Real Razorpay flow: logged-in user → POST /api/payment/init (server prices the plan) → Razorpay Checkout (INR, prefilled email, company/use-case notes, green theme) → POST /api/payment/verify → success overlay. Upgrading changes your quota instantly.
  • Enterprise: a separate scoped enquiry form (company, designation, timeline, credits, needed APIs) POSTs to the contact backend on Render — a proper sales path, distinct from self-serve checkout.

Deployment & SEO

  • Vercel with a minimal vercel.json (cleanUrls + no trailing slash), so /docs, /pricing, and /dashboard serve without extensions; the static 404.html is auto-served for unknown routes.
  • SEO is thin but present: per-page titles plus descriptions on the core pages, a sitemap.xml of clean URLs, and Google Search Console verified via a legacy file token — but no Open Graph, canonical, or JSON-LD, and no robots.txt.

State & honest gaps

Live: signup / login / Google OAuth, the full API-key lifecycle (generate, once-only reveal, rotate, revoke), quota tracking, Razorpay billing, and three documented APIs.

Coming soon (publicly marked): news sentiment scoring, earnings-call intelligence, and a real-time market alerts WebSocket stream.

Known rough edges, stated plainly: the dashboard's Rotate-All and Delete-Account are "coming soon" toasts; the forgot-password link is unwired; the homepage notify input is client-side only; the docs page's plan numbers lag the pricing page; a pending-plan resume flow references a function that doesn't exist; and a few config values are defined but never read. These are exactly the things a production-launch pass would sweep up — and the reason this site is positioned as in development, not done.

The marketing front door lives on the main website, and the agent-facing layer on the MCP site.