SpoolSync-Desktop Svelte Themes

Spoolsync Desktop

Desktop app for managing 3D printer filament profiles and syncing to Bambu Lab printers via MQTT - Built with Tauri v2 + Svelte

SpoolSync Desktop

Desktop companion for managing 3D printer filament profiles and syncing to Bambu Lab printers via MQTT.

Built with Tauri v2 + Svelte 5 for maximum performance and minimal footprint (~8MB binary).


Overview

SpoolSync Desktop is a native desktop app that lets you:

  • ๐Ÿ” Browse filament profiles from your SpoolmanDB instance
  • โญ Manage favorites and local custom profiles
  • ๐Ÿงต Configure Bambu Lab AMS slots from the desktop
  • ๐Ÿ”Œ Sync profiles via MQTT directly to your printer
  • ๐Ÿงฉ Work fully offline for local profiles and settings

Color browsing via FilamentColors is planned but not implemented yet and is tracked in the roadmap.


Current Feature Status

Area Status Notes
Core layout & routing โœ… Sidebar, pages, loading & error handling
SQLite storage โœ… Profiles, favorites, custom profiles, settings
Favorites & custom profiles โœ… List, create, delete, basic validation
AMS sync page โœ… Basic AMS page and settings wiring
AMS settings in Settings โœ… AMS defaults stored in settings DB
MQTT client ๐Ÿšง rumqttc integration in progress
SpoolmanDB integration ๐Ÿšง Client, pagination, filters in progress
FilamentColors integration โธ Deferred to later phase
Theme switcher ๐Ÿšง UI present, persistence WIP
Import/Export ๐Ÿ”œ JSON import/export not yet implemented
Google auth & Drive sync ๐Ÿ”œ Planned for later phases

For full implementation details, see the roadmap.


Screenshots

Screenshots will be added once the AMS sync and Spoolman browser flows are fully polished.


Tech Stack

Layer Technology Purpose
Frontend Svelte 5 + SvelteKit Reactive UI, routing
Styling Tailwind CSS Utility-first styling
Backend Rust (Tauri v2) Native shell, MQTT, DB
Database SQLite (rusqlite) Local persistent storage
MQTT rumqttc Bambu Lab communication
HTTP Tauri HTTP APIs SpoolmanDB integration

Installation

Prerequisites

All platforms

Arch Linux

sudo pacman -S webkit2gtk-4.1 base-devel curl wget file openssl appmenu-gtk-module gtk3 libappindicator-gtk3 librsvg

macOS

xcode-select --install

Windows


Setup & Run

# Clone repository
git clone https://github.com/GaelicThunder/SpoolSync-Desktop.git
cd SpoolSync-Desktop

# Install JS dependencies
npm install

# Development with hot reload
npm run tauri:dev

# Build optimized binary
npm run tauri:build

On first run, configure your printer and AMS under Settings โ†’ Printer & AMS.


Usage Overview

1. Configure Printer & AMS

  • Open Settings โ†’ Printer & AMS.
  • Set printer IP, serial, access code.
  • Configure default AMS slot and AMS behavior.
  • Save and optionally use the Test connection button (once implemented in Phase 9/14).

2. Browse & Manage Profiles

  • Use the Browse / Spoolman page to query filament profiles from SpoolmanDB (when enabled).
  • Mark profiles as favorite for quick access.
  • Create custom profiles under the Custom section for filaments that are not present in Spoolman.

3. Sync to Bambu AMS

  • Go to the AMS Sync page.
  • Select:
    • Target printer
    • AMS unit and slot
    • Filament profile (favorite or custom)
  • Trigger sync to send the configuration via MQTT to your Bambu Lab printer.

FilamentColors-based color browsing will be added later and is not required for AMS sync.


Development

Project Structure

SpoolSync-Desktop/
โ”œโ”€โ”€ src/                      # Svelte frontend
โ”‚   โ”œโ”€โ”€ routes/
โ”‚   โ”‚   โ”œโ”€โ”€ +layout.svelte     # Root layout & shell
โ”‚   โ”‚   โ”œโ”€โ”€ browse/            # Spoolman browser
โ”‚   โ”‚   โ”œโ”€โ”€ favorites/         # Favorites listing
โ”‚   โ”‚   โ”œโ”€โ”€ custom/            # Custom profiles CRUD
โ”‚   โ”‚   โ”œโ”€โ”€ ams/               # AMS sync page
โ”‚   โ”‚   โ””โ”€โ”€ settings/          # Printer & AMS settings
โ”‚   โ”œโ”€โ”€ app.css                # Tailwind entry
โ”‚   โ””โ”€โ”€ app.html               # HTML template
โ”œโ”€โ”€ src-tauri/                 # Rust backend
โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ””โ”€โ”€ main.rs            # Tauri commands & MQTT/DB glue
โ”‚   โ”œโ”€โ”€ Cargo.toml
โ”‚   โ””โ”€โ”€ tauri.conf.json        # App config
โ”œโ”€โ”€ package.json
โ”œโ”€โ”€ vite.config.ts
โ”œโ”€โ”€ svelte.config.js
โ”œโ”€โ”€ tailwind.config.js
โ””โ”€โ”€ TODO.md                    # Detailed roadmap

Commands

# Dev with Tauri shell
npm run tauri:dev

# Build
npm run tauri:build

# Type checking / linting
npm run check

# Frontend-only dev (no Tauri shell)
npm run dev

Roadmap

The full roadmap lives in TODO.md. High-level phases:

  • Phase 4โ€“7: SpoolmanDB integration, MQTT, AMS UX
  • Phase 8โ€“9: Import/Export, Settings polish, theme persistence
  • Phase 10โ€“11: Google auth and Drive sync
  • Phase 12โ€“13: Desktop niceties, animations, notifications
  • Phase 14: Testing, CI, release tooling

Current internal status is updated directly in TODO.md.

FilamentColors support and advanced color tools are explicitly tracked under Phase 5: Color Browser and are not yet implemented.


Contributing

Pull requests are welcome. For larger changes, please open an issue first to discuss the design.

Recommended workflow:

  1. Create a feature branch: git checkout -b feature/my-feature
  2. Implement and add tests where applicable
  3. Run npm run check and npm run tauri:build
  4. Open a Pull Request with a clear description

License & Contact

This project is licensed under the MIT License. See LICENSE.


Status: Active development (Phase 7 โ€“ MQTT & AMS polish)

Top categories

Loading Svelte Themes