Focal is a Rust workspace for tools that organize messy context into structured ideas and help focus attention on the most important and impactful parts.
The project stores ideas as a local graph. Ideas can be added, linked, updated, traversed, and inspected through storage backends that share the same core model.
This repository is organized as a Cargo workspace:
crates/focal_types: Shared graph types and errors.crates/focal_fs: Filesystem-backed idea graph library.crates/focal_sqlite: SQLite-backed idea graph library.spec/SPEC.md: Behavioral specification and test traceability for the current library.
focal-types defines the shared node, traversal, index, and error types used by Focal storage backends.
focal-fs stores idea graphs on disk using folders, Markdown files, and symbolic links for local, human-readable workflows.
focal-sqlite stores idea graphs in named SQLite namespaces using a caller-provided rusqlite::Connection.
Run the full test suite:
cargo testFormat the workspace:
cargo fmtCheck the workspace:
cargo check