Self-hosted academic publication tracker. Track Google Scholar profiles, discover new papers automatically, resolve open-access PDFs, and stay on top of the literature you care about.
Find a file
2026-02-21 17:35:03 +01:00
.github/workflows Big changes 2026-02-21 17:33:05 +01:00
alembic Big changes 2026-02-21 17:33:05 +01:00
app Big changes 2026-02-21 17:33:05 +01:00
docs Big changes 2026-02-21 17:33:05 +01:00
frontend Big changes 2026-02-21 17:33:05 +01:00
scripts Big changes 2026-02-21 17:33:05 +01:00
tests Big changes 2026-02-21 17:33:05 +01:00
website Big changes 2026-02-21 17:33:05 +01:00
.dockerignore streamlined 2026-02-17 21:59:41 +01:00
.env.example Big changes 2026-02-21 17:33:05 +01:00
.gitignore Big changes 2026-02-21 17:33:05 +01:00
.python-version First product 2026-02-17 14:51:25 +01:00
agents.md Big changes 2026-02-21 17:33:05 +01:00
alembic.ini First product 2026-02-17 14:51:25 +01:00
docker-compose.dev.yml test 2026-02-17 20:24:12 +01:00
docker-compose.yml arden scrape safety telemetry and polish run state UX 2026-02-19 21:59:36 +01:00
Dockerfile test 2026-02-17 20:24:12 +01:00
pyproject.toml harden domain architecture and add lazy Crossref+Unpaywall PDF enrichment with publications workspace refactor 2026-02-20 22:56:52 +01:00
README.md Big changes 2026-02-21 17:33:05 +01:00
uv.lock harden domain architecture and add lazy Crossref+Unpaywall PDF enrichment with publications workspace refactor 2026-02-20 22:56:52 +01:00

scholarr

Self-hosted scholar tracking with a single app image (API + frontend).

CI Docker Pulls Docker Image

Quick Start

  1. Copy env template:
cp .env.example .env
  1. Set required values in .env:
  • POSTGRES_PASSWORD
  • SESSION_SECRET_KEY
  1. Start stack:
docker compose pull
docker compose up -d

Open:

  • App/API: http://localhost:8000
  • Health: http://localhost:8000/healthz

Documentation

Primary docs live under docs/.

  • Index: docs/README.md
  • Deploy and dev workflow: docs/deploy/quickstart.md
  • Environment reference: docs/reference/environment.md
  • API contract and payload conventions: docs/reference/api_contract.md
  • Architecture and domain boundaries: docs/architecture/domain_boundaries.md
  • Scrape safety runbook: docs/ops/scrape_safety_runbook.md
  • DB backup/restore/integrity runbook: docs/ops/db_runbook.md
  • Migration rollout checklist: docs/ops/migration_checklist.md
  • Frontend theme inventory: docs/frontend/theme_phase0_inventory.md
  • Contributing policy: docs/contributing.md

Docs Site (Docusaurus)

Docusaurus source lives in website/ and consumes markdown from docs/.

Local build:

cd website
npm install
npm run build

GitHub Pages deploy is automated via .github/workflows/docs-pages.yml.

Quality Gates

Backend:

docker compose -f docker-compose.yml -f docker-compose.dev.yml run --rm app uv run pytest tests/unit
docker compose -f docker-compose.yml -f docker-compose.dev.yml run --rm app uv run pytest -m integration

Frontend:

cd frontend
npm install
npm run typecheck
npm run test:run
npm run build

Contract and env checks:

python3 scripts/check_frontend_api_contract.py
python3 scripts/check_env_contract.py
./scripts/check_no_generated_artifacts.sh