DragonFruit is an open-source resin slicer and support-generation environment built by the Open Resin Alliance. It combines a modern Next.js + React frontend with native Rust slicing backends and a Tauri desktop runtime.
Unless a subdirectory or submodule states otherwise, DragonFruit content in this repository is licensed under AGPL-3.0-or-later.
⚠️ DragonFruit is under active development. Please exercise caution for production print workflows, validate outputs, and avoid unattended printing on first use.
- About DragonFruit
- Features
- Getting Started
- Localization (i18n)
- Project Structure
- Contributing
- License
- Contact
DragonFruit focuses on practical resin-print preparation workflows, including model inspection, island analysis, transform tooling, support authoring, and native slicing integration. It is designed as a desktop-first toolchain while keeping the frontend highly iterative for rapid feature development.
DragonFruit currently includes a growing set of capabilities for resin 3D printing:
- Interactive 3D Workspace: High-performance model visualization and manipulation using
three.js+react-three-fiber. - Advanced Transform Tooling: Move/Rotate/Scale workflows with precision controls and viewport gizmos.
- Island Analysis & Volume Tools: Layer-aware unsupported-region detection and analysis workflows.
- Support Authoring Systems: Branch/grid/raft support workflows with rendering and snapping infrastructure.
- Desktop Runtime via Tauri: Native desktop app pipeline with Rust backend integration.
- Extensible Architecture: Plugin and profile systems for materials, printers, and ecosystem integrations.
To get started with DragonFruit, follow one of these variants depending on your workflow.
DragonFruit supports plugins that can be sourced as Git submodules (for example plugins/ctb).
If your local clone is missing plugin folders, generation/build will continue with available plugins only (missing submodules are skipped with warnings).
Initialize/update submodules when you need to develop or validate those specific plugin integrations.
For UI and interaction development only (without full desktop packaging):
- Prerequisites: Install Node.js (LTS recommended) and npm.
- Install Dependencies: From the repository root, install packages with
npm install. - Run Dev Server: Start the app with
npm run dev. - Open in Browser: Visit
http://localhost:3005.
For full desktop development with native backend wiring:
- Prerequisites: Install Node.js, Rust toolchain, and Tauri system dependencies for your platform.
- Install JS Dependencies: Run
npm installin the project root. - Run Desktop Dev Mode: Launch with
npm run tauri:dev. - Iterate Across Stacks: Frontend and Rust backend changes can be tested through the same Tauri dev workflow.
For release-style builds and bundles:
- Frontend Build: Run
npm run build(ornpm run build:taurifor prepared Tauri frontend artifacts). - Desktop Build: Build desktop binaries with
npm run tauri:build. - Bundle Targets: Use
npm run tauri:bundle(builds Windows, Linux, and a universal macOS DMG) or platform-specific scripts:npm run tauri:bundle:windowsnpm run tauri:bundle:linuxnpm run tauri:bundle:macos:universal— canonical macOS / release target. Produces one fat.dmgthat runs natively on both Intel and Apple Silicon. It builds viatauri-build.mjs --universal, which setsCMAKE_OSX_ARCHITECTURES="arm64;x86_64"so manifold's C++ links fat, embeds the universal QuickLook extension, code-signs, and verifies the bundle is fat- signed. See ADR 0005.
npm run tauri:bundle:macos/npm run tauri:bundle:macos:arm64— single-arch shortcuts for fast local dev only (these do not embed the QuickLook extension and are not suitable for release).
See LOCALE.md for details on DragonFruit's internationalization setup, including supported locales, catalog structure, workflow commands, and runtime language selection.
Help translate DragonFruit at translate.dragonfruit-slicer.com.
High-level layout of key project areas:
docs/— Architecture notes, implementation guides, and domain documentation.plugins/— Plugin architecture and ecosystem integrations (see LICENSE).profiles/— Printer and material profile definitions.rust/dragonfruit-slicing-engine/— Rust slicer backend workspace.src/— Next.js app, React components, scene controls, support systems, hooks, i18n catalogs, and utilities.src-tauri/— Tauri desktop host and native integration points.
We welcome and appreciate contributions to DragonFruit! If you'd like to contribute:
- Fork the Repository: Create a personal fork and branch for your feature/fix.
- Implement Changes: Keep changes focused and aligned with project conventions.
- Run Checks: Validate with
npm run lintandnpm run testwhere applicable. - Submit a Pull Request: Open a PR with a clear summary, rationale, and validation notes.
Unless stated otherwise in a subdirectory or submodule, DragonFruit is licensed under AGPL-3.0-or-later. See the top-level LICENSE file for the full terms.
The plugin submodules under plugins/ are licensed separately under MIT. Each plugin repository includes its own LICENSE file.
If you have questions, feedback, or ideas, join us on the Open Resin Alliance Discord.