https://github.com/dimchikkk/revel
Note taking brainstorming app
https://github.com/dimchikkk/revel
c gtk4 sqllite3
Last synced: about 1 month ago
JSON representation
Note taking brainstorming app
- Host: GitHub
- URL: https://github.com/dimchikkk/revel
- Owner: Dimchikkk
- License: mit
- Created: 2025-09-01T19:04:00.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-09-11T16:26:02.000Z (9 months ago)
- Last Synced: 2025-09-11T16:29:34.842Z (9 months ago)
- Topics: c, gtk4, sqllite3
- Language: C
- Homepage:
- Size: 285 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
# Revel
Infinite canvas for notes and visual thinking.

## What it does
Everything lives in a single SQLite file. Search uses BM25 ranking. Canvas is infinite with nested spaces you can organize however you want.
**Content:**
- Text notes (plain or formatted)
- Shapes (circles, rectangles, triangles, diamonds, bézier curves, graphs)
- Stroke styles (solid/dashed/dotted), fill patterns (solid/hachure/cross-hatch)
- Freehand drawing
- Images, videos (MP4), audio (MP3)
**Connections:**
- Arrows between any elements (curved or straight)
- 4-point attachment system
**Working with stuff:**
- New elements find empty space automatically (spiral search)
- Clone things: fork for independent copies, or link by text/size/position/color
- Layer ordering, rotation, colors
- Add private notes to elements
**Automation:**
- DSL for scripting layouts
- Animations: move, resize, color, fade
- 8 interpolation curves (linear, bezier, ease-in/out, bounce, elastic, back)
**UI:**
- Right-click menus, keyboard shortcuts (`F1` for list)
- Space tree sidebar
- Undo/redo with action log
## Performance
Handles large datasets. Viewport culling means only visible stuff gets rendered. Tested with 1M elements.

## Building
**Linux (Ubuntu/Debian):**
```bash
sudo apt install libgtk-4-dev libsqlite3-dev libjson-glib-dev \
libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \
gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-libav
```
**macOS (Homebrew):**
```bash
brew install gtk4 gstreamer gstreamer-development pkgconf sqlite json-glib font-ubuntu-mono
```
**Build:**
```bash
make -j$(nproc) && ./revel
```
*Note: Primary development is on Linux. macOS build uses Command (⌘) key for shortcuts.*
Try the demo:
```bash
rm -f demo.db && ./revel --dsl examples/showcase.dsl demo.db
```

## AI Integration
Toolbar has AI button. Calls external CLI tools (config in `config/ai_providers.json`) and sends current canvas as DSL context. Binaries need to be in `$PATH`. Settings in gear menu. History saved to database.
## Layout
```
src/ C code
tests/ Tests
examples/ DSL examples
build/ Build output
```
Full DSL docs: [DSL.md](docs/DSL.md)
## Desktop launcher
```bash
cp revel.desktop ~/.local/share/applications/
# Edit Exec and Icon paths in the file
update-desktop-database ~/.local/share/applications/
```