A Tauri-based desktop application for managing and switching between different workspace profiles on macOS. Capture monitor arrangements, window positions, and running applications to create reusable workspace configurations.
- System Detection: Capture current monitor setup, window positions, and running apps
- Profile Management: Save and restore workspace configurations
- Monitor Layout Application: Apply monitor arrangements to macOS display settings
- Automation Rules: Trigger profile switches based on conditions
- Modern UI: Clean, responsive interface built with Radix UI
Main dashboard showing workspace profiles and system status
Create and manage workspace profiles with monitor layouts and app configurations
Visual monitor layout editor with drag-and-drop positioning and system application
Capture current monitor setup and running applications
Configure app preferences and automation rules
FAQ, feedback submission, and support resources
# Clone the repository
git clone <repository-url>
cd smoothie
# Install dependencies
pnpm install
# Start development environment
pnpm run dev- Node.js 18+ - Download
- Rust 1.70+ - Install
- Tauri CLI - Install with
cargo install tauri-cli - macOS (required for Tauri development)
- Docker & Docker Compose (for database)
- displayplacer (for monitor layout management)
cargo install tauri-cli# Using Homebrew
brew install jakehilborn/jakehilborn/displayplacer
# Or download from GitHub releases
# https://github.com/jakehilborn/displayplacer/releasesNote: Monitor layout changes require administrator privileges. The app will attempt to apply changes automatically, but may fall back to providing a manual command.
The app uses PostgreSQL running in Docker:
# Start PostgreSQL database
docker-compose up -d postgres
# The database will be available at localhost:5432For comprehensive documentation on the codebase architecture, data flows, and development guides:
This includes:
- Architecture Overview - How the Tauri + Next.js + Rust stack works
- Data Flow Diagrams - System detection and profile management flows
- File-by-File Documentation - Detailed explanations of every major component
- Development Workflow - Step-by-step guides for adding features
- Navigation Guide - Essential files for new developers
- Troubleshooting - Common issues and debug tools
- Frontend: Next.js 16 + React 19 + TypeScript + Tailwind CSS
- Backend: Rust + Tauri 2.0 + PostgreSQL
- UI: Radix UI + shadcn/ui components
- Platform: macOS (CoreGraphics APIs)
pnpm run dev- Start full development stack (Tauri + Next.js)pnpm run build- Build for productioncargo build- Build Rust backend onlycargo test- Run Rust tests
For containerized development:
# Start full development environment
docker-compose up
# Or run specific services
docker-compose up frontend # Next.js dev server on port 3000
docker-compose up postgres # PostgreSQL database
# Rebuild containers when dependencies change
docker-compose up --build frontendThis sets up:
- Frontend: Next.js development server with hot reload on port 3000
- Database: PostgreSQL with persistent volume
- Networking: Isolated network for service communication
Note: If you modify package.json or pnpm-lock.yaml, rebuild the frontend container with docker-compose up --build frontend to install updated dependencies.
# Build the application
pnpm run tauri build
# The built app will be in src-tauri/target/release/bundle/For production, set the database URL:
DATABASE_URL=postgresql://username:password@localhost:5432/smoothie_prodThe application will automatically run database migrations on startup.
βββ app/ # Next.js pages
βββ components/ # React components
βββ hooks/ # Custom React hooks
βββ lib/ # Utilities and API wrappers
βββ src-tauri/ # Rust backend
β βββ src/
β β βββ handlers/ # Tauri command handlers
β β βββ services/ # Business logic
β β βββ repositories/ # Data access
β β βββ models/ # Data structures
β βββ Cargo.toml
βββ docs/ # π Complete documentation
βββ package.json
This project is licensed under the MIT License - see the LICENSE file for details.
We welcome contributions! Please see our Contributing Guide for details on:
- Development setup
- Coding standards
- Pull request process
- Testing guidelines
git clone https://github.com/SinanGncgl/smoothie.git
cd smoothie
pnpm install
docker-compose up -d postgres
pnpm tauri devIf you have any questions or need help:
- π§ Open an issue on GitHub
- π¬ Check the documentation
- π€ Read our contributing guide