Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 61 additions & 7 deletions .github/workflows/ci-rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ on:
push:
branches: [master, main, develop]
paths:
- 'apps/desktop/src-tauri/**'
- 'apps/ui/src-tauri/**'
- '.github/workflows/ci-rust.yml'
pull_request:
branches: [master, main, develop]
paths:
- 'apps/desktop/src-tauri/**'
- 'apps/ui/src-tauri/**'
- '.github/workflows/ci-rust.yml'

jobs:
Expand All @@ -20,21 +20,39 @@ jobs:
steps:
- uses: actions/checkout@v6

- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y libwebkit2gtk-4.1-dev \
build-essential \
curl \
wget \
file \
libxdo-dev \
libssl-dev \
libayatana-appindicator3-dev \
librsvg2-dev

- name: Setup Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
components: rustfmt, clippy
override: true

- name: Rust cache
uses: Swatinem/rust-cache@v2
with:
workspaces: apps/ui/src-tauri

- name: Check formatting
run: |
cd apps/desktop/src-tauri
cd apps/ui/src-tauri
cargo fmt -- --check

- name: Clippy
run: |
cd apps/desktop/src-tauri
cd apps/ui/src-tauri
cargo clippy -- -D warnings

test:
Expand All @@ -44,15 +62,33 @@ jobs:
steps:
- uses: actions/checkout@v6

- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y libwebkit2gtk-4.1-dev \
build-essential \
curl \
wget \
file \
libxdo-dev \
libssl-dev \
libayatana-appindicator3-dev \
librsvg2-dev

- name: Setup Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true

- name: Rust cache
uses: Swatinem/rust-cache@v2
with:
workspaces: apps/ui/src-tauri

- name: Run tests
run: |
cd apps/desktop/src-tauri
cd apps/ui/src-tauri
cargo test

build:
Expand All @@ -62,16 +98,34 @@ jobs:
steps:
- uses: actions/checkout@v6

- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y libwebkit2gtk-4.1-dev \
build-essential \
curl \
wget \
file \
libxdo-dev \
libssl-dev \
libayatana-appindicator3-dev \
librsvg2-dev

- name: Setup Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true

- name: Rust cache
uses: Swatinem/rust-cache@v2
with:
workspaces: apps/ui/src-tauri

- name: Build
run: |
cd apps/desktop/src-tauri
cd apps/ui/src-tauri
cargo build --release

# Note: This workflow is a placeholder for Phase 8 (Tauri Desktop App Setup)
# It will be activated once apps/desktop/src-tauri/ is created
# It will be activated once apps/ui/src-tauri/ is created
34 changes: 17 additions & 17 deletions .github/workflows/ci-typescript.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,16 @@ on:
push:
branches: [master, main, develop]
paths:
- 'apps/desktop/src/**'
- 'apps/desktop/package.json'
- 'apps/desktop/tsconfig.json'
- 'apps/ui/src/**'
- 'apps/ui/package.json'
- 'apps/ui/tsconfig.json'
- '.github/workflows/ci-typescript.yml'
pull_request:
branches: [master, main, develop]
paths:
- 'apps/desktop/src/**'
- 'apps/desktop/package.json'
- 'apps/desktop/tsconfig.json'
- 'apps/ui/src/**'
- 'apps/ui/package.json'
- 'apps/ui/tsconfig.json'
- '.github/workflows/ci-typescript.yml'

jobs:
Expand All @@ -29,21 +29,21 @@ jobs:
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: apps/desktop/package-lock.json
cache-dependency-path: apps/ui/package-lock.json

- name: Install dependencies
run: |
cd apps/desktop
cd apps/ui
npm ci

- name: Lint
run: |
cd apps/desktop
cd apps/ui
npm run lint

- name: Type check
run: |
cd apps/desktop
cd apps/ui
npm run type-check

test:
Expand All @@ -58,16 +58,16 @@ jobs:
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: apps/desktop/package-lock.json
cache-dependency-path: apps/ui/package-lock.json

- name: Install dependencies
run: |
cd apps/desktop
cd apps/ui
npm ci

- name: Run tests
run: |
cd apps/desktop
cd apps/ui
npm test

build:
Expand All @@ -82,17 +82,17 @@ jobs:
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: apps/desktop/package-lock.json
cache-dependency-path: apps/ui/package-lock.json

- name: Install dependencies
run: |
cd apps/desktop
cd apps/ui
npm ci

- name: Build
run: |
cd apps/desktop
cd apps/ui
npm run build

# Note: This workflow is a placeholder for Phase 8 (Tauri Desktop App Setup)
# It will be activated once apps/desktop/ is created with React + TypeScript + Vite
# It will be activated once apps/ui/ is created with React + TypeScript + Vite
30 changes: 15 additions & 15 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -34,22 +34,22 @@ apps/core/.mypy_cache/
apps/core/.ruff_cache/
apps/core/.hypothesis/

