Obsino is a digital knowledge tree โ a structured personal knowledge base organized by academic discipline. Knowledge is authored in CUE files with Typst markup and compiled into PDF handbooks.
Each subject directory is a CUE module. Within each module, content is organized into:
| Category | Purpose | Examples |
|---|---|---|
concept/ |
Fundamental concepts | alpha-helix, peptide-bond, torque |
principle/ |
Experimental principles or methods | gel-electrophoresis |
phenomenon/ |
Observed phenomena | protein refolding |
specific/ |
Specific case studies | structure-of-collagen, mass-center-of-semicircle |
law/ |
Physical or mathematical laws | conservation-of-momentum-law, impulse-momentum-theorem |
proof/ |
Formal proofs | proof-impulse-momentum-theorem |
desire/ |
Motivation or "why this matters" | invariant-tensor |
Knowledge entries are CUE files conforming to the schema in schema.cue:
#KnowledgeStructure: {
content: string
// Main body text for a concept or principle. Usually a raw string; may include
// other properties.
related?: [...string]
// Related concepts/principles within the same handbook. Rendered as #link in
// Typst.
external_related?: [...string]
// Related concepts/principles in external handbooks. Cannot use #link since
// it targets a PDF page.
external_link?: [...string]
// External resources such as papers or websites.
[=~"^figure_part"]: string
// Embed figures (e.g., `figure_part_test`) from the assets directory into
// content.
[=~"^code_part"]: string
// Embed code blocks (e.g., `code_part_evaluating_expression`) from the src
// directory into content
}- Content: Written in Typst markup inside the
contentfield - Figures: Typst figure code in
figure_part_*fields (embedded via#""raw strings) - Code Blocks: Typst code blocks in
code_part_*fields - Assets: SVG/PNG files in an
assets/subdirectory - Cross-references: Array of related concept paths in the
relatedfield
Enter the development shell
nix developProvides cue, yq, typst, and typstyle.
Export a single concept to PDF
make single-export FILE=concept/alpha-helix.cueExport a property from a CUE package
make package-export PACKAGE=natural-science.biology.biochemistry TARGET=alpha_helixGenerate a handbook
make handbookScans all subdirectories in the current module and assembles one comprehensive PDF.
Build all handbooks
nix run .#handbookOutputs to build/.
Clean
nix run .#clean # clean all build artifacts
make clean # clean PDFs in current directoryStatus
nix run .#status # check the status of project- A nightly GitHub Action builds all handbooks and publishes them as a pre-release.
- A status Github Action embeds the status to README.md.