This is the unified monorepo for the Aether project, containing both the Rust (Tauri) backend and the Next.js frontend.
/aether/
├── .gitignore
├── Cargo.toml
├── package.json
├── next.config.mjs
├── tsconfig.json
├── assets/
├── tests/
├── src-tauri/
│ ├── Cargo.toml
│ ├── tauri.conf.json
│ ├── src/
│ │ ├── main.rs
│ │ └── lib.rs
│ ├── icons/
│ └── crates/
│ ├── aether_core/
│ ├── aether_api/
│ ├── aether_types/
│ └── aether_cli/
└── src/
├── public/
│ └── icons/
├── app/
├── components/
├── hooks/
├── styles/
└── utils/
- Root
package.json
: Contains scripts for frontend (Next.js) and Tauri orchestration (tauri dev
,tauri build
). - Root
Cargo.toml
: Rust workspace for all backend crates. src-tauri/tauri.conf.json
: Tauri configuration. Defines how the app launches, which dev server to use, and how assets are bundled.
- Run
npm install
to install frontend dependencies. - Run
cargo build
to build Rust crates. - Run
npm run tauri dev
to launch the full Tauri app with the Next.js frontend.
- Directory:
src-tauri/
- Main entry:
src/main.rs
(desktop app),src/lib.rs
(mobile entry, if needed) - Crates:
aether_core
: Main application logicaether_api
: IPC commands and events (with#[tauri::command]
)aether_types
: Shared Rust types for IPCaether_cli
: Command-line interface
- Directory:
src/
- App Router:
src/app/
- Reusable Components:
src/components/
- Hooks:
src/hooks/
- IPC Utility:
src/utils/ipc.ts
(wrapper for Tauri IPC) - Static Assets:
src/public/
- Frontend uses
src/utils/ipc.ts
to call Rust commands via@tauri-apps/api
. - Rust backend exposes functions in
aether_api
with the#[tauri::command]
attribute. - Shared data types are defined in
aether_types
for type-safe serialization between Rust and TypeScript.
Example:
- TypeScript calls
callRust('my_command', { arg1: value })
inipc.ts
. - Rust receives the call in a function marked with
#[tauri::command]
inaether_api
. - Data is exchanged using types from
aether_types
.
- Install dependencies:
npm install cargo build
- Start development:
npm run tauri dev
- Build production app:
npm run build npm run tauri build
- Follow Rust and Next.js best practices for each respective part of the codebase.
- Use IPC for communication between frontend and backend.
- Keep shared types in
aether_types
for consistency.
For more details, see the documentation in each subdirectory.