# Monorepo - Desktop App (apps/desktop/)
apps/desktop/node_modules/
apps/desktop/dist/
apps/desktop/.next/
apps/desktop/.turbo/
apps/desktop/out/
apps/desktop/build/
apps/desktop/.DS_Store
apps/desktop/*.tsbuildinfo
apps/desktop/npm-debug.log*
apps/desktop/yarn-debug.log*
apps/desktop/yarn-error.log*
# Monorepo - Desktop App (apps/ui/)
apps/ui/node_modules/
apps/ui/dist/
apps/ui/.next/
apps/ui/.turbo/
apps/ui/out/
apps/ui/build/
apps/ui/.DS_Store
apps/ui/*.tsbuildinfo
apps/ui/npm-debug.log*
apps/ui/yarn-debug.log*
apps/ui/yarn-error.log*

# Monorepo - Tauri (apps/desktop/src-tauri/)
apps/desktop/src-tauri/target/
apps/desktop/src-tauri/Cargo.lock
# Monorepo - Tauri (apps/ui/src-tauri/)
apps/ui/src-tauri/target/
apps/ui/src-tauri/Cargo.lock

# Data (IMPORTANT: personal data)
data/samples/
Expand Down
2 changes: 1 addition & 1 deletion .kiro/steering/product.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ Desktop application for voice cloning and text-to-speech synthesis using Qwen3-T

### Monorepo Structure
- **apps/core/**: Python core library with hexagonal architecture
- **apps/desktop/**: Tauri desktop app (React + TypeScript + Rust)
- **apps/ui/**: Tauri desktop app (React + TypeScript + Rust)
- **Separation**: Clear boundaries between core logic and UI

### Hexagonal Architecture (Core Library)
Expand Down
16 changes: 8 additions & 8 deletions .kiro/steering/tech.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ inclusion: always

### Monorepo Structure
- **Architecture**: Monorepo with separate apps
- **Apps**: `apps/core/` (Python library), `apps/desktop/` (Tauri app)
- **Apps**: `apps/core/` (Python library), `apps/ui/` (Tauri app)
- **Build System**: Independent builds per app
- **CI/CD**: Separate workflows per technology (Python, Rust, TypeScript)

Expand Down Expand Up @@ -63,7 +63,7 @@ mypy>=1.0.0 # Type checker
pre-commit>=3.0.0 # Git hooks
```

### Desktop App Technologies (`apps/desktop/`)
### Desktop App Technologies (`apps/ui/`)

#### Rust Backend (Tauri)
```toml
Expand Down Expand Up @@ -200,34 +200,34 @@ class TTSStudioAPI:

### Feature-Sliced Design Layers

#### 1. App Layer (`apps/desktop/src/app/`)
#### 1. App Layer (`apps/ui/src/app/`)
- Application initialization
- Global providers (theme, router, store)
- Global styles
- Root-level configuration

#### 2. Pages Layer (`apps/desktop/src/pages/`)
#### 2. Pages Layer (`apps/ui/src/pages/`)
- Route components
- Page-level layouts
- Composition of widgets

#### 3. Widgets Layer (`apps/desktop/src/widgets/`)
#### 3. Widgets Layer (`apps/ui/src/widgets/`)
- Complex, self-contained UI blocks
- Combine multiple features and entities
- Business logic for widget behavior

#### 4. Features Layer (`apps/desktop/src/features/`)
#### 4. Features Layer (`apps/ui/src/features/`)
- User interactions (actions)
- Business logic for specific features
- Reusable across pages

#### 5. Entities Layer (`apps/desktop/src/entities/`)
#### 5. Entities Layer (`apps/ui/src/entities/`)
- Business entities (Profile, Sample, Generation, Model)
- Entity state management (Zustand)
- Tauri API calls for entities
- Entity UI components

#### 6. Shared Layer (`apps/desktop/src/shared/`)
#### 6. Shared Layer (`apps/ui/src/shared/`)
- Reusable UI components (shadcn/ui)
- Utilities, hooks, types
- No business logic
Expand Down
24 changes: 24 additions & 0 deletions apps/ui/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

node_modules
dist
dist-ssr
*.local

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
7 changes: 7 additions & 0 deletions apps/ui/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Tauri + React + Typescript

This template should help get you started developing with Tauri, React and Typescript in Vite.

## Recommended IDE Setup

- [VS Code](https://code.visualstudio.com/) + [Tauri](https://marketplace.visualstudio.com/items?itemName=tauri-apps.tauri-vscode) + [rust-analyzer](https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer)
29 changes: 29 additions & 0 deletions apps/ui/eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import js from '@eslint/js'
import globals from 'globals'
import reactHooks from 'eslint-plugin-react-hooks'
import reactRefresh from 'eslint-plugin-react-refresh'
import tseslint from 'typescript-eslint'

export default tseslint.config(
{ ignores: ['dist', 'node_modules', 'src-tauri'] },
{
extends: [js.configs.recommended, ...tseslint.configs.recommended],
files: ['**/*.{ts,tsx}'],
languageOptions: {
ecmaVersion: 2020,
globals: globals.browser,
},
plugins: {
'react-hooks': reactHooks,
'react-refresh': reactRefresh,
},
rules: {
...reactHooks.configs.recommended.rules,
'react-refresh/only-export-components': [
'warn',
{ allowConstantExport: true },
],
'@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_' }],
},
},
)
Loading
Loading