Project Structure¶
A quick orientation. The canonical, kept-up-to-date layout reference is docs/repository-structure.md (Japanese).
Top-level layout¶
rescript-tauri/
├── packages/ # @rescript-tauri/core, plugin-*, schema
├── examples/ # hello-world / window-management / ipc-typed / streaming-ipc / plugin-fs-demo / plugin-dialog-demo / ipc-typed-with-schema
├── docs/ # Internal design docs (PRD, functional design, architecture, ...)
│ └── ideas/ # Drafts / RFCs (input only; not edited after acceptance)
├── sphinx-docs/ # External-facing docs (this site; English base + Japanese via Sphinx i18n)
├── .steering/ # Per-task steering documents (requirements / design / tasklist)
├── .claude/ # Claude Code configuration (rules / skills / agents / commands)
├── .github/ # GitHub Actions / templates
├── CLAUDE.md # Mandatory project instructions for Claude Code (Japanese)
├── CONTRIBUTING.md # External contributor guide (English)
├── README.md # Project README (English)
└── LICENSE # MIT
Where each thing lives¶
If you want to … |
Look in … |
|---|---|
Read what the project promises to do |
|
Read per-module API specs |
|
Read cross-cutting design (error / lifetime / JSON / variants) |
|
Read what conventions Claude Code enforces |
|
Read how to contribute (external) |
|
Read how to develop locally (internal) |
|
Read how a steering document is shaped |
|
Modify the docs you are reading right now |
|
Subsystem map¶
packages/core/ is the central hub; alongside it are the add-on packages packages/schema/, packages/plugin-fs/, packages/plugin-dialog/, packages/plugin-shell/, packages/plugin-notification/, packages/plugin-log/, packages/plugin-os/, and packages/plugin-clipboard-manager/. The core layout is:
packages/core/
├── src/
│ ├── Core.res / .resi # invoke / convertFileSrc / Channel / Command / Resource / PluginListener / permissions / isTauri / LowLevel
│ ├── Event.res / .resi # listen / once / emit / TauriEvent enum
│ ├── Window.res / .resi
│ ├── Webview.res / .resi
│ ├── WebviewWindow.res / .resi
│ ├── Path.res / .resi
│ ├── App.res / .resi
│ ├── Dpi.res / .resi
│ ├── Menu.res / .resi
│ ├── Tray.res / .resi
│ ├── Image.res / .resi
│ ├── Mocks.res / .resi
│ └── Tauri.res / .resi # top-level re-export
├── tests/
│ ├── (型レベルテスト, *.res) # compile success = pass
│ └── runtime/ # vitest tests
├── rescript.json
├── package.json
└── README.md
Every .res is shadowed by a .resi interface file, which is the canonical surface (one of the project’s hard rules; see docs/repository-structure.md §2.1).