{"id":38535893,"url":"https://github.com/safe-graph/paper_dashboard","last_synced_at":"2026-01-17T07:01:49.627Z","repository":{"id":329667436,"uuid":"1112812971","full_name":"safe-graph/paper_dashboard","owner":"safe-graph","description":null,"archived":false,"fork":false,"pushed_at":"2025-12-25T03:25:49.000Z","size":182,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-26T17:11:28.935Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/safe-graph.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-09T06:12:22.000Z","updated_at":"2025-12-25T03:25:53.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/safe-graph/paper_dashboard","commit_stats":null,"previous_names":["yingtongdou/paper_dashboard","safe-graph/paper_dashboard"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/safe-graph/paper_dashboard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/safe-graph%2Fpaper_dashboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/safe-graph%2Fpaper_dashboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/safe-graph%2Fpaper_dashboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/safe-graph%2Fpaper_dashboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/safe-graph","download_url":"https://codeload.github.com/safe-graph/paper_dashboard/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/safe-graph%2Fpaper_dashboard/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28503021,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T06:57:29.758Z","status":"ssl_error","status_checked_at":"2026-01-17T06:56:03.931Z","response_time":85,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-17T07:01:49.366Z","updated_at":"2026-01-17T07:01:49.595Z","avatar_url":"https://github.com/safe-graph.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Paper Dashboard\n\nStatic dashboard that summarizes graph/transformer fraud \u0026 anomaly detection papers from [`safe-graph/graph-fraud-detection-papers`](https://github.com/safe-graph/graph-fraud-detection-papers). The build script pulls the upstream list, extracts the tables, computes trends, and renders an interactive page for GitHub Pages.\n\n## Features\n- Pulls the latest paper list and parses every table row into structured data (year, venue, links, category/section).\n- Computes year, venue, topic, and category distributions plus code availability and GitHub language stats (when code links point to GitHub).\n- Optionally pulls citation counts (OpenAlex) to rank top cited papers.\n- Generates a static `site/index.html` with Plotly charts, a searchable/sortable table (Grid.js), and resource links (toolboxes, datasets, surveys).\n- GitHub Actions workflow auto-builds on push, schedule, or repository dispatch and deploys to GitHub Pages.\n\n## Quick start (local)\n```bash\npython -m venv .venv\nsource .venv/bin/activate\npip install -r requirements.txt\n\n# generate data.json for the SPA\npython scripts/build_dashboard.py --paper-repo-dir tmp_papers_repo --output-dir frontend/public --skip-code-fetch --json-only\n\n# build Svelte + ECharts SPA into frontend/dist\ncd frontend \u0026\u0026 npm install \u0026\u0026 npm run build\n# open frontend/dist/index.html in a browser\n```\n- Omit `--skip-code-fetch` to query GitHub for stars/languages (set `GITHUB_TOKEN` to avoid rate limits).\n- Citation counts come from OpenAlex; set `OPENALEX_EMAIL` (polite usage) or add `--skip-citations` to avoid API calls.\n- Add `--skip-sync` to reuse a pre-cloned paper repo without pulling.\n- The script clones the paper list into `data/papers_repo` by default; override with `--paper-repo-dir` if desired.\n\n### Frontend stack\n- Svelte + Vite SPA in `frontend/` with ECharts visuals and a dark-themed table.\n- Data is pulled from `data.json` emitted by the Python pipeline (placed in `frontend/public` before building).\n\n## Deploying to GitHub Pages\n1. Enable Pages in repo settings with source: GitHub Actions.\n2. Push to `main` (or run the workflow manually). The workflow now:\n   - Runs the Python pipeline to emit `frontend/public/data.json`\n   - Installs Node deps and builds the SPA into `frontend/dist`\n   - Publishes `frontend/dist` to Pages\n\n## Updating when the paper repo changes\n- The workflow triggers on a nightly schedule and on `repository_dispatch` with type `paper-repo-updated`.\n- To refresh immediately after the upstream repo changes, trigger a dispatch:\n  ```bash\n  curl -X POST \\\n    -H \"Authorization: token \u003cYOUR_PAT\u003e\" \\\n    -H \"Accept: application/vnd.github.everest-preview+json\" \\\n    https://api.github.com/repos/\u003cYOUR_ACCOUNT\u003e/\u003cTHIS_REPO\u003e/dispatches \\\n    -d '{\"event_type\": \"paper-repo-updated\"}'\n  ```\n- You can also set up a webhook or action in `safe-graph/graph-fraud-detection-papers` that sends this dispatch.\n\n## Project layout\n- `scripts/build_dashboard.py` – orchestrates cloning, parsing, analysis, and rendering.\n- `paper_dashboard/parser.py` – markdown table parser for the upstream README.\n- `paper_dashboard/analysis.py` – stats, topic extraction, insights.\n- `paper_dashboard/code_repos.py` – optional GitHub metadata and language aggregation.\n- `templates/index.html.j2` – HTML/JS template for the dashboard.\n- `site/` – generated static site (ignored from git).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsafe-graph%2Fpaper_dashboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsafe-graph%2Fpaper_dashboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsafe-graph%2Fpaper_dashboard/lists"}