Skip to content

AshGreyG/Obsino

Repository files navigation

Obsino

build status Typst Nix MIT

Rule

✨ Features

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

🔮 Authoring Knowledge

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 content field
  • 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 related field

❄️ Build

Enter the development shell

nix develop

Provides cue, yq, typst, and typstyle.

Export a single concept to PDF

make single-export FILE=concept/alpha-helix.cue

Export a property from a CUE package

make package-export PACKAGE=natural-science.biology.biochemistry TARGET=alpha_helix

Generate a handbook

make handbook

Scans all subdirectories in the current module and assembles one comprehensive PDF.

Build all handbooks

nix run .#handbook

Outputs to build/.

Clean

nix run .#clean       # clean all build artifacts
make clean            # clean PDFs in current directory

Status

nix run .#status      # check the status of project

♻️ CI

  • A nightly GitHub Action builds all handbooks and publishes them as a latest build.
  • A status Github Action embeds the status to README.md.

📝 License

Copyright © 2026 AshGrey.
This project is MIT licensed.

About

🔮 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.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages