This is a demo project implementing an outliner view inspired by Logseq using HumbleUI.
It is based on the humble-starter template.
The focus of the demo is on the UI, it is not indented for use as it does not store data permanently.
outliner-demo.mp4
up/down
go up/downenter
new itembackspace
join itemstab
indentshift+tab
outdentalt+shift+up/down
move item up/down- switch between light and dark theme
Features they might be interesting to implement as an exercise in the future:
- block-wise selection
- collapse/expand
- zoom in/out
- undo/redo
- copy/paste
- dragging
- text wrapping
- rich text formatting
Run the app with:
script/run.sh
Make sure to have GRAALVM_HOME
env variable pointing to your GraalVM installation, e.g.:
export GRAALVM_HOME="$HOME/Downloads/graalvm-jdk-21.0.1+12.1"
Compile with:
clj -T:build native
Run the executable:
target/outliner
See humble-graal for more details.
Run the app including nREPL server:
script/nrepl.sh
Run tests with:
clj -M:test
Run tests with alternative reporter:
clj -M:test --reporter kaocha.report/documentation
Run tests in watch mode:
clj -M:test --watch
Generate code coverage report:
clj -M:test:coverage
To reload the app and see your changes reflected, you can:
- Evaluate individual forms via the REPL, reset the
state/*app
atom, and then callstate/redraw!
- Make changes to the files, save them, then call
reload
from the user ns, which will use clojure.tools.namespace to detect which ns' should be refreshed, evaluate them, and then callstate/redraw!
.
Licensed under MIT.
Copyright Jakub Dundalek 2023.
Parts of the code Copyright Will Acton 2022.