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 installto install frontend dependencies. - Run
cargo buildto build Rust crates. - Run
npm run tauri devto 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.tsto call Rust commands via@tauri-apps/api. - Rust backend exposes functions in
aether_apiwith the#[tauri::command]attribute. - Shared data types are defined in
aether_typesfor 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_typesfor consistency.
For more details, see the documentation in each subdirectory.