An interactive web application for exploring and analyzing retracted academic papers from Saudi Arabian universities. Built with Next.js, SQLite, Leaflet, and Recharts.
- Dashboard — Key statistics on Saudi university retractions with charts
- Interactive Map — Leaflet-based map with clustered markers for all Saudi universities
- University Search — FTS5-powered autocomplete search across 48 Saudi universities
- University Detail Pages — Per-university breakdown with:
- Retraction reasons (pie chart)
- Timeline (area chart)
- Subject distribution
- Top journals
- Full retraction table with author names, department affiliations, and reason badges
- Filtering — By reason category, date range, and sort order
- Retraction Watch Database (via Crossref) — ~69,000 retracted papers worldwide
- OpenAlex API — Institution geocoding and metadata enrichment
- Crossref API — Funding/grant verification
- University websites — Faculty position verification
- Next.js 14 (App Router, TypeScript)
- SQLite via better-sqlite3 (self-contained, no external DB needed)
- Leaflet.js via react-leaflet + react-leaflet-cluster
- Recharts for charts
- Tailwind CSS for styling
- Node.js 18+
- The SQLite database file (
data/retraction-explorer.db) — not included in the repo due to size
npm installTo build the database from scratch:
# 1. Initialize schema
npx tsx scripts/init-db.ts
# 2. Download Retraction Watch CSV
npx tsx scripts/download-csv.ts
# 3. Ingest CSV data
npx tsx scripts/ingest-csv.ts
# 4. Enrich with OpenAlex geocoding
npx tsx scripts/enrich-institutions.ts
# 5. Build university aggregation layer
node scripts/build-universities.js
# 6. Find and add any missing retractions
node scripts/add-missing-tabuk.js
node scripts/add-found-missing.jsnpm run devOpen http://localhost:3000.
src/
app/
api/ # API routes
saudi/ # Dashboard stats
search/ # University search
map-data/ # Map markers
universities/[id]/ # University detail + retractions
search/ # Search page
map/ # Map page
university/[id]/ # University detail page
components/
Dashboard.tsx # Main dashboard
map/ # Map components (RetractionMap, MapFilters, etc.)
ui/ # Shared UI (SearchBar, charts)
university/ # UniversityRetractionTable
lib/
db.ts # SQLite connection
queries/
saudi.ts # All Saudi-focused queries
institutions.ts # General institution queries
scripts/ # Data ingestion and analysis scripts
data/ # SQLite database (gitignored)
- 48 universities mapped with name pattern matching
- 2,200+ retractions linked to universities (81% coverage of Saudi retractions)
- Remaining ~500 are from hospitals, government agencies, and non-university research centers
MIT