Skip to content

SinanGncgl/smoothie

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

12 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Smoothie - Desktop Workspace Profile Manager

CI/CD License: MIT Contributors Issues PRs Welcome

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.

✨ Features

  • 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

πŸ“Έ Screenshots

Dashboard

Dashboard Main dashboard showing workspace profiles and system status

Profile Management

Profile Management Create and manage workspace profiles with monitor layouts and app configurations

Monitor Editor

Monitor Editor Visual monitor layout editor with drag-and-drop positioning and system application

System Capture

System Capture Capture current monitor setup and running applications

Settings

Settings Configure app preferences and automation rules

Help & Support

Help & Support FAQ, feedback submission, and support resources

πŸš€ Quick Start

# Clone the repository
git clone <repository-url>
cd smoothie

# Install dependencies
pnpm install

# Start development environment
pnpm run dev

πŸ”§ Setup

Prerequisites

  • 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)

Installing Tauri CLI

cargo install tauri-cli

Installing displayplacer

# Using Homebrew
brew install jakehilborn/jakehilborn/displayplacer

# Or download from GitHub releases
# https://github.com/jakehilborn/displayplacer/releases

Note: Monitor layout changes require administrator privileges. The app will attempt to apply changes automatically, but may fall back to providing a manual command.

Database Setup

The app uses PostgreSQL running in Docker:

# Start PostgreSQL database
docker-compose up -d postgres

# The database will be available at localhost:5432

πŸ“š Documentation

For 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

πŸ—οΈ Tech Stack

  • 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)

πŸ”§ Development

Development Scripts

  • pnpm run dev - Start full development stack (Tauri + Next.js)
  • pnpm run build - Build for production
  • cargo build - Build Rust backend only
  • cargo test - Run Rust tests

Docker Development

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 frontend

This 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.

πŸš€ Production Deployment

Building for Production

# Build the application
pnpm run tauri build

# The built app will be in src-tauri/target/release/bundle/

Environment Variables

For production, set the database URL:

DATABASE_URL=postgresql://username:password@localhost:5432/smoothie_prod

The application will automatically run database migrations on startup.

πŸ“ Project Structure

β”œβ”€β”€ 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

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

🀝 Contributing

We welcome contributions! Please see our Contributing Guide for details on:

  • Development setup
  • Coding standards
  • Pull request process
  • Testing guidelines

Quick Start for Contributors

git clone https://github.com/SinanGncgl/smoothie.git
cd smoothie
pnpm install
docker-compose up -d postgres
pnpm tauri dev

πŸ“‹ Community

πŸ“ž Support

If you have any questions or need help:


About

Screen, app and window manager

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors