factcircuit
FactCircuit는 불변 출처와 단계별 검증, 제한된 검색, 재현 가능한 평가를 제공하는 감사 가능한 주장·증거 검증 루프입니다
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Open-source bibliometric analysis platform for medical education research. Search PubMed & OpenAlex, analyze trends, visualize networks, export PRISMA-compliant methodology logs.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
BibMedEd
Open-Source Bibliometric Analysis Platform for Medical Education
Systematic bibliometric reviews currently require stitching together PubMed search, Covidence, VOSviewer, CiteSpace, and Excel — four tools, manual deduplication, and a methodology section that's painful to reconstruct. BibMedEd is one application that does all of it, self-hosts with one command, and exports a citable PRISMA-ready methodology log of every step it took.
New here? Read Why BibMedEd vs Covidence / VOSviewer / Bibliometrix for an honest capability comparison, or jump into the end-to-end case study.README 전문 보기 ↗Systematic bibliometric reviews currently require stitching together PubMed search, Covidence, VOSviewer, CiteSpace, and Excel — four tools, manual deduplication, and a methodology section that's painful to reconstruct. BibMedEd is one application that does all of it, self-hosts with one command, and exports a citable PRISMA-ready methodology log of every step it took.
New here? Read Why BibMedEd vs Covidence / VOSviewer / Bibliometrix for an honest capability comparison, or jump into the end-to-end case study.
.txt for your Methods section.zip bundle of all six/openapi.json, interactive Swagger UI at /docs, ReDoc at /redoc. Analysis responses carry a schema_version field for downstream pinning.docker compose up on any lab server, no cloud account neededbibmeded search --dry-run┌─────────────────────┐ ┌─────────────────────┐ ┌──────────────┐
│ Frontend (Next.js) │◄───►│ Backend (FastAPI) │◄───►│ PostgreSQL │
│ │ │ │ └──────────────┘
│ - Search UI │ │ - REST API │
│ - Dashboard │ │ - Adapter Registry │ ┌──────────────┐
│ - D3.js Networks │ │ - Analysis Engine │◄───►│ Redis │
│ - Export Manager │ │ - Export Service │ └──────────────┘
└─────────────────────┘ └─────────────────────┘ │
┌──────────────┐
│Celery Workers│
│- Search │
│- Analysis │
└──────────────┘
git clone https://github.com/ata381/BibMedEd
cd BibMedEd/bibmeded
docker compose up
Open http://localhost:3000. That's it.
Just want to look around? Run the disposable, read-only local demo (SQLite, no Postgres or Redis) from bibmeded/: docker compose -f docker-compose.demo.yml up --build, then open http://localhost:3100.
Choose Explore sample project on the empty workspace to open a fully populated,
clearly labeled synthetic corpus without making any external API calls.
The sample behaves like a normal editable project: your changes persist, and deleting
it before choosing Explore sample project again restores the bundled dataset.
A sample project created by an earlier version receives the bundled search strategy
when the database is migrated (alembic upgrade head, which the Docker entrypoint runs)
or the next time you choose Explore sample project; searches you ran yourself are untouched.
Optional: Create a free NCBI API key and add it to
.envasBIBMEDED_PUBMED_API_KEY=your_key. BibMedEd then queries PubMed at 10 req/s instead of 3 req/s;BIBMEDED_PUBMED_RATE_LIMIToverrides the rate. Lens.org searches require a Lens Scholarly API token inBIBMEDED_LENS_API_KEY.
CLI only, no Docker: pip install bibmeded (Python 3.12+, PyPI), then bibmeded search "medical education" --dry-run to estimate result counts from a terminal or notebook. See Scripting.
See the full Self-Hosting Guide for configuration, reset, and dev setup. Stuck on a port clash, a PubMed rate limit, a missing Lens key or a search that never starts? See Troubleshooting & FAQ.
The Blueprint provisions PostgreSQL, Redis, FastAPI, Celery, and the Next.js frontend on Render.com's free tier. The frontend-to-API wiring of this one-click path has not yet been verified end to end; see #93 before relying on it.
Security model: BibMedEd has no built-in authentication. It is a single-tenant tool meant for one research team, and every API endpoint trusts the numeric ID in the URL with no notion of an "owner" — there is no login, no per-project access control, nothing. The one-click deploy above provisions a publicly reachable
*.onrender.comURL with zero credentials required, so anyone who has (or guesses) that link can list every project, export or bulk-edit their data, or delete them. Read the Security model section of the Self-Hosting Guide before deploying publicly, and put an IP allowlist or auth proxy in front — or just keep it onlocalhost/ a private network, which is how BibMedEd is designed to be run.
Adding a bibliographic database starts with one focused Python module; richer APIs need more mapping and pagination code:
from bibmeded.adapters.base import BaseSourceAdapter, RawRecord, SearchResponse
class ScopusAdapter(BaseSourceAdapter):
name = "scopus"
display_name = "Scopus"
requires_api_key = True
async def search(self, query, **kwargs) -> SearchResponse:
# Hit Scopus API, return IDs + count
...
async def fetch(self, ids) -> list[RawRecord]:
# Map Scopus JSON to RawRecord
...
Drop it in bibmeded/adapters/, restart the worker, and it appears in the search UI automatically. The adapter registry handles discovery, and cross-database deduplication works via the external_ids field.
See the full Writing Adapters guide with RawRecord field reference and an annotated OpenAlex walkthrough.
Want to help shape BibMedEd?
Looking for a first task? Pick an open item from GOOD_FIRST_ISSUES.md, comment on its issue, and ask to be assigned.
| Layer | Technology |
|---|---|
| Frontend | Next.js 16, React 19, D3.js, Tailwind CSS |
| Backend | FastAPI, SQLAlchemy 2.0, Pydantic |
| Workers | Celery with Redis broker |
| Database | PostgreSQL 16 |
| Analysis | NetworkX, scikit-learn, scipy |
| Deployment | Docker Compose, Render.com Blueprint |
If you use BibMedEd in your research, please cite:
@software{bibmeded,
title = {BibMedEd: Bibliometric Analysis Platform for Medical Education},
author = {Akillioglu, Ata},
year = {2026},
doi = {10.5281/zenodo.20404321},
url = {https://doi.org/10.5281/zenodo.20404321},
note = {Concept DOI — resolves to latest version. For a specific release, see Zenodo.}
}
Contributions are warmly welcome. A focused adapter is often the fastest path to a high-impact first PR; complete submissions include fixture-based tests and source-specific documentation.
GOOD_FIRST_ISSUES.md.docs/ auto-deploy to GitHub Pages on merge.By contributing you agree to abide by our Code of Conduct. Security issues should be reported via the process in SECURITY.md.
Thank you to everyone who has shipped code to BibMedEd:
| Contributor | Contribution |
|---|---|
| @BaygeldiAza | Dry-run and full CLI search pipeline (#46, #52) |
| @landon-personal | CLI source and network error handling (#50) |
| @DYNOSuprovo | bibmeded sources command (#71) |
| @Sandro850 | bibmeded --version (#72) |
MIT — use it freely in academic and commercial projects.