A non-linear writing instrument.
  • Rust 90.5%
  • HTML 4.4%
  • CSS 2.7%
  • Shell 1.8%
  • Nix 0.6%
Find a file
2026-01-05 13:52:26 -03:00
.forgejo/workflows Fetch CI tooling directly from releases 2025-12-28 06:27:06 -03:00
docs/development Update CI dev docs and tooling versions script 2025-12-28 07:11:14 -03:00
src Move tests to corresponding context parsing modules 2026-01-05 13:52:26 -03:00
static Reduce the size of label text 2026-01-05 00:49:13 -03:00
templates Make oblique text more noticeable 2026-01-01 23:02:01 -03:00
tests/mocks Add an empty file to mocks/no_graph so it exists in CI 2025-12-26 00:26:02 -03:00
.clippy.toml Minor linting tweaks 2026-01-05 13:20:48 -03:00
.gitignore Here goes something 2025-12-09 18:28:39 -03:00
.justfile Reorder justfile quick-assess recipes with tests on top 2026-01-05 11:11:11 -03:00
.rustfmt.toml Setup and apply formatting 2025-12-12 01:59:48 -03:00
Cargo.lock Concentrate configuration content parsing in syntax::serial 2025-12-28 06:27:30 -03:00
Cargo.toml Minor linting tweaks 2026-01-05 13:20:48 -03:00
LICENSE Here goes something 2025-12-09 18:28:39 -03:00
README.md Update roadmap 2026-01-04 19:31:54 -03:00

en

en is a tool to write non-linear, connected pieces of text and have their references mapped out as a graph of connected information.

It works by ingesting a TOML file containing your node specification and serving it as a website that allows nodes to be browsed, searched and listed in relation to each other or as a shallow tree of nodes.

Learn more

You can learn more and see what en looks like by visiting the homepage, which is rendered using en itself.

Roadmap

  • Add tests
    • Improve content syntax parser coverage
  • Redirects
  • Strip/render some syntax in Tree text preview
  • Drop-down navigation
  • Meta-awareness
    • Detached edges
    • Most linked to nodes
    • Most linked from nodes
    • Most linked to nonexistent nodes
    • Most linked
  • Special sections
    • Definition (implies metadata has_definition)
    • See also (implies a kind of connection, e.g. related)
    • Not to be confused with (implies a kind of connection)
    • Contrast with (implies a kind of connection)
    • Example (implies metadata has_example)
    • References/influences (implies metadata has_references)
  • Sorting of tree, index list and drop-down navigation
    • Alphabetic
    • By most linked to
  • Anchors and connections
    • Render detached anchors differently
    • Suffix-aware anchors
      • Plural anchors (|node|s -> node)
      • Ignore trailing punctuation
      • Conjugation anchors (|will|ed -> will)
      • Configurable suffixes
    • Spaced node anchor (|red fox| -> redfox -> RedFox)
    • Automatic connections from anchors
    • # syntax for header ID anchors
    • Connection kinds
      • Mutual
      • Category <-> Membership
      • Opposite <-> Equivalent
      • Contrast <-> Similar
      • Cognate <-> Unrelated
      • Specialization <-> Generalization
      • Custom connection kinds
    • External anchors
  • Richer text formatting
    • Nested formatting
    • Headers
    • Preformatted blocks
    • Oblique,
    • Underline
    • Strikethrough
    • Bold
    • Inline code
    • Lists
    • Checkboxes
      • Move this roadmap to en
  • Full-text search
  • Begin centralizing state
  • Reduce O(n) calls in the formats module
  • Alternative rendering modes
    • Render to filesystem
    • Single-page rendering
  • Input formats
    • Multi-file graphs
    • Multi-graph
  • Themes
  • Array syntax for lightweight connections
  • Automatic IDs
  • Automatic titles
  • Mismatch between TOML ID and provided ID