PACS is a localhost-only undergraduate research desk for preserving permitted thesis PDFs, reviewing extracted research evidence, searching verified content, building a traceable analytical data mart, finding explainable study relationships, and running a small domain-specific query language called PQL.
The source thesis is always authoritative. PACS does not invent missing fields, prove a research gap, grade work, approve titles, or replace academic judgment.
- Web development: a React/Vite research repository served by a local Express API.
- Data mining: evidence-segment SQLite FTS5/BM25, corpus-wide TF-IDF/cosine similarity, versioned phrase continuity, frequencies, co-occurrence, and trends.
- Data warehousing: a separately migrated SQLite analytical database populated only from eligible verified evidence through logged, reconciled ETL runs with a visible run ledger.
- Compiler and interpreter: PQL follows lexer → parser → AST → semantic validation → whitelisted plan → prepared execution, with bounded complexity and a local saved-query library.
- Academic continuity: related-study and recurring-evidence views remain linked to source excerpts/pages and are labeled as candidate evidence, not proven gaps.
- Evaluation: the offline workbench freezes a corpus revision and records raw rankings, Precision@K numerators, corpus/algorithm fingerprints, and ignored JSON/CSV artifacts.
Normal operation has no cloud, CDN, external API, OCR, model, or Internet dependency. PACS binds to 127.0.0.1 and stores its databases and PDFs locally.
- Windows 10/11
- Node.js
>=24.15 <25(officialnode:sqliteis used) - npm included with Node.js
- A modern local browser
The design is intentionally conservative for a 4 GB RAM/Pentium-class laptop, but that target-device performance is not verified until it is measured on that device.
From PowerShell in the repository root:
Copy-Item .env.example .env
npm ci
npm run db:migrate
npm run devOpen http://127.0.0.1:4317. Keep the terminal open while PACS is running. The development server is for implementation work; use the launcher below for the defense/offline build.
Place exactly 12 permitted, searchable PDF fixtures in storage/demo-fixtures/. Do not place confidential or real institutional theses in Git.
npm run setup:demoThe setup command migrates both databases and imports the fixture set through the normal ingestion boundary. It is idempotent: an already imported fixture is reconciled instead of duplicated. See Demo guide for the expected evidence-state workflow.
npm run verifyThe full verifier checks the supported Node version, lint, TypeScript, unit/integration tests, production build, localhost health, and source safeguards. It uses temporary databases and storage; it must not alter the user's corpus.
Individual commands:
npm run lint
npm run typecheck
npm test
npm run build
npm run benchmarkPassing automated checks demonstrates only the behaviors covered by those checks. Browser walkthrough, Wi-Fi-disconnected operation, Windows launcher behavior, restore drills, real-corpus evaluation, target-device performance, and remote publication must be reported separately.
.\start-pacs.cmdThe launcher forces loopback binding, builds when necessary, opens the local URL, and keeps the server attached to its terminal. Press Ctrl+C to stop it.
Maintenance commands:
npm run db:migrate
npm run fts:repair
npm run benchmarkRuntime state:
data/pacs.db operational evidence and review history
data/pacs_warehouse.db analytical snapshot and ETL audit data
storage/theses/ copied source PDFs
backups/ local backup sets and restore safety copies
These locations are ignored by Git. Never commit real theses, databases, backups, or locally extracted research text.
Create backups from the PACS Backup/Settings screen before risky maintenance. Stop PACS before restoring. Then run:
.\restore-pacs.ps1 -BackupPath .\backups\<backup-folder>The restore script validates the manifest and checksums, rejects paths outside the project, creates a pre-restore safety copy, and rolls back if copying fails. Full procedure: Security and offline operations.
Validate a backup without changing runtime files:
.\restore-pacs.ps1 -BackupPath .\backups\<backup-folder> -ValidateOnly- Architecture
- Data dictionary
- PQL language guide
- Evaluation protocol
- Evaluation judgment template
- Defense/demo guide
- Security and offline operations
- Figma handoff
PACS expects already prepared PDFs. It does not scan paper, capture camera images, run OCR, perform plagiarism detection, call an LLM, or support LAN/multi-user/cloud deployment. Findings from a 20–30 document prototype corpus must not be generalized to the institution without a separately justified study design.