Skip to content

Desktop App Overview

Desktop App Overview

MiniFy is a desktop application built with Tauri and React. This page provides a comprehensive overview of the application’s features, architecture, and how all the pieces work together.

System Overview

┌───────────────────────────────────────────────────────────────────────────────────┐
│ MiniFy Desktop Application │
├───────────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────────────────────────────────────────────────────────────┐ │
│ │ User Interface (React + CSS) │ │
│ │ ┌──────────────────────────────────────────────────────────────────┐ │ │
│ │ │ Player Views │ │ │
│ │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────┐ │ │ │
│ │ │ │ LayoutA │ │ LayoutB │ │ LayoutC │ │ │ │
│ │ │ │ (Compact) │ │ (Standard) │ │ (Expanded) │ │ │ │
│ │ │ └──────────────┘ └──────────────┘ └──────────────────────┘ │ │ │
│ │ └──────────────────────────────────────────────────────────────────┘ │ │
│ │ ┌────────────────────┐ ┌────────────────────┐ ┌──────────────────┐ │ │
│ │ │ Settings View │ │ AI DJ View │ │ Context Menu │ │ │
│ │ │ (Configuration) │ │ (Chat Interface) │ │ (Quick Access) │ │ │
│ │ └────────────────────┘ └────────────────────┘ └──────────────────┘ │ │
│ └──────────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ │ IPC (Tauri Commands/Events) │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────────────────────┐ │
│ │ Backend (Rust + Tauri) │ │
│ │ ┌────────────────┐ ┌────────────────┐ ┌────────────────────────────┐ │ │
│ │ │ Spotify OAuth │ │ AI Keyring │ │ Settings Manager │ │ │
│ │ │ (PKCE Flow) │ │ (API Keys) │ │ (JSON Config) │ │ │
│ │ └───────┬────────┘ └───────┬────────┘ └────────────┬───────────────┘ │ │
│ │ │ │ │ │ │
│ │ ▼ ▼ ▼ │ │
│ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │
│ │ │ OS Credential Manager (Encrypted Keyring) │ │ │
│ │ │ • Spotify Tokens • AI API Keys • Client IDs │ │ │
│ │ └─────────────────────────────────────────────────────────────────────┘ │ │
│ └──────────────────────────────────────────────────────────────────────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Spotify API │ │ AI Providers │ │
│ │ (Web API) │ │ (LLM APIs) │ │
│ └─────────────────┘ └─────────────────┘ │
│ │
└────────────────────────────────────────────────────────────────────────────────────┘

Technology Stack

MiniFy leverages cutting-edge technologies for optimal performance and developer experience:

LayerTechnologyPurpose
RuntimeTauri 2.0Native app shell, system integration
BackendRustSecure operations, OAuth, keyring access
FrontendReact 18Modern UI with hooks and functional components
BuildViteFast development and optimized production builds
StylingCSS VariablesTheme system with runtime switching
AIVercel AI SDKMulti-provider AI integration
AuthOAuth 2.0 PKCESecure Spotify authentication

Core Features

Now Playing Display

The main interface shows your current playback with rich information:

Album Artwork

High-resolution album art with adaptive sizing based on layout

Track Information

Track name, artist, and album with overflow handling

Progress Bar

Interactive progress bar with seeking capability

Playback Status

Real-time play/pause state with visual indicator

Playback Controls

Full control over your Spotify playback:

ControlDescriptionKeyboard
Play/PauseToggle playbackSpace
Next TrackSkip to next song or N
Previous TrackGo back or P
SeekJump to positionClick progress bar
VolumeAdjust volume /

AI DJ

MiniFy includes an AI-powered music assistant that understands your listening habits:

┌─────────────────────────────────────────────────────────────────────────┐
│ AI DJ Capabilities │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ Music Profile Analysis │ │
│ │ • Top tracks and artists (short/medium/long term) │ │
│ │ • Genre preferences and distribution │ │
│ │ • Audio feature analysis (energy, mood, tempo, etc.) │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ Intelligent Recommendations │ │
│ │ • Mood-based suggestions ("play something upbeat") │ │
│ │ • History-based discovery ("more like what I've been playing") │ │
│ │ • Spotify's recommendation engine integration │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ Direct Playback Control │ │
│ │ • Search and play any track │ │
│ │ • Natural language commands ("find songs by...") │ │
│ │ • Automatic playback of recommendations │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
│ Supported Providers: OpenAI • Anthropic • Google AI • Groq │
│ │
└─────────────────────────────────────────────────────────────────────────┘

Learn more about AI DJ →

Theming System

MiniFy comes with 8 carefully crafted themes and supports custom themes:

┌────────────────────────────────────────────────────────────────────────────┐
│ Theme System │
├────────────────────────────────────────────────────────────────────────────┤
│ │
│ Built-in Themes Custom Themes │
│ ───────────────── ───────────────── │
│ ┌──────────────┐ ┌──────────────────────────────────┐ │
│ │ • Dark │ Theme JSON → │ { │ │
│ │ • Light │ │ "name": "Custom Theme", │ │
│ │ • Catppuccin │ │ "colors": { │ │
│ │ • Dracula │ │ "background": "#1a1b26", │ │
│ │ • ChatGPT │ │ "foreground": "#c0caf5", │ │
│ │ • YouTube │ │ "primary": "#7aa2f7", │ │
│ │ • BMW │ │ ... │ │
│ │ • Milka │ │ } │ │
│ └──────────────┘ │ } │ │
│ └──────────────────────────────────┘ │
│ │ │ │
│ └─────────────────┬───────────────────────┘ │
│ ▼ │
│ ┌──────────────────────────┐ │
│ │ CSS Variables Applied │ │
│ │ --background: #1a1b26 │ │
│ │ --foreground: #c0caf5 │ │
│ │ --primary: #7aa2f7 │ │
│ └──────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘

