An ongoing migration is moving all business logic into rust/. Each app under apps/ is a UI shell — it owns rendering, interaction, and platform-specific concerns, but never owns logic. The UI framework for any given app is a replaceable detail.
The single source of truth for all non-UI code. Everything platform-agnostic belongs here: no components, no hooks, no framework imports.
Each app is a frontend that calls into Rust. Logic is never duplicated between apps — only UI is, because each platform may use an entirely different framework and language to build it.
web/— Next.jsdesktop/— GPUI
- Read components before using them. They may already apply classes, which affects what you need to pass and how to override them.