Scaffold project structure and Phase 1 starter #1
Loading…
Reference in a new issue
No description provided.
Delete branch "scaffold-and-phase1-starter"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Bootstrap the Garnet repo with the Tauri 2 + Rust + React + Bun + Tailwind 4 + daisyUI 5 shape used by Packi, and land the Phase 1 starter on top: an SQLite-backed library DB with versioned migrations, register/list/remove/scan commands for library roots, and a daisyUI shell that exercises them end-to-end. Module loader is intentionally absent —
modules/example-module/manifest.jsonsketches the proposed manifest shape, andsrc/modules.rsenumerates manifests without executing any module code, in keeping with the deliberate Phase 2 open question on the loading model.What's here
Scaffold (matches Packi):
package.json(workspacesapps/*),tsconfig.json,biome.json,bunfig.toml,.gitignore.Makefilewith portfolio targets (setup/dev/down/build/build-{linux,macos,windows}/lint/lint-fix/format/typecheck/test/icons/version/clean) and full OS-detection branches.apps/desktop/backend/Cargo + Tauri config + plugins (dialog/fs/opener)..cargo/config.tomlpoints cargo output at the repo-roottarget/.apps/desktop/frontend/Bun-native build pipeline (build.ts+dev.ts, no Vite). Tailwind 4 + daisyUI 5 with Garnet-reddark/lighttheme palettes.resources/icons/generate-icons.shadapted from Packi; source PNGs + generated set committed.LICENSE.md(per Licensing Standards);bundle.licenseFileintauri.conf.jsonpoints at it. Every authored source file carries theSPDX-License-Identifier: AGPL-3.0-or-laterheader.Phase 1 starter:
$XDG_DATA_HOME/garnet/library.sqliteviarusqlite(bundled), withforeign_keys=ON/journal_mode=WAL/busy_timeout=5000PRAGMAs and a versioned migrations runner. Schema v1:library_roots,assets,migrations.register_library_root,list_library_roots,remove_library_root,scan_library_root(walkdir-based stub indexer that inserts one asset row per file withrelative_path/size/mtime/ extension-basedformat), plusload_settings/save_settingsand alist_modulesenumeration stub.libraryStore+ typedlib/tauri.tsinvoke wrapper.What's not here (and why)
Test plan
make devboots into the app shell and library-roots flow works end-to-end (verified locally).make typecheckclean.make lintclean (Biome + clippy).make testruns (no tests yet but harness should be green).make buildproduces a Linux installer.