Skip to content

Commit 7364b81

Browse files
authored
feat: standalone app (#1)
* feat: bootstrap standalone app * feat: poc of spawning shell process * feat: setup tailwind css * feat(ui): port UI * feat(ui): compact sticky header on scroll - make header sticky and shrink padding on scroll - hide logo instantly in compact state without shifting nav - smooth header height transition * fix: address svelte warnings * feat: setup db handler * feat: implement db provider * feat: load extension * feat: implement migrations support * feat: apply migrations * fix: fix warnings * fix: pass down queue name * feat: copy database path * feat: implement sample worker * feat: implement dev api provider * fix: data display fix batch 1 * fix: data display fix batch 2 * feat: load 500 task runs only * fix: task info details fix * feat: persist dev api server status in config * fix: wrong parameter in get task details * feat: setup standalone app logo * feat: minor clean up and css fixes * doc: init AGENTS.md * fix: remove unused impl * doc: update agent instruction * fix: address code lint / format issues * fix: code issue fixes * ci: setup ci steps for submodules * ci: add required deps * feat: bootstrap absurd-sqlite-deno-runtime * fix: update standalone build steps * fix: drop direct dependency on better-sqlite3 * fix: require debug_assertions for dev tool * fix: update function signature * lint: use debug_assertions only
1 parent 9275720 commit 7364b81

84 files changed

Lines changed: 12811 additions & 965 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
name: Absurd SQLite Extension CI
2+
3+
on:
4+
pull_request:
5+
paths:
6+
- absurd-sqlite-extension/**
7+
- Cargo.toml
8+
- Cargo.lock
9+
- .github/workflows/ci-absurd-sqlite-extension.yml
10+
11+
jobs:
12+
lint-format-test:
13+
name: Lint, Format, Test
14+
runs-on: ubuntu-latest
15+
steps:
16+
- name: Checkout
17+
uses: actions/checkout@v4
18+
19+
- name: Install Rust
20+
uses: dtolnay/rust-toolchain@stable
21+
with:
22+
components: rustfmt, clippy
23+
24+
- name: Format check
25+
run: cargo fmt -p absurd_sqlite_extension -- --check
26+
27+
- name: Lint
28+
run: cargo clippy -p absurd_sqlite_extension -- -D warnings
29+
30+
- name: Unit tests
31+
run: cargo test -p absurd_sqlite_extension
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
name: Standalone App CI
2+
3+
on:
4+
pull_request:
5+
paths:
6+
- standalone/**
7+
- Cargo.toml
8+
- Cargo.lock
9+
- .github/workflows/ci-standalone.yml
10+
11+
jobs:
12+
lint-format-test:
13+
name: Lint, Format, Test
14+
runs-on: ubuntu-latest
15+
steps:
16+
- name: Checkout
17+
uses: actions/checkout@v4
18+
19+
- name: Install Bun
20+
uses: oven-sh/setup-bun@v1
21+
22+
- name: Install Rust
23+
uses: dtolnay/rust-toolchain@stable
24+
with:
25+
components: rustfmt, clippy
26+
27+
- name: Install Linux dependencies
28+
if: runner.os == 'Linux'
29+
run: |
30+
sudo apt-get update
31+
sudo apt-get install -y \
32+
libgtk-3-dev \
33+
libayatana-appindicator3-dev \
34+
librsvg2-dev \
35+
libwebkit2gtk-4.1-dev \
36+
libglib2.0-dev \
37+
pkg-config
38+
39+
- name: Build SQLite extension
40+
run: cargo build -p absurd_sqlite_extension
41+
42+
- name: Frontend install
43+
working-directory: standalone
44+
run: bun install --frozen-lockfile
45+
46+
- name: Frontend check
47+
working-directory: standalone
48+
run: bun check
49+
50+
- name: Backend format check
51+
run: cargo fmt -p AbsurdSQLite -- --check
52+
53+
- name: Backend lint
54+
run: cargo clippy -p AbsurdSQLite -- -D warnings
55+
56+
- name: Backend tests
57+
run: cargo test -p AbsurdSQLite
File renamed without changes.

AGENTS.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Absurd-SQLite
2+
3+
Absurd-SQLite is a SQLite based durable execution engine designed for personal / homelab / edge computing environments.
4+
5+
This project is based on the PostgreSQL implementation from [absurd](https://github.com/earendil-works/absurd).
6+
7+
## Key Concepts
8+
9+
A task is subdivided into steps that act as checkpoints. Tasks can suspend (for sleep or events) and resume without data loss.
10+
State data is stored in the SQLite tables below:
11+
12+
- Queues: `absurd_queues` scopes all durable execution by `queue_name`.
13+
- Tasks: `absurd_tasks` stores task definitions, parameters, headers, retry/cancel info, idempotency keys, and task state.
14+
- Runs: `absurd_runs` represents per-attempt execution for a task with claim/lease timing, availability, and results/failures.
15+
- Checkpoints: `absurd_checkpoints` tracks named task checkpoints with optional state and run ownership.
16+
- Events: `absurd_events` stores emitted events with JSON payloads scoped by queue and event name.
17+
- Waits: `absurd_waits` records task steps waiting on events or timeouts.
18+
19+
To interact with the system, a SQLite extension is provided and exposed various SQL functions.
20+
21+
## Repository Structure
22+
23+
- `absurd-sqlite-extension`: Core Rust crate providing the SQLite extension, engine logic, and schema migrations.
24+
- `standalone`: Tauri + SvelteKit desktop app.
25+
- `sdks`: Client SDKs for different languages.
26+
- `samples`: Example applications demonstrating usage.
27+
28+
## Development
29+
30+
General rule: please make sure to lint, format, and test code after making changes. No need to ask for human confirmation
31+
before running linters / formatters / tests.
32+
33+
Please follow the sub-project README.md / AGENTS.md for detailed instructions.

0 commit comments

Comments
 (0)