Set up workspace skeleton

Five crates: runway-core (pure domain), runway-caldav (protocol),
runway-server (axum), runway-web (leptos), runway-cli (smoke tool).

runway-core is feature-gated into model/ical/recurrence so the frontend
can depend on the shared types without pulling icalendar and rrule into
the WASM bundle. The previous iteration shipped reqwest, ical and regex
to the browser for a dead module; the feature split makes that mistake
structurally hard to repeat.

Guardrails are compiler- and CI-enforced rather than aspirational:
workspace lints deny unwrap_used/expect_used, dead_code and unsafe_code,
clippy.toml caps function length and arity, deny.toml pins licences.

Toolchain is pinned per-project so the machine-wide default is untouched.
Cargo.lock is committed this time.

docs/legacy-audit.md carries the marked-up feature decisions and is the
spec for the rewrite.
This commit is contained in:
2026-08-26 12:07:44 -04:00
commit bf63024711
20 changed files with 4272 additions and 0 deletions
+8
View File
@@ -0,0 +1,8 @@
//! Pure calendar domain logic for Runway.
//!
//! This crate holds the RFC 5545 model and, behind feature flags, the iCalendar
//! round-trip and recurrence expansion. It performs no I/O and has no knowledge
//! of HTTP, CalDAV or the database, which keeps it fast to test and — with only
//! the default `model` feature — cheap enough to compile into the WASM bundle.
pub mod model;
+1
View File
@@ -0,0 +1 @@
pub struct Placeholder;