{"id":34717910,"url":"https://github.com/hoan02/ops-flow","last_synced_at":"2026-01-13T20:46:04.499Z","repository":{"id":330293738,"uuid":"1122252394","full_name":"hoan02/ops-flow","owner":"hoan02","description":"Ops Flow là công cụ desktop DevOps giúp trực quan hóa và theo dõi trạng thái hệ thống theo thời gian thực, quản lý cấu hình và tích hợp CI/CD như GitLab, Jenkins, Kubernetes, SonarQube và Keycloak.","archived":false,"fork":false,"pushed_at":"2025-12-25T11:10:51.000Z","size":8120,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-26T03:40:51.825Z","etag":null,"topics":["devops","rust","tauri"],"latest_commit_sha":null,"homepage":"","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/hoan02.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-12-24T11:09:00.000Z","updated_at":"2025-12-25T11:10:55.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/hoan02/ops-flow","commit_stats":null,"previous_names":["hoan02/ops-flow"],"tags_count":1,"template":false,"template_full_name":"dannysmith/tauri-template","purl":"pkg:github/hoan02/ops-flow","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoan02%2Fops-flow","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoan02%2Fops-flow/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoan02%2Fops-flow/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoan02%2Fops-flow/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hoan02","download_url":"https://codeload.github.com/hoan02/ops-flow/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoan02%2Fops-flow/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28400040,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-13T14:36:09.778Z","status":"ssl_error","status_checked_at":"2026-01-13T14:35:19.697Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["devops","rust","tauri"],"created_at":"2025-12-25T01:16:51.196Z","updated_at":"2026-01-13T20:46:04.493Z","avatar_url":"https://github.com/hoan02.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ops Flow\n\nOps Flow is a desktop DevOps control and visualization tool that provides real-time visibility into projects, environments, and CI/CD integrations. It enables configuration orchestration and status monitoring across GitLab, Jenkins, Kubernetes, SonarQube, and Keycloak while complementing existing DevOps workflows.\n\n## Why This Template?\n\nMost Tauri starters give you a blank canvas. This template gives you a **working application** with patterns already established:\n\n- **Type-safe Rust-TypeScript bridge** via tauri-specta.\n- **Performance patterns enforced by tooling** - all the usual linting plus ast-grep for common anti-patterns\n- **Multi-window architecture** already working (quick pane with global shortcut as a demo)\n- **Cross-platform ready** with platform-specific title bars, window controls, and native menu integration\n- **i18n built-in** with RTL support\n\n## Stack\n\n| Layer    | Technologies                                    |\n| -------- | ----------------------------------------------- |\n| Frontend | React 19, TypeScript, Vite 7                    |\n| UI       | shadcn/ui v4, Tailwind CSS v4, Lucide React     |\n| State    | Zustand v5, TanStack Query v5                   |\n| Backend  | Tauri v2, Rust                                  |\n| Testing  | Vitest v4, Testing Library                      |\n| Quality  | ESLint, Prettier, ast-grep, knip, jscpd, clippy |\n\n## What's Already Built\n\nThe template includes a working application with these features implemented:\n\n### Core Features\n\n- **Command Palette** (`Cmd+K`) - Searchable command launcher with keyboard navigation\n- **Quick Pane** - Global shortcut (`Cmd+Shift+.`) opens a floating window from any app, even fullscreen. Uses native NSPanel on macOS for proper fullscreen overlay behavior.\n- **Keyboard Shortcuts** - Platform-aware shortcuts with automatic menu integration\n- **Native Menus** - File, Edit, View menus built from JavaScript with full i18n support\n- **Preferences System** - Settings dialog with Rust-side persistence, React hooks, and type-safe access throughout\n- **Collapsible Sidebars** - Empty left and right sidebars with state persistence via resizable panels\n- **Theme System** - Light/dark mode with system preference detection, synced across windows\n- **Notifications** - Toast notifications for in-app feedback, plus native system notifications\n- **Auto-updates** - Tauri updater plugin configured with GitHub Releases integration and update checking on launch\n- **Logging** - Structured logging utilities for both Rust and TypeScript with consistent formatting\n- **Crash Recovery** - Emergency data persistence for recovering unsaved work after unexpected exits\n\n### Architecture Patterns\n\n- **Three-layer state management** - Clear decision tree: `useState` (component) → `Zustand` (global UI) → `TanStack Query` (persistent data \"not owned by the app)\n- **Event-driven Rust-React bridge** - Menus, shortcuts, and command palette all route through the same command system\n- **React Compiler** - Automatic memoization means no manual `useMemo`/`useCallback` needed\n\n### Cross-Platform\n\n| Platform | Title Bar            | Window Controls | Bundle Format |\n| -------- | -------------------- | --------------- | ------------- |\n| macOS    | Custom with vibrancy | Traffic lights  | `.dmg`        |\n| Windows  | Custom               | Right side      | `.msi`        |\n| Linux    | Native + toolbar     | Native          | `.AppImage`   |\n\nPlatform detection utilities, platform-specific UI strings (\"Reveal in Finder\" vs \"Show in Explorer\"), and separate Tauri configs per platform are all set up.\n\n### Developer Experience\n\n- **Type-safe Tauri commands** - tauri-specta generates TypeScript bindings from Rust, with full autocomplete and compile-time checking\n- **Static analysis** - ESLint, Prettier, ast-grep (architecture enforcement), knip (unused code), jscpd (duplication)\n- **Single quality gate** - `npm run check:all` runs TypeScript, ESLint, Prettier, ast-grep, clippy, and all tests\n- **Testing patterns** - Vitest setup with Tauri command mocking\n\n## Tauri Plugins Included\n\n| Plugin            | Purpose                          |\n| ----------------- | -------------------------------- |\n| single-instance   | Prevent multiple app instances   |\n| window-state      | Remember window position/size    |\n| fs                | File system access               |\n| dialog            | Native open/save dialogs         |\n| notification      | System notifications             |\n| clipboard-manager | Clipboard access                 |\n| global-shortcut   | System-wide keyboard shortcuts   |\n| updater           | In-app auto-updates              |\n| opener            | Open URLs/files with default app |\n| tauri-nspanel     | macOS floating panel behavior    |\n\n## AI-Ready Development\n\nThis template is designed to work well with AI coding agents like Claude Code:\n\n- **Comprehensive documentation** in `docs/developer/` covering all patterns. Human readable but really designed to explain the \"why\" of certain patterns to AI agents. Not slop.\n- **Claude Code integration** - Custom commands (`/check`, `/cleanup`) and a couple of specialized agents\n- **Sensible file organization** - React code in `src/` with clear separation (components, hooks, stores, services), Rust in `src-tauri/src/` with modular command organization. Predictable structure for both humans and AI.\n\n## Getting Started\n\nSee **[Using This Template](docs/USING_THIS_TEMPLATE.md)** for setup instructions and workflow guidance.\n\n### Quick Start\n\n```bash\n# Prerequisites: Node.js 18+, Rust (latest stable)\n# See https://tauri.app/start/prerequisites/ for platform-specific deps\n\ngit clone \u003cyour-repo\u003e\ncd your-app\nnpm install\nnpm run dev\n```\n\n## Documentation\n\n- **[Developer Docs](docs/developer/)** - Architecture, patterns, and detailed guides\n- **[User Guide](docs/userguide/)** - End-user documentation template\n- **[Using This Template](docs/USING_THIS_TEMPLATE.md)** - Setup and workflow guide\n\n## License\n\n[MIT](LICENSE.md)\n\n---\n\nBuilt with [Tauri](https://tauri.app) | [shadcn/ui](https://ui.shadcn.com) | [React](https://react.dev)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhoan02%2Fops-flow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhoan02%2Fops-flow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhoan02%2Fops-flow/lists"}