Dashboard repository for exploring journal-level records from the DOAJ public data dump (CSV), refreshed hourly.
This project builds and publishes a public dashboard that helps users discover and analyze DOAJ journal metadata with:
- summary KPIs (journals, countries, articles, languages, no APC),
- interactive filters,
- charts (countries, continents, subjects, licenses, peer-review, preservation, deposit policy, open publishing programs, publisher sectors, timeline, APC insights),
- map visualization by publisher country, with continent totals shown in the legend,
- paginated journal table with search and sorting.
The dashboard is designed for GitHub Pages and uses static JSON files generated from the DOAJ CSV dump.
- Source: DOAJ public CSV dump
https://doaj.org/csv - Data update cadence: hourly (automated via GitHub Actions).
- Data license from source: CC0 (DOAJ public data dump).
docs/index.html
Main dashboard application (HTML/CSS/JS).docs/data/journals.json
Normalized journal records used by the dashboard.docs/data/aggregates.json
Precomputed aggregates for summary/meta use.docs/data/meta.json
Source and fetch metadata.scripts/fetch_journals.py
CSV fetch + normalization script..github/workflows/fetch-journals.yml
Hourly data refresh workflow..github/workflows/deploy-pages.yml
GitHub Pages deployment workflow..github/workflows/backup-repository.yml
Scheduled/manual backup workflow (zip + git bundle artifact).
fetch-journals.ymlruns hourly (and can be run manually).- It executes
python scripts/fetch_journals.py. - Script downloads DOAJ CSV and writes:
docs/data/journals.jsondocs/data/aggregates.jsondocs/data/meta.json
- If files changed, workflow commits
docs/data/*tomain. deploy-pages.ymlpublishesdocs/to GitHub Pages.
- Open the published dashboard page.
- Use left-side filters and journal table controls.
- Use APC chart controls:
- Continent selector
- Currency selector (EUR/USD)
- Journal table APC column and APC chart update based on selected currency.
- Map legend and all charts update against the current filtered dataset.
python3 scripts/fetch_journals.pyOptional source override:
DOAJ_CSV_URL="https://doaj.org/csv" python3 scripts/fetch_journals.pyFrom repository root:
python3 -m http.server 8000Open:
http://localhost:8000/docs/
- Actions:
- Allow workflows
- Workflow permissions: Read and write
- Pages:
- Source: GitHub Actions
- Run
Fetch DOAJ journals (hourly)to refresh data now. - Run
Deploy dashboard to GitHub Pagesto publish now. - Run
Backup DOAJ repositoryto generate backup artifacts now.
The backup workflow uploads artifacts:
- snapshot zip (tracked files at current HEAD),
- full history git bundle (
.bundle) + metadata text file.
To restore history from bundle:
git clone <bundle-file-path> restored-repo- This project currently uses the CSV source only (no DOAJ API key needed).
- The
Publisher sector (inferred)chart is heuristic and based on publisher-name pattern matching, so treat it as approximate rather than authoritative. - Exchange rates for APC conversion are loaded live in the browser when the page opens.
- Primary: Frankfurter API (
https://www.frankfurter.app/) - Fallback: open.er-api.com (
https://open.er-api.com/)
- Primary: Frankfurter API (
- If data appears stale, re-run fetch and deploy workflows, then refresh the page.
This repository uses dual licensing:
-
Code (
scripts/**,.github/workflows/**, code indocs/index.html):
PolyForm Noncommercial 1.0.0
https://polyformproject.org/licenses/noncommercial/1.0.0/
SeeLICENSE-CODE.md -
Content/documentation (including this README and narrative UI text):
CC BY-NC-SA 4.0
https://creativecommons.org/licenses/by-nc-sa/4.0/
SeeLICENSE-CONTENT.md -
Source dataset in
docs/data/**is derived from DOAJ public dump (CC0):
https://doaj.org/docs/public-data-dump/
https://creativecommons.org/publicdomain/zero/1.0/
For repository-wide details, see LICENSE.