Classification
Relevant source files
The following files were used as context for generating this wiki page:
Classification in PRKS organizes research entities through hierarchical structures, metadata attributes, and relational grouping. It enables the system to categorize Works, People, and Research Network elements into navigable and searchable sets. The system implements classification via Folders, Tags, People Groups, and specific Document Types.
Sources: README.md:3-5, frontend/index.html:56-118
Core Classification Mechanisms
PRKS uses several distinct mechanisms to classify research data. Each mechanism serves a specific architectural role in the library structure.
Hierarchical Folders
Folders provide the primary container-based classification for Works. They support nesting, allowing you to create subfolders for granular organization.
Sources: README.md:16, frontend/index.html:438-456
Relational Tags
Tags allow for non-hierarchical, cross-cutting classification. They can carry an optional "domain color" for visual distinction in the UI.
Sources: README.md:16, frontend/index.html:105, tests/browser/design_system.html:260-264
People Groups
People Groups organize individuals into hierarchies (e.g., "Frankfurt School"). A person can belong to multiple groups simultaneously.
Sources: frontend/js/components/people.js:464-478, frontend/index.html:490-506
Document Types
Works are classified by doc_type to define their bibliographic nature. Common types include Article, Book, and Video.
Sources: frontend/index.html:362-372, frontend/js/components/people.js:641-654
Data Relationships
The following diagram illustrates how classification entities relate to core research objects.
UI Primitives for Classification
The system uses specific visual components to display classification metadata in a dense, information-first format.
Overview Summaries
The prks-page-summary and prks-state-summary classes render flat strips of classification data, such as "In Progress · Book · 3 tags".
Sources: frontend/js/overview-primitives.js:106-118, tests/browser/design_system.html:283-294
Visual Status Indicators
Status classification uses dot-based indicators to represent the lifecycle of a work or the state of a synchronization operation.
| Status Class | Visual Meaning | Context |
|---|---|---|
prks-status--success | Saved / Complete | Persistent storage confirmation |
prks-status--warning | Sync Conflict / Decision needed | Local-first collision |
prks-status--danger | Error | Operation failure |
prks-op-queued | Pending changes | Offline mutation queue |
Sources: tests/browser/design_system.html:298-310, frontend/js/components/people.js:63-103
Technical Implementation
Person Attribute Classification
People are classified using temporal data (birth/death dates) and external reference links.
Role Classification
Classification of People within the context of a Work is defined by roles. The system distinguishes between "Linked" (default) and specific roles like Author, Editor, or Translator.
Sources: frontend/index.html:71-83, frontend/js/components/people.js:779-803
Summary
Classification in PRKS is a multi-layered system that combines rigid hierarchies (Folders, People Groups) with flexible relational metadata (Tags, Roles). This architecture supports both the physical organization of files and the conceptual organization of research entities, powered by a local-first synchronization engine that preserves these classifications across offline sessions.
Sources: README.md:3-20, AGENTS.md:144-156