GitPedia

Oxide dock

Rust + Vue 3 + Tauri v2 desktop starter - CI/CD, testing, and cross-platform releases out of the box

From fridzema·Updated June 18, 2026·View on GitHub·

OxideDock is a Rust + Vue 3 desktop starter built on Tauri v2 — native performance, polished DX, ship-ready apps. The project is written primarily in TypeScript, distributed under the MIT License license, first published in 2026. Key topics include: cross-platform, desktop-, electron-alternative, rust, starter-kit.

Latest release: oxidedock-v0.7.1oxidedock: v0.7.1
May 12, 2026View Changelog →

OxideDock

CI
License: MIT
GitHub stars
Release
PRs Welcome

Raw speed, refined desktop.

OxideDock is a Rust + Vue 3 desktop starter built on Tauri v2 — native performance, polished DX, ship-ready apps.

<p align="center"> <img src=".art/screens/screen.png" alt="OxideDock screenshot" width="700" /> </p>

Why OxideDock?

Starting a Tauri app from scratch means wiring up routing, state management, testing, linting, CI/CD, and release pipelines yourself. OxideDock gives you all of that out of the box so you can skip the boilerplate and start building your app from day one.

  • Production-ready defaults — linting, formatting, testing, and CI all preconfigured
  • Cross-platform releases — push a tag and get Linux, macOS, and Windows binaries
  • One commandmake dev and you're running

Features

  • Tauri v2 — lightweight, secure desktop runtime
  • Vue 3 — reactive frontend with Composition API
  • Vite — fast dev server and build tool
  • TypeScript — type-safe frontend and configuration
  • Tailwind CSS v4 — utility-first styling with Vite plugin
  • Vue Router — client-side routing
  • Pinia — type-safe state management
  • VueUse — essential Vue composables
  • Vitest — fast unit and component testing
  • Playwright — e2e testing against the web frontend
  • ESLint — flat config with Vue 3 + TypeScript rules
  • Prettier — consistent code formatting
  • Oxlint — fast supplemental linting
  • Clippy + Rustfmt — Rust linting and formatting
  • cargo-audit — Rust dependency security auditing
  • Lefthook — fast, parallel pre-commit hooks
  • GitHub Actions — CI (lint + test + build) and release pipelines
  • Makefile — unified task runner for all operations

Prerequisites

Quick Start

bash
# Clone the template git clone https://github.com/fridzema/oxide-dock.git cd oxide-dock # Verify prerequisites (Rust, Bun) make check # Install dependencies make setup # (Optional) Rename the project to your own app make bootstrap # Start development make dev

Project Structure

oxidedock/
├── .github/workflows/     # CI and release pipelines
├── .vscode/               # Editor settings and extensions
├── src/                   # Vue 3 frontend
│   ├── components/        # Reusable components
│   ├── composables/       # Shared composables
│   ├── layouts/           # Layout components
│   ├── pages/             # Route views
│   ├── router/            # Vue Router configuration
│   ├── stores/            # Pinia stores
│   ├── App.vue            # Root component
│   ├── main.ts            # App entry point
│   └── style.css          # Tailwind CSS imports
├── src-tauri/             # Rust backend
│   ├── src/               # Rust source code
│   ├── capabilities/      # Permission capabilities
│   ├── Cargo.toml         # Rust dependencies
│   └── tauri.conf.json    # Tauri configuration
├── tests/
│   ├── unit/              # Vitest unit tests
│   └── e2e/               # Playwright e2e tests
├── Makefile               # Task runner
├── lefthook.yml           # Git hooks
└── README.md

Available Commands

Development

CommandDescription
make devStart Tauri dev with hot reload
make dev-frontendStart Vite dev server only
make buildBuild production binary
make build-debugBuild with debug console

Linting & Formatting

CommandDescription
make lintRun all linters (ESLint + Oxlint + Clippy)
make lint-fixAuto-fix linting issues
make formatFormat all files
make format-checkCheck formatting

Testing

CommandDescription
make testRun all tests
make test-unitRun Vitest unit tests
make test-e2eRun Playwright e2e tests
make test-watchRun Vitest in watch mode

Rust

CommandDescription
make rust-lintRun Clippy
make rust-formatRun Rustfmt
make rust-auditCheck for vulnerabilities
make rust-testRun Rust tests

CI, Setup & Bootstrap

CommandDescription
make checkVerify prerequisites are installed
make setupInstall all dependencies
make bootstrapRename project to your own app
make ciRun full CI pipeline locally
make coverageRun all coverage (Rust + Vue)
make cleanRemove build artifacts

Tech Stack

TechnologyVersionPurpose
Tauriv2Desktop runtime
Vuev3Frontend framework
Vitev7Build tool
TypeScriptv5Type safety
Tailwind CSSv4Styling
Vue Routerv5Routing
Piniav3State management
VueUselatestComposable utilities
VitestlatestUnit testing
PlaywrightlatestE2e testing
ESLintv10JS/TS/Vue linting
Prettierv3Code formatting
OxlintlatestFast supplemental linting
LefthooklatestGit hooks

CI/CD

CI Pipeline (ci.yml)

Runs on every push to main and on pull requests:

  1. Lint — ESLint, Oxlint, Prettier check
  2. Rust Lint — Clippy + Rustfmt (Linux only)
  3. Test — Vitest unit tests, Playwright e2e (chromium), Rust tests on all platforms with coverage on Linux
  4. Auditcargo audit runs daily and on Cargo dependency changes (separate workflow)
  5. Build — Linux smoke build (main branch only); full cross-platform build happens at release time

Release Pipeline

Releases are fully automated via release-please:

  1. Push conventional commits to main (fix:, feat:, feat!:)
  2. Release-please opens a PR bumping versions and updating CHANGELOG.md
  3. Merging the PR tags the release, triggering cross-platform builds
  4. A draft GitHub Release is created with platform binaries:
    • Linux: .deb, .AppImage
    • macOS: .dmg (Intel + Apple Silicon)
    • Windows: .msi, .exe

Check release status with make release-status.

Customization

Change App Name and Icon

  1. Update name in package.json
  2. Update productName in src-tauri/tauri.conf.json
  3. Replace icons in src-tauri/icons/ (use bun tauri icon /path/to/icon.png)

Add a UI Component Library

bash
# Shadcn Vue bunx shadcn-vue@latest init # Or PrimeVue bun add primevue

Add Internationalization

bash
bun add vue-i18n

Create locale files in src/locales/ and register the plugin in src/main.ts.

Code Signing

Follow the Tauri code signing guide to set up signing for macOS and Windows distribution.

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/your-feature)
  3. Make your changes
  4. Run make ci to verify everything passes
  5. Commit with a descriptive message
  6. Push and open a pull request

Contributors

<a href="https://github.com/fridzema/oxide-dock/graphs/contributors"> <img src="https://contrib.rocks/image?repo=fridzema/oxide-dock" /> </a>

License

MIT

Contributors

Showing top 4 contributors by commit count.

View all contributors on GitHub →

This article is auto-generated from fridzema/oxide-dock via the GitHub API.Last fetched: 6/24/2026