Learn more about Themes →

Window Behavior

MiniFy offers flexible window options for different workflows:

OptionDescriptionUse Case
Always on TopKeep MiniFy above other windowsMulti-tasking
Multiple LayoutsCompact, Standard, ExpandedScreen space
DraggablePosition anywhere on screenCustom placement
ResizableAdjust to your preferenceFine-tuning

Application Flow

Startup Sequence

┌───────────────────────────────────────────────────────────────────────────────┐
│ Application Startup Flow │
├───────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────┐ │
│ │ App Launches │ │
│ └────────┬────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ No ┌─────────────────────────────────────┐ │
│ │ Spotify Client │────────────▶│ Show Client ID Setup Screen │ │
│ │ ID Configured? │ │ (User enters their own Client ID) │ │
│ └────────┬────────┘ └─────────────────────────────────────┘ │
│ │ Yes │
│ ▼ │
│ ┌─────────────────┐ No ┌─────────────────────────────────────┐ │
│ │ Valid Tokens │────────────▶│ Show Connect to Spotify Button │ │
│ │ in Keyring? │ │ (Initiates OAuth PKCE Flow) │ │
│ └────────┬────────┘ └─────────────────────────────────────┘ │
│ │ Yes │
│ ▼ │
│ ┌─────────────────┐ │
│ │ Load Settings │◀─── Theme, Layout, AI Providers │
│ │ from JSON file │ │
│ └────────┬────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ Start Token │◀─── Background task every 5 minutes │
│ │ Refresh Task │ │
│ └────────┬────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ Show Player │◀─── Begin polling Spotify for current track │
│ │ View │ │
│ └─────────────────┘ │
│ │
└────────────────────────────────────────────────────────────────────────────────┘

Main Application Loop

┌───────────────────────────────────────────────────────────────────────────────┐
│ Main Application Loop │
├───────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────────────────────┐ │
│ │ Playback Polling Loop │ │
│ │ │ │
│ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────────┐ │ │
│ │ │ Fetch │───▶│ Update React │───▶│ Re-render Components │ │ │
│ │ │ Currently │ │ State │ │ (Layout, Controls, etc.) │ │ │
│ │ │ Playing │ │ │ │ │ │ │
│ │ └──────────────┘ └──────────────┘ └──────────────────────────┘ │ │
│ │ ▲ │ │
│ │ │ Wait 1-5 seconds (based on playback state) │ │
│ │ └──────────────────────────────────────────────────────────────┘ │
│ └─────────────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────────────────┐ │
│ │ User Interactions │ │
│ │ │ │
│ │ Play/Pause ─────▶ PUT /me/player/play or /pause │ │
│ │ Next Track ─────▶ POST /me/player/next │ │
│ │ Previous ───────▶ POST /me/player/previous │ │
│ │ Seek ───────────▶ PUT /me/player/seek?position_ms=... │ │
│ │ Theme Change ───▶ Update CSS variables + save to settings │ │
│ │ Layout Change ──▶ Update window size + save to settings │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────────────────┐ │
│ │ Background Tasks │ │
│ │ │ │
│ │ Token Refresh ──▶ Every 5 min, check expiry, refresh if needed │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────────┘ │
│ │
└────────────────────────────────────────────────────────────────────────────────┘

Performance Characteristics

MiniFy is designed to be lightweight and efficient:

MetricTargetDescription
Download Size~10MBSignificantly smaller than Electron apps
Memory Usage< 50MBEfficient Rust backend
CPU (Idle)< 1%Optimized polling intervals
CPU (Active)< 3%During playback updates
Startup Time< 1sNative performance

Why So Lightweight?

  1. Tauri vs Electron: Tauri uses the system’s native webview instead of bundling Chromium
  2. Rust Backend: Compiled native code is more efficient than Node.js
  3. Minimal Dependencies: Only essential libraries included
  4. Smart Polling: Adjusts poll rate based on playback state

Security Model

MiniFy follows security best practices:

┌───────────────────────────────────────────────────────────────────────────────┐
│ Security Layers │
├───────────────────────────────────────────────────────────────────────────────┤
│ │
│ Layer 1: Authentication │
│ ─────────────────────── │
│ • OAuth 2.0 PKCE (most secure flow for public clients) │
│ • No client secret stored in app │
│ • CSRF protection with state parameter │
│ │
│ Layer 2: Credential Storage │
│ ────────────────────────── │
│ • OS-level encrypted keyring (DPAPI/Keychain/Secret Service) │
│ • Tokens never stored in plain text │
│ • Each credential isolated by key name │
│ │
│ Layer 3: Network Security │
│ ───────────────────────── │
│ • All API calls over HTTPS/TLS │
│ • OAuth callback on localhost only │
│ • No data sent to MiniFy servers │
│ │
│ Layer 4: AI Isolation │
│ ──────────────────── │
│ • AI providers never receive tokens │
│ • Only metadata (track names, etc.) shared with AI │
│ • Each AI key stored separately │
│ │
└────────────────────────────────────────────────────────────────────────────────┘

Learn more about Security →

Feature Matrix

FeatureStatusDescription
Now PlayingReal-time track display
Playback ControlPlay, pause, skip, seek
Multiple Themes8 built-in + custom themes
Multiple Layouts3 layout options
Keyboard ShortcutsGlobal and in-app shortcuts
AI DJMulti-provider AI assistant
Custom ThemesJSON-based theme creation
Always on TopWindow pinning
Cross-platformWindows, macOS, Linux

Next Steps