Repo shape

  • apps/web-react/: React + Vite frontend workspace.
  • apps/web-svelte/: Svelte + Vite frontend workspace, intended as the alternate richer UI target.
  • src-tauri/: Tauri desktop shell and Rust command layer.
  • backend-python/: Python computation and service code.
  • static/: Shared public assets used by both frontends.
    • static/app-shell/: shared logos and app-shell icon families.
    • static/glyphs/: shared astrology glyph sets.
  • docs/: Hugo source for docs, published frontend copies, and LLM handoff notes.

Working assumptions

  • The repo is a monorepo with npm workspaces at the root.
  • The default frontend is currently apps/web-react, but apps/web-svelte can also be built into Tauri via the dedicated root scripts.
  • Both frontends are first-class build targets:
    • Tauri/Desktop uses the normal app builds in each workspace dist/.
    • Hugo/docs uses docs-specific builds published under /apps/web-react/ and /apps/web-svelte/.
  • Tauri invokes Rust commands, which coordinate with workspace storage and the Python backend.
  • docs/static/apps/ and docs/data/generated/ are generated by npm run docs:prepare and should not be edited by hand.
  • Shared asset source of truth:
    • app-shell icons live under static/app-shell/icons/default/ and static/app-shell/icons/modern/
    • logos live under static/app-shell/logo-*.svg
    • glyphs live under static/glyphs/default/{planets,zodiac}/ and static/glyphs/classic/{planets,zodiac}/

UI implementation rules

  • Prefer the shared shadcn-style component layer first when building or restyling UI.
  • In React, that means starting from the existing shadcn/Radix-style primitives in apps/web-react/src/app/components/ui/.
  • In Svelte, that means starting from the existing shared UI primitives built around Bits UI in apps/web-svelte/src/lib/components/ui/.
  • Do not introduce ad-hoc bespoke controls when an existing shadcn-style primitive can be extended with tokens, variants, spacing, or composition.
  • Styling should flow through shared theme tokens and shared component surfaces before adding one-off CSS.

Best entrypoints