Restructure repo to apps/desktop/ portfolio skeleton (Tauri, unchanged) #52

Merged
parkerhdavis merged 3 commits from restructure into main 2026-04-21 21:13:36 -06:00
parkerhdavis commented 2026-04-21 21:13:26 -06:00 (Migrated from github.com)

Summary

Adopts the portfolio-wide project skeleton from the Project Structure Study — apps/desktop/{backend,frontend} with root-level workspace / lint / tsconfig config — without changing the desktop framework. An Electrobun port was scoped alongside and reverted (not worth the blast radius of rewriting ~8k LOC of Rust docx_ops); Lily stays on Tauri and is now the Tauri-shaped worked example for the portfolio skeleton.

Commits

  • c7a2dd8 Move backend/ and frontend/ under apps/desktop/ — pure git mv, 72 files renamed at 100% content match. Build is red between this commit and the next.
  • 92ad3b0 Add root workspace scaffolding and update paths for new layout — root package.json (workspaces), tsconfig.json (shared baseline), biome.json (shared config), bun.lock (unified lockfile). Updates .cargo/config.toml target-dir, tauri.conf.json icon paths, Makefile BACKEND/FRONTEND vars, .gitignore patterns. Folds frontend/biome.json into root. Biome autofix applied (import ordering + tab indent).
  • 4e07ddb Hoist @tauri-apps/cli to root devDeps, drop Makefile direct-path trick — @tauri-apps/cli is a build tool, belongs at root alongside typescript and @biomejs/biome. Bun then hoists the tauri bin to /node_modules/.bin/, and bunx tauri resolves from any cwd. Collapses the Makefile's direct-path invocation.

Tauri-specific deviations from the study's Electrobun-default shape

  • No apps/desktop/shared/ — Tauri's invoke(name, args) is implicitly schema'd by the Rust #[tauri::command] + serde structs, not by a TS module both sides import.
  • No apps/desktop/package.json — Tauri's canonical version lives in tauri.conf.json + Cargo.toml; make version syncs those plus frontend + root package.json in one pass.
  • No apps/desktop/tsconfig.json — frontend is the only TS surface; its tsconfig extends root directly.
  • .cargo/config.toml in backend redirects Cargo's target-dir to repo-root target/ (matches the portfolio's "all build output under target/" convention).

Verification

  • make check ✓
  • make lint ✓ (some pre-existing warnings in legacy frontend code)
  • make typecheck ✓
  • make test ✓ — 68 Rust tests + 30 frontend tests
  • bunx tauri -V resolves from repo root, apps/desktop/backend/, and apps/desktop/frontend/ ✓

Test plan

  • Pull the merged branch locally and run make setup && make dev; confirm Tauri window opens and dev reload works.
  • Run make build-linux (or equivalent for your OS) and confirm installer builds land in target/release/bundle/.
  • Confirm make version V=0.5.1 && make version && make version V=0.5.0 cleanly round-trips all four version-bearing files.
  • Sanity-check apps/desktop/backend/tauri.conf.json icon paths resolve during bundling (icons show up on the built app).

🤖 Generated with Claude Code

## Summary Adopts the portfolio-wide project skeleton from the [Project Structure Study](../../Obsidian/10-19%20Creative%20Mgmt/11%20Wiki/Project%20Structure%20Study.md) — `apps/desktop/{backend,frontend}` with root-level workspace / lint / tsconfig config — without changing the desktop framework. An Electrobun port was scoped alongside and reverted (not worth the blast radius of rewriting ~8k LOC of Rust `docx_ops`); Lily stays on Tauri and is now the Tauri-shaped worked example for the portfolio skeleton. ## Commits - **`c7a2dd8` Move `backend/` and `frontend/` under `apps/desktop/`** — pure `git mv`, 72 files renamed at 100% content match. Build is red between this commit and the next. - **`92ad3b0` Add root workspace scaffolding and update paths for new layout** — root `package.json` (workspaces), `tsconfig.json` (shared baseline), `biome.json` (shared config), `bun.lock` (unified lockfile). Updates `.cargo/config.toml` target-dir, `tauri.conf.json` icon paths, Makefile `BACKEND`/`FRONTEND` vars, `.gitignore` patterns. Folds `frontend/biome.json` into root. Biome autofix applied (import ordering + tab indent). - **`4e07ddb` Hoist `@tauri-apps/cli` to root devDeps, drop Makefile direct-path trick** — `@tauri-apps/cli` is a build tool, belongs at root alongside `typescript` and `@biomejs/biome`. Bun then hoists the `tauri` bin to `/node_modules/.bin/`, and `bunx tauri` resolves from any cwd. Collapses the Makefile's direct-path invocation. ## Tauri-specific deviations from the study's Electrobun-default shape - No `apps/desktop/shared/` — Tauri's `invoke(name, args)` is implicitly schema'd by the Rust `#[tauri::command]` + `serde` structs, not by a TS module both sides import. - No `apps/desktop/package.json` — Tauri's canonical version lives in `tauri.conf.json` + `Cargo.toml`; `make version` syncs those plus frontend + root `package.json` in one pass. - No `apps/desktop/tsconfig.json` — frontend is the only TS surface; its tsconfig extends root directly. - `.cargo/config.toml` in backend redirects Cargo's `target-dir` to repo-root `target/` (matches the portfolio's "all build output under `target/`" convention). ## Verification - `make check` ✓ - `make lint` ✓ (some pre-existing warnings in legacy frontend code) - `make typecheck` ✓ - `make test` ✓ — 68 Rust tests + 30 frontend tests - `bunx tauri -V` resolves from repo root, `apps/desktop/backend/`, and `apps/desktop/frontend/` ✓ ## Test plan - [ ] Pull the merged branch locally and run `make setup && make dev`; confirm Tauri window opens and dev reload works. - [ ] Run `make build-linux` (or equivalent for your OS) and confirm installer builds land in `target/release/bundle/`. - [ ] Confirm `make version V=0.5.1 && make version && make version V=0.5.0` cleanly round-trips all four version-bearing files. - [ ] Sanity-check `apps/desktop/backend/tauri.conf.json` icon paths resolve during bundling (icons show up on the built app). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.
No reviewers
No labels
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
parker/lily!52
No description provided.