Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Open RPM

🧠 Open RPM — Raven's Progressive Matrices

Beautiful, private, client-side IQ test.
Vanilla JS • No tracking • 60 matrices • Results in seconds

GitHub GPLv3 JS Privacy Fonts

🔗 Repo: github.com/Xeven777/OpenRpm
🚀 Live: https://xeven777.github.io/OpenRpm/ (after Pages enable)


✨ Features

  • 🧠 True Raven's 60 — 5 series A-E ( A/B 6 options, C/D/E 8 options ), 20-minute timer with visual countdown
  • 🎂 Age-fair scoring14-15 · 16-17 · 18-30 (peak) · 31-3556+ with correction finalIQ = round(baseIQ*100/agePercent) — fair for teens & older adults
  • 📊 IQ + Percentile — cubic spline raw → baseIQ (30→82, 40→95, 50→110) + normal CDF (118 → 88th percentile)
  • 📈 Beautiful results — hero Instrument Serif IQ, bell curve (55-145) with your marker + 5-axis radar A-E (solid = you, dashed = expected)
  • 🔗 Share & PDF — one-tap Share + Download PDF / print
  • Fast & smooth — parallel preload, instant image swap, no framework
  • ⌨️ Keyboard & a11y1-8 to answer, ←/→ + Enter to navigate, button[role=radio] + focus-visible
  • 💾 Resilient — auto-saves to localStorage, resume modal if you refresh (24h)
  • 🔤 Polished typeInter + Instrument Serif via Google Fonts, dark premium UI
  • 🔒 Private — 100% local, no server, no tracking
  • 🌐 English — clean single-language bundle

🧩 How it works

Start screen

  1. Pick ageAge 18-30 is peak (100), teens 14-15/16-17 get small boost, 56+ gets +42% (70 denominator)
  2. 20 min, 60 matrices — 5 series A-E (A/B 6 options, C/D/E 8 options). Progress: Question 7 of 60 (Series B) + thin timer bar (white → orange → red)
  3. Scoring:
    // script.js:121, 590
    baseIQ = splineInterpolate(rawScore) // 0→0, 30→82, 40→95, 50→110, 60→140
    finalIQ = Math.round(baseIQ * 100 / agePercent)
    percentile = normalCDF((finalIQ-100)/15) // 118 → 88th

Test screen

  1. Reliability — compares each series A-E vs NORMATIVE_DISTRIBUTION (script.js:8). If Series A deviation ≤ -3 or >2 series deviate >2 → flagged as unreliable / attention drift.

🎨 Stack

  • No frameworkindex.html + style.css + script.js + answers.js (base64) + translations.js
  • 66 SVGs in images/1.svg…60.svg (potrace)
  • Fonts via CDN — no local fonts/ubuntu.ttf needed
  • Storageraven_age, raven_progress_v1 in localStorage

📁 Structure

.
├── index.html        # single page — intro / test / results-v2
├── style.css         # Inter + dark tokens + radar/bell styles + print
├── script.js         # RavenApp, spline, preload×6, keyboard, radar/bell SVG
├── translations.js   # en only (age_14_15 etc.)
├── answers.js        # base64 answer key
├── images/1.svg…60.svg
└── favicon/

📖 Docs

Scoring & norms from the clinical manual:


🤝 Contributing

PRs welcome!


📜 License

GPLv3+ — see LICENSE. Share, fork, improve. 💚

Made with 🧠 + ☕ by Xeven

About

Clean, minimal Raven's age-fair IQ test, with bell curve + radar results. 100% local, no tracking

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages