Spaces:
Sleeping
Download shockmap_prompt_guide.md from shield137/shockmap-api: direct link, hf CLI and curl.
- Browser
- Download file 27.3 kB
-
https://huggingface.co/spaces/shield137/shockmap-api/resolve/main/shockmap_prompt_guide.md
- Command line
-
hf download hf://spaces/shield137/shockmap-api/shockmap_prompt_guide.md
-
curl -L -o shockmap_prompt_guide.md https://huggingface.co/spaces/shield137/shockmap-api/resolve/main/shockmap_prompt_guide.md
ShockMap β Final Polish & Deployment Prompt Guide
Google Solution Challenge 2026 | Phase 1 Completion
How to use this file: Each section is a self-contained prompt. Paste it directly into Claude, Cursor, or your AI coding tool. Work top to bottom β the design system must come first, then features, then deployment. Mock data is explicitly permitted in every prompt.
Table of Contents
- Design System Overhaul
- Dashboard β Animated HHI Globe + Live Ticker
- Propagation Graph β THE WOW FEATURE
- War Room β Cinematic Incident Command
- Supply Map β Animated Shock Corridors
- Query Interface β Streaming Analyst
- Alerts Feed β Live Signal Wall
- Global Bug Fixes & UX Hardening
- Demo Mode β Autopilot & Keyboard Shortcuts
- Deployment β Docker + Railway/Render
1. Design System Overhaul
Run this first. Everything else builds on this.
I am building ShockMap β a real-time supply shock intelligence platform for India's critical import dependencies (pharma APIs, rare earth minerals). The stack is React 19 + Vite + Tailwind CSS + FastAPI. Judges are Google engineers evaluating real-world impact and technical polish.
I need you to implement a complete design system in `frontend/src/styles/tokens.css` and a global `theme.ts` config. The aesthetic is **military-grade command center + editorial data journalism** β think Bloomberg Terminal meets a dark ops war room. NOT purple-gradient AI slop.
Design decisions to commit to:
- **Color palette**: Near-black base `#080C10`, with a single electric accent `#00E5A0` (toxic teal for active/safe states) and `#FF4444` (alarm red for critical shocks). Muted `#1A2332` for cards. Text: `#E8EDF2` primary, `#6B7E94` secondary.
- **Typography**: Import `Syne` (display headings β bold, slightly condensed geometric) + `JetBrains Mono` (data values, metrics, codes) + `IBM Plex Sans` (body UI text). All via Google Fonts.
- **Motion system**: Define three animation tiers in CSS vars:
- `--anim-instant`: 80ms (micro, hover states)
- `--anim-fast`: 200ms (panel transitions)
- `--anim-slow`: 600ms (page reveals, shock propagation)
- **Data states**: CSS classes for `state-critical` (red pulse glow), `state-elevated` (amber), `state-normal` (teal), `state-stale` (grey). Each should have a subtle animated border-glow keyframe.
- **Card system**: `.card-glass` β dark semi-transparent background, 1px border using `rgba(255,255,255,0.06)`, subtle inset shadow, no border-radius above 8px (this is ops software, not a consumer app).
- **Grid**: Define a strict 12-column CSS grid. Include `.grid-dashboard` (3 cols large, 2 medium, 1 small) and `.grid-detail` (sidebar + main).
- **Scrollbars**: Custom thin scrollbar in the accent color.
Also create `frontend/src/components/ui/` with these base components:
- `<RiskBadge level="critical|elevated|normal" />` β animated pill with pulsing dot
- `<MetricCard title value delta trend />` β large mono number, small label, optional sparkline div slot
- `<SectionHeader title subtitle eyebrow />` β Syne display font, eyebrow in mono caps
- `<LoadingShock />` β a custom loader: animated horizontal scan line, not a spinner
Apply the design system globally in `App.tsx`. The overall feel: someone looking at this should feel like they're in a Bloomberg terminal crossed with a Pentagon situation room.
2. Dashboard
In ShockMap's React 19 frontend, I need to rebuild `frontend/src/pages/Dashboard.tsx` with three major enhancements. The design system (Syne + JetBrains Mono + dark command center palette) is already in place.
**Enhancement 1: Animated HHI Concentration Heatmap (replace the static version)**
- Use `react-simple-maps` + custom SVG overlays to render a China province map
- Color provinces using HHI score: a gradient from `#1A2332` (low) β `#FF8800` (medium) β `#FF4444` (critical concentration)
- On load: provinces should fade in with staggered 40ms delays using CSS animation
- On hover: show a tooltip with: Province name, HHI score, top 3 APIs sourced, % of India's supply
- Active shock provinces: add a continuous `pulse-ring` CSS animation (expanding ring, opacity fade) in alarm red
- Use this mock data inline (no API needed): Hebei (HHI: 0.82, APIs: Paracetamol API, 6-APA, Para-aminophenol), Shandong (HHI: 0.71, APIs: Ciprofloxacin API, Metformin), Inner Mongolia (HHI: 0.65, APIs: Rare Earth Oxides, Neodymium)
**Enhancement 2: Real-time Shock Ticker (top of page)**
- A horizontally auto-scrolling ticker bar pinned below the nav
- Each item: severity dot + shock title + province + time-ago
- CSS marquee-style infinite scroll, pausable on hover
- Items pulse red when severity is CRITICAL
- Wire to `/api/v1/shocks` with 30s polling; use mock data if API is offline
**Enhancement 3: System Status Bar (bottom of page)**
- Sticky bottom bar showing: Engine 1 status (live/demo mode indicator), Engine 2 last propagation run timestamp, Engine 3 (Gemini) status (green/grey), total shocks monitored count, feed mode badge
- All values animate in with a typewriter effect on mount
- If `DEMO_MODE=true`, show a distinct amber "DEMO SCENARIO ACTIVE" badge
Keep all existing metric cards but upgrade them to use `<MetricCard>` with a mini sparkline (7-day fake data array is fine).
3. Propagation Graph β WOW
This is your single most impressive visual. Spend the most time here.
I need to build the most visually stunning feature of ShockMap: the Shock Propagation Graph in `frontend/src/pages/GraphExplorer.tsx`. This must be the "jaw-drop" moment for Google Solution Challenge judges. Use React 19 + Vite. The design system (dark command center, Syne/JetBrains Mono) is in place.
**Library**: Use `@react-sigma/core` with `graphology` (Sigma.js v3). This handles large graph rendering at 60fps in WebGL. Install: `npm install @react-sigma/core graphology graphology-layout-forceatlas2 sigma`.
**Graph Data (use this mock, no API needed):**
```json
{
"nodes": [
{"id": "hebei", "label": "Hebei Province", "type": "province", "risk": 95, "x": 0, "y": 0},
{"id": "pap", "label": "Para-Aminophenol", "type": "ksm", "risk": 88, "x": 1, "y": 1},
{"id": "6apa", "label": "6-APA", "type": "ksm", "risk": 72, "x": 1, "y": -1},
{"id": "paracetamol_api", "label": "Paracetamol API", "type": "api", "risk": 85, "x": 2, "y": 1},
{"id": "amoxicillin_api", "label": "Amoxicillin API", "type": "api", "risk": 68, "x": 2, "y": -1},
{"id": "paracetamol", "label": "Paracetamol", "type": "drug", "risk": 82, "x": 3, "y": 1.5},
{"id": "ceftriaxone", "label": "Ceftriaxone", "type": "drug", "risk": 74, "x": 3, "y": 0},
{"id": "amoxicillin", "label": "Amoxicillin", "type": "drug", "risk": 65, "x": 3, "y": -1.5},
{"id": "shandong", "label": "Shandong Province", "type": "province", "risk": 45, "x": 0, "y": -3},
{"id": "ciprofloxacin_api", "label": "Ciprofloxacin API", "type": "api", "risk": 40, "x": 2, "y": -3},
{"id": "ciprofloxacin", "label": "Ciprofloxacin", "type": "drug", "risk": 38, "x": 3, "y": -3}
],
"edges": [
{"source": "hebei", "target": "pap", "weight": 0.9},
{"source": "hebei", "target": "6apa", "weight": 0.7},
{"source": "pap", "target": "paracetamol_api", "weight": 0.85},
{"source": "6apa", "target": "amoxicillin_api", "weight": 0.68},
{"source": "paracetamol_api", "target": "paracetamol", "weight": 0.82},
{"source": "paracetamol_api", "target": "ceftriaxone", "weight": 0.6},
{"source": "amoxicillin_api", "target": "amoxicillin", "weight": 0.65},
{"source": "shandong", "target": "ciprofloxacin_api", "weight": 0.4},
{"source": "ciprofloxacin_api", "target": "ciprofloxacin", "weight": 0.38}
]
}
Visual specifications β this is what makes it WOW:
Node appearance by type:
province: large hexagon shape, bright red glow if risk > 70, with a slow rotating outer ring animationksm(key starting material): medium diamond shape, amberapi: medium circle, orange-red gradient based on risk scoredrug: rounded square, color interpolated from green (risk 0) to red (risk 100)- All nodes: size proportional to risk score (min 8px, max 30px)
- Node label: show below, JetBrains Mono font, small
Edge appearance:
- Edge width proportional to
weight - Color: interpolate from
#334455(low risk) to#FF4444(high risk path) - Animated shock pulse: When a shock is "active" on a node, animate a glowing particle traveling along each outgoing edge β a bright dot that moves from source to target repeatedly. This is the single most impressive visual. Implement using a CSS/SVG overlay or Sigma's edge renderer with a custom
drawEdgethat uses a time-based offset to place a bright circle along the edge path.
- Edge width proportional to
Interactions:
- Click a node: right panel slides in showing node details (risk score, buffer days, substitutability, upstream/downstream list)
- Hover: edge highlights in bright white, connected nodes glow
- "Trigger Shock" button: clicking this on a province node animates a ripple outward β all connected nodes briefly flash their risk color, with a 150ms stagger per hop
Layout:
- Left: full-height Sigma canvas (WebGL)
- Right: 320px sliding details panel (transforms in from right)
- Top: filter bar β filter by node type, min risk threshold slider
Metrics overlay (top-left corner of canvas):
- Semi-transparent card showing: Nodes at risk: X, Critical paths: Y, Avg propagation depth: Z
- These animate as numbers count up on mount
Background: Dark canvas
#080C10with a very subtle dot grid pattern using CSSradial-gradient
Make all interactions smooth, 60fps. No page reloads.
---
## 4. War Room
Rebuild frontend/src/pages/WarRoom.tsx (the Shock Detail page) for ShockMap. This is the "command center" moment judges will remember. Design system is in place (dark, Syne/JetBrains Mono). Mock data is fine.
Mock shock data to use:
- Shock: "Hebei Analgesic Stress β Factory Shutdown"
- Severity: CRITICAL
- Province: Hebei, China
- Affected drugs: Paracetamol (risk 82), Ceftriaxone (risk 74)
- Days to stockout: 18
- Exposure estimate: βΉ2,340 Cr
- Aggregate risk score: 87/100
Enhancement 1: Cinematic Page Entry
- On mount: the page enters with a full-screen flash of alarm red (200ms), then fades to the dark background. This signals "incident activated."
- The title "WAR ROOM" appears with a glitch text effect (3-frame flicker using CSS animation) in JetBrains Mono caps
- Severity badge drops in from top with a bounce-settle easing
Enhancement 2: Days-to-Stockout Countdown
- Replace the static metric with an animated circular arc gauge
- The arc fills clockwise, colored from red (0 days) through amber (14 days) to green (30+ days)
- Current value in large JetBrains Mono in center
- On load, it counts up from 0 to the actual value over 1.2 seconds with easeOutCubic
Enhancement 3: 72-Hour Action Ladder
- Each action card shows: priority number, action title, quantity/amount, estimated cost, and impact delta
- Use this mock data:
- Action 1: "Advance-buy 18 MT Para-Aminophenol from alternate Indian supplier" β Cost: βΉ4.2 Cr β Impact: -12 risk pts, +8 days
- Action 2: "Lock 40 MT Paracetamol API from SE Asia spot market" β Cost: βΉ18 Cr β Impact: -20 risk pts, +12 days
- Action 3: "Activate strategic buffer release for Ceftriaxone" β Cost: βΉ0 β Impact: -8 risk pts, +5 days
- Each card has a "βΆ Run Simulation" button
- When clicked: the card expands to show a before/after delta panel:
- Aggregate Risk: 87 β 67 (animated counter)
- Days to Stockout: 18 β 26 (animated counter)
- Exposure: βΉ2,340 Cr β βΉ1,890 Cr
- A green checkmark animates in with a subtle bounce
- Only one simulation can be "active" at a time
Enhancement 4: Evidence Pack
- A collapsible section showing 3 source articles as citation cards
- Each card: favicon placeholder, headline, source name, timestamp, a one-line excerpt
- Use mock sources: Reuters, Bloomberg, DGFT India notification
- Cards fan in with 80ms stagger on expand
Enhancement 5: Propagation Path Visual (mini)
- A horizontal flow diagram showing: Hebei β PAP β Paracetamol API β Paracetamol
- Nodes are colored by risk, connected by animated dashed lines
- Each node shows risk score below it
- Clicking any node opens the full Graph Explorer in a new tab
Layout: two-column. Left col (60%): shock summary, countdown gauge, propagation mini-map, evidence. Right col (40%): sticky action ladder.
---
## 5. Supply Map
Upgrade frontend/src/pages/SupplyMap.tsx in ShockMap (React 19 + Leaflet/react-leaflet). The design system is in place. This page shows supply corridors from China provinces to Indian states.
Enhancement 1: Animated Supply Corridors Using Leaflet's SVG overlay, draw animated "flow lines" between source provinces and destination states:
- Each corridor is an SVG path (great-circle arc) between coordinates
- Animate small bright dots traveling along each path continuously (like a pulse in a circuit board)
- Corridor width proportional to trade volume (use mock weights)
- Corridor color:
#00E5A0(healthy flow) β#FF4444(disrupted flow) - When a province has an active shock: the corridor flashes and the dots speed up + turn red
Mock corridors to render:
[
{"from": [39.9, 116.4], "to": [28.7, 77.1], "label": "Hebei β Delhi NCR", "volume": 0.9, "disrupted": true},
{"from": [36.7, 117.0], "to": [19.1, 72.9], "label": "Shandong β Mumbai", "volume": 0.7, "disrupted": false},
{"from": [41.8, 123.4], "to": [12.9, 77.6], "label": "Liaoning β Bangalore", "volume": 0.5, "disrupted": false},
{"from": [40.8, 111.7], "to": [22.6, 88.4], "label": "Inner Mongolia β Kolkata", "volume": 0.6, "disrupted": true}
]
Enhancement 2: Province Shock Overlays
- Use GeoJSON for Chinese provinces (use a CDN-hosted simplified version)
- Fill provinces by current risk: dark base β amber β red
- Active shock provinces: add a pulsing circle marker with 3 expanding rings (CSS animation via Leaflet DivIcon)
- Clicking a province: popup card showing shock summary + "Open War Room" button
Enhancement 3: Indian State Risk Absorption View
- Toggle button: "Source View" / "Impact View"
- In Impact View: color Indian states by absorbed downstream risk (Maharashtra high, Delhi NCR high, others lower)
- Tooltip on hover: state name, # of APIs at risk, top exposed medicine
Enhancement 4: Map UI Polish
- Use a dark map tile:
https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}{r}.png - Custom zoom controls (styled to match the command center theme)
- A legend card (bottom left): explaining the corridor color coding
- Fit map bounds to show both China and India on load with smooth flyTo animation
---
## 6. Query Interface
Rebuild frontend/src/pages/QueryPage.tsx for ShockMap's "Operator Analyst" feature powered by Gemini Flash via /api/v1/query. Design system in place.
Enhancement 1: Streaming Typewriter Response
- When the API returns an answer, render it character-by-character with a 12ms delay per character using a streaming typewriter effect
- Show a blinking cursor
β(JetBrains Mono) while streaming - Implement this even if the API returns all at once (fake the stream on the frontend)
Enhancement 2: Suggested Query Chips
- Below the input, show 4 pre-built query chips:
- "Which drugs depend most on Hebei?"
- "What should procurement do in the next 72 hours?"
- "Which APIs have substitutes available?"
- "Show me the highest risk propagation path"
- Chips are pill-shaped, dark background, teal border, hover glow
- Clicking a chip populates the input and auto-submits after 300ms
Enhancement 3: Response Cards with Citations Structure every response as:
- Main answer block (typewriter animated)
- A "Referenced entities" section: small cards for each drug/API mentioned with its current risk badge
- A "Suggested next steps" section: 2-3 action bullets with arrow icons
- A "Confidence" indicator: 3 dots, filled based on score (use mock: 0.87)
Use this mock response for when the API is offline (graceful degradation):
"Based on current shock data, Paracetamol and Ceftriaxone face the highest downstream risk from the Hebei disruption. Para-Aminophenol sourcing is the critical bottleneck. Recommend immediate spot-market sourcing from SE Asia and activation of DGFT buffer release protocols within 24 hours."
Enhancement 4: Query History
- Left sidebar (240px) showing past queries in the current session
- Each entry: truncated query text + timestamp + a small risk-level dot
- Click to reload that response
- "Clear history" button at bottom
Enhancement 5: Input UX
- Large, prominent input with placeholder "Ask ShockMap anything about current supply risks..."
- CMD+Enter submits
- Textarea auto-expands (max 4 lines)
- Show a character count warning at 280+ chars
- Subtle animated border glow on focus using the teal accent
---
## 7. Alerts Feed
Upgrade frontend/src/pages/AlertsFeed.tsx for ShockMap. Design system in place.
Enhancement 1: Live Signal Wall Layout Change the layout from a plain list to a "signal wall" β 3-column masonry-style card grid (CSS columns, not JS masonry).
Each alert card shows:
- Severity badge (CRITICAL / ELEVATED / NORMAL) with animated pulse dot
- Shock type icon (factory: π, port: β, export ban: π«, contamination: βοΈ β rendered as styled SVG, not emoji)
- Province + sector tags
- Headline in Syne medium weight
- Time since detected (live-updating relative time: "4 minutes ago")
- Affected entities list (max 3 drug names, then "+2 more")
- A thin progress bar at card bottom showing risk score 0-100
Enhancement 2: Filter Bar
- Horizontal filter row with toggle pills: All / Critical / Elevated / Pharma / Rare Earth / China / India
- Active filter highlighted in teal
- Filter transitions: cards that don't match fade to 30% opacity + blur (CSS transition, no re-render)
Enhancement 3: New Alert Animation
- When a new alert arrives (poll every 15s), it doesn't just append β it slides in from the top with a brief red flash border, then settles
- A "NEW" badge appears for 8 seconds then fades
Enhancement 4: Card Hover State
- On hover: card lifts (translateY -4px), border brightens to the risk-level color, a subtle scanline effect sweeps across
- "Open War Room" CTA appears with a slide-up from card bottom
Use 6 mock alerts in varying severity levels if the API is unavailable.
---
## 8. Global Bug Fixes & UX Hardening
Apply these cross-cutting fixes and polish to all pages of ShockMap (React 19 + Vite + Tailwind + FastAPI backend):
Fix 1: API Offline Graceful Degradation
In frontend/src/lib/api.ts, wrap every fetch call with a try-catch that:
- Catches network errors and 5xx responses
- Returns mock data from
frontend/src/lib/mockData.tsautomatically - Shows a subtle amber banner "Using demo data β live API offline" at the top of the page
- Does NOT crash the app or show blank screens
Create frontend/src/lib/mockData.ts with realistic mock responses for every endpoint: /shocks, /shocks/:id/war-room, /graph, /query.
Fix 2: Loading States
Every page that fetches data must show the custom <LoadingShock /> component (the scanline loader) while loading, not a blank screen or default spinner.
Fix 3: Empty States If the shocks list is empty, show an illustrated empty state: a dark card with a pulsing radar circle animation and text "No active shocks detected β system monitoring". Not a blank div.
Fix 4: Mobile Responsiveness (basic) The judges may view on a tablet. Add responsive breakpoints:
- Nav collapses to hamburger below 768px
- Dashboard grid goes to 1 column
- War Room stacks vertically (action ladder moves below shock summary)
- Graph Explorer shows a message "Best viewed on desktop" with a simplified node list fallback
Fix 5: Page Transitions
Wrap all <Route> components in a fade transition using Framer Motion <AnimatePresence>. Each page enters with opacity: 0 β 1 + translateY: 8px β 0 over 250ms. This makes navigation feel polished and intentional.
Fix 6: Navigation Active States The nav currently doesn't clearly show which page is active. Add: active page gets a left border accent in teal + background highlight. Non-active items have a hover state.
Fix 7: Number Formatting
All risk scores, currency values, and percentages should be formatted consistently using Intl.NumberFormat. βΉ2340 Cr should display as "βΉ2,340 Cr". Risk score 82.3456 should display as "82.3".
Fix 8: Favicon and Page Titles
- Create a simple SVG favicon: a hexagon with a lightning bolt inside, in the teal accent color
- Set dynamic
document.titleper page: "War Room β Hebei Shock | ShockMap", "Dashboard | ShockMap", etc.
---
## 9. Demo Mode β Autopilot & Keyboard Shortcuts
Add a demo autopilot system to ShockMap for the hackathon presentation. This lets the presenter run a flawless demo hands-free.
Component: <DemoController />
Create frontend/src/components/DemoController.tsx β a floating controller (bottom-right corner, outside normal flow):
- A small "DEMO" pill button that expands on click to show controls
- Autopilot mode: walks through the golden path automatically:
- Navigate to Dashboard (3s pause, HHI map animates in)
- Navigate to Alerts, highlight the Hebei CRITICAL shock (2s)
- Navigate to War Room for that shock (auto-opens)
- Wait 3s, then auto-click "Run Simulation" on Action 1
- Wait 3s, navigate to Graph Explorer, trigger the shock ripple animation
- Wait 4s, navigate to Query, auto-type and submit "What should procurement do about the Hebei shutdown?"
- Loop back to Dashboard
Keyboard shortcuts (active globally, shown in a help modal on ? key):
Dβ DashboardAβ AlertsWβ War Room (most recent critical shock)Gβ Graph ExplorerQβ QuerySpaceβ trigger shock ripple on Graph page (if open)Sβ run simulation on War Room (if open)Escapeβ close any open panel
Demo Reset button: One click resets all simulation states, clears query history, and returns to Dashboard. Useful between judge demos.
Show a subtle keyboard shortcut hint bar at the bottom of each page (dismissible, only shown in DEMO_MODE).
---
## 10. Deployment
Set up production deployment for ShockMap. Stack: React 19 + Vite (frontend), FastAPI + Python (backend). I want to deploy cheaply and reliably for the hackathon demo.
Step 1: Docker Setup
Create backend/Dockerfile:
- Base:
python:3.11-slim - Install deps from
requirements.txt - Expose port 8000
- Start with:
uvicorn app.main:app --host 0.0.0.0 --port 8000 - Include a
.dockerignorethat excludes__pycache__,.env,venv,*.pyc
Create frontend/Dockerfile:
- Two-stage build: node:20-alpine for build, nginx:alpine for serve
- Build:
npm ci && npm run build - Copy
dist/to nginx html dir - Add
nginx.confthat: serves static files, proxies/api/βhttp://backend:8000/api/, handles React Router (try_files fallback to index.html)
Create docker-compose.yml at project root:
backendservice: build from./backend, env_file.env, ports8000:8000frontendservice: build from./frontend, ports80:80, depends_on backend- A shared network
shockmap-net
Step 2: Environment Config
Create backend/.env.example:
GEMINI_API_KEY=your_key_here
DEMO_MODE=true
ALLOWED_ORIGINS=http://localhost,https://your-domain.com
ENABLE_GNN=false
In the FastAPI app, load .env using python-dotenv. Add a startup check that logs which env vars are missing and continues with degraded mode (not crash).
Step 3: Railway Deployment (recommended for hackathon)
Create railway.toml at project root:
[build]
builder = "dockerfile"
[deploy]
startCommand = "uvicorn app.main:app --host 0.0.0.0 --port $PORT"
healthcheckPath = "/healthz"
healthcheckTimeout = 30
restartPolicyType = "on_failure"
Create railway-frontend.toml for the frontend service similarly.
Also create frontend/vercel.json for optional Vercel frontend deployment:
{
"rewrites": [
{"source": "/api/:path*", "destination": "https://your-railway-backend.up.railway.app/api/:path*"},
{"source": "/(.*)", "destination": "/index.html"}
]
}
Step 4: Health Check Endpoint
Ensure GET /healthz returns:
{
"status": "ok",
"demo_mode": true,
"engines": {"signal": "ok", "propagation": "ok", "action": "ok"},
"shocks_loaded": 6,
"timestamp": "2026-04-27T10:00:00Z"
}
Step 5: Production Build Check
Add a scripts/check_build.sh:
- Runs
npm run buildin frontend and checks for errors - Runs
python -c "from app.main import app"to check backend imports - Prints "β Build ready for deployment" or lists errors
Step 6: README Update
Update the root README.md to include:
- A "Deploy in 5 minutes" section with the Railway one-click instructions
- A "Demo credentials" section (if auth is added)
- Badges: build status, demo mode, license
- A GIF/screenshot placeholder section (add images later)
---
## Execution Order
Run these prompts in this sequence for best results:
1 β Design System (foundation, do first) 2 β Dashboard (first page judges see) 3 β Propagation Graph (the wow moment β most effort) 4 β War Room (core MVP value) 5 β Supply Map (visual depth) 8 β Bug Fixes (stability before showing anything else) 9 β Demo Mode (last before deployment) 10 β Deployment (final step) 6 β Query Interface (can be parallel with 5) 7 β Alerts Feed (can be parallel with 6)
---
## Rare Techniques Worth Mentioning to Judges
These are implemented in the prompts above but worth calling out explicitly during the demo:
| Technique | Where | Why It Impresses |
|---|---|---|
| **Personalized PageRank** | Engine 2 | Not just BFS β directional probabilistic influence flow |
| **Louvain Community Detection** | Engine 2 | Co-propagating cluster identification (graph theory) |
| **WebGL-rendered graph** (Sigma.js) | Graph Explorer | 60fps with hundreds of nodes β not a D3 toy |
| **Animated particle flow on edges** | Graph Explorer | Unique visual β shock literally "flows" through graph |
| **Schema-constrained Gemini output** | Engine 3 | Deterministic JSON from LLM β production-safe |
| **HHI concentration index** | Dashboard | Economic inequality metric applied to supply chains |
| **Propagation formula with decay** | Engine 2 | Physics-inspired: `R = PR * (1-S) * exp(-B/Ο) * C` |
| **Demo autopilot** | DemoController | Shows product thinking beyond just code |
---
*Built for Google Solution Challenge 2026 β Phase 1: ShockMap MVP*