{"id":50888811,"url":"https://github.com/hamawebdev/template-tauri-desktop","last_synced_at":"2026-06-15T19:31:56.967Z","repository":{"id":364269662,"uuid":"1256546814","full_name":"hamawebdev/template-tauri-desktop","owner":"hamawebdev","description":null,"archived":false,"fork":false,"pushed_at":"2026-06-12T09:52:29.000Z","size":357,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-12T11:20:32.650Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hamawebdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-01T22:05:23.000Z","updated_at":"2026-06-12T09:52:33.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/hamawebdev/template-tauri-desktop","commit_stats":null,"previous_names":["hamawebdev/template-tauri-desktop"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/hamawebdev/template-tauri-desktop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hamawebdev%2Ftemplate-tauri-desktop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hamawebdev%2Ftemplate-tauri-desktop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hamawebdev%2Ftemplate-tauri-desktop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hamawebdev%2Ftemplate-tauri-desktop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hamawebdev","download_url":"https://codeload.github.com/hamawebdev/template-tauri-desktop/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hamawebdev%2Ftemplate-tauri-desktop/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34377872,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-15T02:00:07.085Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-15T19:31:56.882Z","updated_at":"2026-06-15T19:31:56.959Z","avatar_url":"https://github.com/hamawebdev.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tauri Desktop Template\n\nAn opinionated, batteries-included starter for desktop apps built with\n**Tauri 2 + React 19 + TypeScript + Vite**. Clone it, rename it, and start\nbuilding.\n\n\n# Important\nchange identifier, current identifier is com.hamawebdev.atelier \n\n## Stack\n\n| Area          | Choice                                                                                   |\n| ------------- | ---------------------------------------------------------------------------------------- |\n| Shell         | [Tauri 2](https://tauri.app)                                                             |\n| UI            | React 19, [Tailwind CSS v4](https://tailwindcss.com), [shadcn/ui](https://ui.shadcn.com) |\n| Routing       | React Router (hash router)                                                               |\n| State         | [Zustand](https://github.com/pmndrs/zustand) (persisted)                                 |\n| Data fetching | [TanStack Query](https://tanstack.com/query)                                             |\n| Database      | SQLite via `@tauri-apps/plugin-sql` (migrations in Rust)                                 |\n| Rust ↔ TS     | [tauri-specta](https://github.com/specta-rs/tauri-specta) typed bindings                 |\n| Tooling       | ESLint, Prettier, EditorConfig                                                           |\n| CI/CD         | GitHub Actions (lint + clippy on PR, cross-platform release on tag)                      |\n\n### Bundled Tauri plugins\n\n`store`, `sql`, `dialog`, `fs`, `notification`, `log`, `os`, `opener`, plus\ndesktop-only `single-instance`, `window-state`, `updater`, and `process`.\n\n## Getting started\n\n```bash\nnpm install\nnpm run tauri dev\n```\n\nThe first `npm run tauri dev` (or `cargo test export_bindings` in `src-tauri/`)\ngenerates `src/lib/bindings.ts` — the typed client for your Rust commands.\nIt regenerates automatically on every dev build.\n\n## Project layout\n\n```\nsrc/                     React frontend\n  components/            layout, theme provider, ui/ (shadcn)\n  pages/                 route components\n  store/                 Zustand stores\n  lib/                   utils, db helpers, generated bindings.ts\nsrc-tauri/\n  src/lib.rs             plugin registration, commands, SQL migrations\n  capabilities/          per-window permission sets\n  tauri.conf.json        app + bundle config\n```\n\n## Common scripts\n\n| Command               | Description                     |\n| --------------------- | ------------------------------- |\n| `npm run tauri dev`   | Run the desktop app in dev mode |\n| `npm run tauri build` | Build production installers     |\n| `npm run lint`        | ESLint                          |\n| `npm run format`      | Prettier (write)                |\n\n## Adding a Rust command\n\n1. Write the function in `src-tauri/src/lib.rs` with `#[tauri::command]` and\n   `#[specta::specta]`.\n2. Add it to `collect_commands![...]` in `specta_builder()`.\n3. Run `npm run tauri dev` to regenerate `src/lib/bindings.ts`.\n4. Call it from the frontend: `import { commands } from \"@/lib/bindings\"`.\n\n## Adding a shadcn component\n\n```bash\nnpx shadcn@latest add \u003ccomponent\u003e\n```\n\n## Database migrations\n\nEdit the `migrations()` vec in `src-tauri/src/lib.rs`, bumping `version` for\neach new migration. They run automatically against `sqlite:app.db` on startup.\n\n## Auto-updates\n\nThe `updater` plugin is registered but not configured. To enable releases:\n\n1. `npm run tauri signer generate` to create signing keys.\n2. Add the public key under `plugins.updater` in `tauri.conf.json` and set the\n   `endpoints`.\n3. Uncomment the signing-key env vars in `.github/workflows/release.yml` and add\n   them as repository secrets.\n\n## Renaming for a new project\n\nUpdate: `name`/`productName`/`identifier` in `tauri.conf.json`, `name` in\n`src-tauri/Cargo.toml` (and the `_lib` name), `name` in `package.json`, the\nwindow `title`, and this README.\n\n\n## Notes\n\nTo reuse as a template for a new project\nRename in tauri.conf.json (productName/identifier), Cargo.toml (name + _lib), and package.json.\n\nFor auto-updates: npm run tauri signer generate, add the pubkey/endpoints under plugins.updater, and uncomment the signing secrets in the release workflow.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhamawebdev%2Ftemplate-tauri-desktop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhamawebdev%2Ftemplate-tauri-desktop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhamawebdev%2Ftemplate-tauri-desktop/lists"}