Lineweaver is local-first, infinite-canvas spatial note-taking tool. Organize informations into an interconnected system.
Lineweaver/
│
├── .vscode/
│ └── tasks.json # VS Code compilation task shortcut (Ctrl+Shift+B)
│
├── src/
│ └── main.cpp # Core application entry-point and window loop
│
├── thirdparty/
│ ├── imgui/ # Git Submodule: Dear ImGui (docking branch)
│ ├── imnodes/ # Git Submodule: Nelarius/imnodes
│ └── sdl/ # Git Submodule: libsdl-org/SDL (SDL3 static target)
│
└── CMakeLists.txt # Consolidated root CMake build configuration
Because this project pulls down entire source trees to compile everything statically, make sure you clone the main repository and initialize all structural dependencies cleanly:
# Clone your repository
git clone <tbd. later> Lineweaver
cd Lineweaver
# Initialize the submodules sequentially to bypass Git CLI limitations
git submodule add -b docking https://github.com/ocornut/imgui.git thirdparty/imgui
git submodule add https://github.com/Nelarius/imnodes.git thirdparty/imnodes
git submodule add https://github.com/libsdl-org/SDL.git thirdparty/sdl
# Pull down and initialize all nested code recursively
git submodule update --init --recursive
Ensure you have CMake (3.20+) and a C++20 compatible compiler installed.
# Generate the build configuration
cmake -B build -S .
# Compile the application
cmake --build build --config ReleaseThe compiled executable will be generated in your build directory (or build/Release on Windows).
- Infinite Canvas: Navigate an unbounded workspace to arrange your ideas and notes.
- Node-Based Organization: Create interconnected text and image nodes to structure information visually.
- Local-First: All data is serialized and saved locally on your machine.
- High Performance: Built natively with C++, Dear ImGui, and SDL3 for an incredibly responsive experience.
- History System: Full undo and redo capabilities.
- Pan Canvas: Middle Mouse Button + Drag
- Zoom Canvas: Mouse Scroll Wheel
- Create Node: Right-click on the canvas to open the context menu.
- Move Node: Left Click + Drag on the node header.
- Connect Nodes: Left Click + Drag from one node's pin to another.
This project is built using several excellent open-source libraries:
- Dear ImGui: Core UI framework
- imnodes: Node graph editor UI
- SDL3: Cross-platform window and input handling
- JSON for Modern C++: Serialization
- stb: Image loading utilities
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.