app

Local-first trade for farms and co-ops
git clone https://radroots.dev/git/app.git
Log | Files | Refs | README | LICENSE

commit 067b744abcf636a6c345b9b0477f6044302b7b03
parent 8b54d3730b0e374e61165e3c7b53ee556f92ce73
Author: triesap <tyson@radroots.org>
Date:   Sun,  2 Aug 2026 17:58:51 +0000

build(core): establish the Rust workspace

- add domain, application, storage, Nostr, and FFI crates
- pin the Rust 1.97 toolchain and edition 2024 workspace
- establish the UniFFI bindgen tool package skeleton
- verify all crate and desktop test inventories remain green

Diffstat:
M.gitignore | 1+
Acore/Cargo.lock | 27+++++++++++++++++++++++++++
Acore/Cargo.toml | 24++++++++++++++++++++++++
Acore/crates/application/Cargo.toml | 10++++++++++
Acore/crates/application/src/lib.rs | 9+++++++++
Acore/crates/domain/Cargo.toml | 10++++++++++
Acore/crates/domain/src/lib.rs | 9+++++++++
Acore/crates/ffi/Cargo.toml | 10++++++++++
Acore/crates/ffi/src/lib.rs | 9+++++++++
Acore/crates/nostr/Cargo.toml | 10++++++++++
Acore/crates/nostr/src/lib.rs | 9+++++++++
Acore/crates/storage/Cargo.toml | 10++++++++++
Acore/crates/storage/src/lib.rs | 9+++++++++
Acore/rust-toolchain.toml | 4++++
Acore/tools/uniffi-bindgen/Cargo.toml | 11+++++++++++
Acore/tools/uniffi-bindgen/src/main.rs | 11+++++++++++
Mdocs/implementation/nostr-runtime-rcld.md | 4++--
17 files changed, 175 insertions(+), 2 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -3,6 +3,7 @@ .idea/ *.iml **/build/ +core/target/ out/ local.properties *.log diff --git a/core/Cargo.lock b/core/Cargo.lock @@ -0,0 +1,27 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "radroots-studio-application" +version = "0.1.0-alpha.0" + +[[package]] +name = "radroots-studio-domain" +version = "0.1.0-alpha.0" + +[[package]] +name = "radroots-studio-ffi" +version = "0.1.0-alpha.0" + +[[package]] +name = "radroots-studio-nostr" +version = "0.1.0-alpha.0" + +[[package]] +name = "radroots-studio-storage" +version = "0.1.0-alpha.0" + +[[package]] +name = "radroots-studio-uniffi-bindgen" +version = "0.1.0-alpha.0" diff --git a/core/Cargo.toml b/core/Cargo.toml @@ -0,0 +1,24 @@ +[workspace] +members = [ + "crates/application", + "crates/domain", + "crates/ffi", + "crates/nostr", + "crates/storage", + "tools/uniffi-bindgen", +] +resolver = "3" + +[workspace.package] +version = "0.1.0-alpha.0" +edition = "2024" +rust-version = "1.97" +license = "GPL-3.0-only" +repository = "https://github.com/radroots/studio_app" + +[workspace.lints.rust] +unsafe_code = "forbid" + +[workspace.lints.clippy] +all = "deny" +pedantic = "deny" diff --git a/core/crates/application/Cargo.toml b/core/crates/application/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "radroots-studio-application" +version.workspace = true +edition.workspace = true +rust-version.workspace = true +license.workspace = true +repository.workspace = true + +[lints] +workspace = true diff --git a/core/crates/application/src/lib.rs b/core/crates/application/src/lib.rs @@ -0,0 +1,9 @@ +#![doc = "Radroots Studio application runtime."] + +#[cfg(test)] +mod tests { + #[test] + fn crate_is_available_to_the_workspace() { + assert_eq!(env!("CARGO_PKG_NAME"), "radroots-studio-application"); + } +} diff --git a/core/crates/domain/Cargo.toml b/core/crates/domain/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "radroots-studio-domain" +version.workspace = true +edition.workspace = true +rust-version.workspace = true +license.workspace = true +repository.workspace = true + +[lints] +workspace = true diff --git a/core/crates/domain/src/lib.rs b/core/crates/domain/src/lib.rs @@ -0,0 +1,9 @@ +#![doc = "Radroots Studio Nostr account domain types."] + +#[cfg(test)] +mod tests { + #[test] + fn crate_is_available_to_the_workspace() { + assert_eq!(env!("CARGO_PKG_NAME"), "radroots-studio-domain"); + } +} diff --git a/core/crates/ffi/Cargo.toml b/core/crates/ffi/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "radroots-studio-ffi" +version.workspace = true +edition.workspace = true +rust-version.workspace = true +license.workspace = true +repository.workspace = true + +[lints] +workspace = true diff --git a/core/crates/ffi/src/lib.rs b/core/crates/ffi/src/lib.rs @@ -0,0 +1,9 @@ +#![doc = "Radroots Studio `UniFFI` boundary."] + +#[cfg(test)] +mod tests { + #[test] + fn crate_is_available_to_the_workspace() { + assert_eq!(env!("CARGO_PKG_NAME"), "radroots-studio-ffi"); + } +} diff --git a/core/crates/nostr/Cargo.toml b/core/crates/nostr/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "radroots-studio-nostr" +version.workspace = true +edition.workspace = true +rust-version.workspace = true +license.workspace = true +repository.workspace = true + +[lints] +workspace = true diff --git a/core/crates/nostr/src/lib.rs b/core/crates/nostr/src/lib.rs @@ -0,0 +1,9 @@ +#![doc = "Radroots Studio Nostr protocol adapters."] + +#[cfg(test)] +mod tests { + #[test] + fn crate_is_available_to_the_workspace() { + assert_eq!(env!("CARGO_PKG_NAME"), "radroots-studio-nostr"); + } +} diff --git a/core/crates/storage/Cargo.toml b/core/crates/storage/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "radroots-studio-storage" +version.workspace = true +edition.workspace = true +rust-version.workspace = true +license.workspace = true +repository.workspace = true + +[lints] +workspace = true diff --git a/core/crates/storage/src/lib.rs b/core/crates/storage/src/lib.rs @@ -0,0 +1,9 @@ +#![doc = "Radroots Studio persistence adapters."] + +#[cfg(test)] +mod tests { + #[test] + fn crate_is_available_to_the_workspace() { + assert_eq!(env!("CARGO_PKG_NAME"), "radroots-studio-storage"); + } +} diff --git a/core/rust-toolchain.toml b/core/rust-toolchain.toml @@ -0,0 +1,4 @@ +[toolchain] +channel = "1.97.0" +components = ["clippy", "rustfmt"] +profile = "minimal" diff --git a/core/tools/uniffi-bindgen/Cargo.toml b/core/tools/uniffi-bindgen/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "radroots-studio-uniffi-bindgen" +version.workspace = true +edition.workspace = true +rust-version.workspace = true +license.workspace = true +repository.workspace = true +publish = false + +[lints] +workspace = true diff --git a/core/tools/uniffi-bindgen/src/main.rs b/core/tools/uniffi-bindgen/src/main.rs @@ -0,0 +1,11 @@ +#![doc = "Pinned `UniFFI` binding generator entry point."] + +fn main() {} + +#[cfg(test)] +mod tests { + #[test] + fn tool_is_available_to_the_workspace() { + assert_eq!(env!("CARGO_PKG_NAME"), "radroots-studio-uniffi-bindgen"); + } +} diff --git a/docs/implementation/nostr-runtime-rcld.md b/docs/implementation/nostr-runtime-rcld.md @@ -263,7 +263,7 @@ checks, documentation link/path validation, and diff review. ### RCLD-02: Rust workspace and domain -Status: pending. +Status: in progress. Scope: checkpoints 2 through 11. Establish the Rust workspace and implement safe errors, public keys, secret input/redaction, NIP-19 types, relay URLs, @@ -453,7 +453,7 @@ handoff commit sequence. ### RCLD-02 -- [ ] 02. Establish root Rust workspace skeleton. +- [x] 02. Establish root Rust workspace skeleton. - [ ] 03. Add Rust formatting, lint, and governed check hooks. Use Cargo, Gradle, and Makefile; do not add CI workflows or scripts. - [ ] 04. Define domain module layout and safe error shell.