A security-themed dashboard that fingerprints a website's technology stack and cross-checks it against real vulnerability data.
Built on a React admin template, with a working analyzer bolted on:
- Stack Analyzer (functional) — give it a URL; an Express backend fetches the page,
identifies frameworks and libraries from the HTML and response headers
(
TECH_SIGNATURES— React, Next.js, Vue, Angular, jQuery, WordPress, Laravel, Django, Express, Rails, …), then queries OSV.dev for known advisories on the detected packages and versions. - Hunter's Tips (optional) — a HuggingFace
Mistral-7B-Instructcall turns a finding into specific testing guidance. NeedsHF_KEY_*env vars; skipped if unset. - Global Threat Feed and Vulnerability Registry (static) — curated datasets in
src/data/*.ts(threats.ts,vulnerabilities.ts,stackTechs.ts) used to populate the UI. These are illustrative, not a live feed.
- Frontend — React 19, Vite, TypeScript, Tailwind, Framer Motion (admin template base)
- Backend — Express (
server/index.js), no database; an in-memory cache - External — OSV.dev API, HuggingFace Inference API
- Deploy — Vercel (
vercel.jsonbuilds the SPA and runsserver/as a serverless function)
npm install
# backend on :4000
node server/dev.js # or: node server/index.js
# frontend on :5173
npm run devThe frontend calls http://localhost:4000/api by default (see
src/pages/stack-analyzer/AnalysisOutput.tsx). Copy .env.example to .env and add
HuggingFace tokens if you want the AI tips.
src/
pages/
dashboard/ overview + live detect widget
stack-analyzer/ URL → tech fingerprint → OSV lookup
vulnerabilities/ registry view (static data)
authentication/ template auth screens
security-settings/
data/ curated threat / vuln / tech datasets
server/
index.js /detect, /analyze, /health + OSV integration
aiService.js HuggingFace Mistral wrapper (token rollover)
This started from a paid dashboard template, so a lot of the surrounding UI (mentors, tasks, avatars) is template scaffolding. The parts that are mine and actually work are the tech-fingerprint backend, the OSV integration, and the analyzer flow.