No description
This repository has been archived on 2026-10-13. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
  • Rust 42%
  • JavaScript 22.3%
  • TypeScript 15.4%
  • Svelte 10.7%
  • Python 8.3%
  • Other 1.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-12 20:09:38 +02:00
.forgejo/workflows Run feature flag lifecycle test in CI 2026-10-06 08:30:37 +02:00
apps Merge job/noncanon-1618: first edits of non-canonical Notes save in place (#1618) 2026-10-12 20:09:38 +02:00
assets/brand/app-icon feat(brand): port the calternal.js icon masters and generator 2026-09-25 15:02:32 +02:00
bench replace the Notes Contents rail with a floating table-of-contents card (#1591) 2026-10-12 11:09:57 +02:00
contracts fix(editor): repair touched block boundaries before creating a conflict Note 2026-10-12 20:00:03 +02:00
crates fix(editor): repair touched block boundaries before creating a conflict Note 2026-10-12 20:00:03 +02:00
deploy merge: reconcile current dev migrations and isolation coverage 2026-10-07 13:10:08 +02:00
docs Merge job/ui-notes-toc (fast lane) 2026-10-12 11:46:25 +02:00
fuzz security: clear yanked Rust lock entries and fix audit scope 2026-10-02 17:47:45 +02:00
licenses/voice docs: record voice model and runtime licenses 2026-10-02 16:55:34 +02:00
packages Merge job/noncanon-1618: first edits of non-canonical Notes save in place (#1618) 2026-10-12 20:09:38 +02:00
scripts perf: resolve issue 1540 ratchet calls 2026-10-11 09:49:08 +02:00
spikes Preserve payment overfunding when refunds create positive Card credit 2026-10-08 21:46:35 +02:00
tests plain words in Settings: Match device, By time of day, no jargon (#1596, #1583) 2026-10-12 09:34:19 +02:00
vendor/sherpa-onnx-sys docs(build): explain the loaded-library staging invariant at its owner 2026-10-06 05:08:43 +02:00
.containerignore deploy: cross-compile arm64 binary, thin runtime image, build context ignore 2026-09-24 10:05:33 +02:00
.editorconfig scaffold Rust server and Svelte web app 2026-09-24 09:54:33 +02:00
.gitignore Merge canvas-core-976 into the 7c integration 2026-10-04 18:18:52 +02:00
AGENTS.md docs: design, glossary and agent contract from the design interview 2026-09-24 09:03:55 +02:00
audit-findings.md docs: record 7b classifications, passing gates and verification gaps 2026-10-04 16:00:51 +02:00
bun.lock Share cached Intl formatters across Calendar and API 2026-10-08 18:58:28 +02:00
Cargo.lock Show block text in reminder notifications 2026-10-11 03:32:42 +02:00
Cargo.toml Merge reviewed Mail network policy while retaining public preview address checks 2026-10-06 08:48:04 +02:00
CLAUDE.md Clarify focus navigation ring policy 2026-10-08 00:08:20 +02:00
Containerfile Align health checks and serialized hosting facts with early HTTP startup 2026-10-06 09:14:39 +02:00
CONTEXT.md refactor(canvas): rename Sketch action to Draw 2026-10-05 10:23:14 +02:00
CONTRIBUTING.md docs: stay AGPL-3.0-only; no outside contributions for now (§43) 2026-09-28 09:26:14 +02:00
deny.toml Add cargo-deny licence gate 2026-10-05 17:39:24 +02:00
LICENSE license: AGPL-3.0-only 2026-09-24 09:05:29 +02:00
NOTICE docs: record voice model and runtime licenses 2026-10-02 16:55:34 +02:00
package.json Add production browser smoke suite 2026-10-05 10:53:56 +02:00
README.md perf(server): opt-in write-stage tracing behind server.trace_writes 2026-09-30 03:48:57 +02:00
review-1110.md docs(review): block merge on legacy rename undo gap 2026-10-05 20:04:36 +02:00
review-1130.md docs(money): record independent number review verdict and exact gates 2026-10-05 16:31:25 +02:00
review-1140-second.md docs(review): record defensive results and the blocking Money toast regression 2026-10-06 11:47:06 +02:00
review-1140.md docs(money): record import review verdict and gate evidence 2026-10-06 07:32:25 +02:00
review-1148.md docs(review): record date safety fixes and the remaining reconcile gate failure 2026-10-06 01:58:25 +02:00
review-1153.md Record the final Hide data-safety verdict with independent gate evidence 2026-10-06 21:51:30 +02:00
review-1157.md docs(review): keep the final report free of trailing blank lines 2026-10-06 06:47:47 +02:00
review-1160.md docs: record network review verdict and exact verification results 2026-10-06 06:24:37 +02:00
review-findings.md docs(money): report optimized preview curve and NO-GO verdict 2026-10-02 15:44:30 +02:00
rust-toolchain.toml scaffold Rust server and Svelte web app 2026-09-24 09:54:33 +02:00

calternal

calternal is a self-hosted personal and company cloud. The repository starts with a Rust server and a static SvelteKit web app; feature crates and API contracts are added in separate work.

Requirements

  • Rust 1.98.1 with rustfmt and clippy (selected by rust-toolchain.toml)
  • Bun 1.4 or newer

Run the web app

From the repository root:

bun install
cd apps/web
bun run dev

The web app uses Svelte 5 runes, TypeScript strict mode, Tailwind CSS v4, shadcn-svelte and bits-ui. ⌘K (or Ctrl+K) opens the command menu.

Build and run the server

Build the SPA first so the server can embed apps/web/build:

bun run --cwd apps/web build
export CARGO_PROFILE_DEV_DEBUG=line-tables-only
export CARGO_INCREMENTAL=0
cargo run -p calternal-server

The server listens on 127.0.0.1:8080 by default. It reads optional settings from config.toml in the current directory, then applies CALTERNAL_* environment variables. crates/calternal-server/config.example.toml shows the available initial settings; for example, CALTERNAL_SERVER__BIND=0.0.0.0:8080 overrides the bind address. Set CALTERNAL_SERVER__TRACE_WRITES=true for one profiling run to emit trace-only write-stage timings. The default is off.

Checks

export CARGO_PROFILE_DEV_DEBUG=line-tables-only
export CARGO_INCREMENTAL=0
cargo fmt --check
cargo clippy --all-targets -- -D warnings
cargo test
bun install
cd apps/web
bun run check
bun run test
bun run build

The multi-stage Containerfile builds the SPA, embeds it in the server binary, and runs the final image as a non-root user with /data as its data directory.

License

AGPL-3.0-only. See LICENSE.