Skip to content

alviansm/lineweaver

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Spatial Note Taking (Lineweaver)

Lineweaver is local-first, infinite-canvas spatial note-taking tool. Organize informations into an interconnected system.

Repository Structure

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

Prerequisite Setup

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

Building the Project

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 Release

The compiled executable will be generated in your build directory (or build/Release on Windows).

Features

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

Controls

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

Acknowledgements

This project is built using several excellent open-source libraries:

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

About

Lineweaver is spatial note-taking tool

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages