Skip to content

YuriPerro/riva-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

95 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Riva logo

Riva

Your Azure DevOps. Without the noise.

A fast, native desktop client for Azure DevOps β€” built for developers who want quick access to work items, pipelines, pull requests, and releases without the browser overhead.

Tauri 2.0 React 19 TypeScript Rust Tailwind CSS 4 Cross-platform


Features

Dashboard β€” Sprint overview with stats (tasks, reviews, running pipelines), recent work items, and pipeline status at a glance.

My Work β€” All your assigned work items with status grouping, type filtering (Task, Bug, PBI, Feature, Epic), sorting, and full-text search.

Work Item Details β€” View and update status with validated state transitions, edit titles, copy git branch names, and browse related items.

Pipelines β€” Monitor build pipelines with live status indicators, progress bars for running builds, and definition-based filtering.

Pull Requests β€” Review PRs directly from the app β€” approve, reject, filter by status (Active, Draft), search by title or author, and filter by repository.

Releases β€” Track release pipelines with environment deployment status, and approve or reject deployments with comments.

AI Standup Summary β€” Generate a standup summary from your recent activity using OpenAI. Configurable lookback period, one-click copy to clipboard.

Notifications β€” Polls Azure DevOps for PR reviews, pipeline failures, and work item mentions. Native OS notifications with sound support.

Themes β€” 9 dark themes: Midnight, Phosphor, Dracula, Monochrome, Crimson, Catppuccin, Sunburn, Claude, and Red Dead.


Tech Stack

Layer Technology
Desktop framework Tauri 2.0 (Rust)
Frontend React 19, TypeScript 5.8
Styling Tailwind CSS 4, Radix UI, custom design tokens
State Zustand 5 (global), TanStack Query 5 (server)
Forms React Hook Form + Zod
Animations Motion
HTTP reqwest (Rust β€” PAT never exposed to frontend)
AI OpenAI API (via Rust backend)
Package manager Bun
Build tool Vite 7

Getting Started

Prerequisites

Install

git clone https://github.com/YuriPerro/riva-app.git
cd riva
bun install

Development

# Frontend only (no Rust required) β€” runs on port 1420
bun dev

# Full native app (requires Rust)
bun tauri dev

Build

# Frontend bundle
bun run build

# Native app (.dmg / .exe / .AppImage)
bun tauri build

Code Quality

bunx tsc --noEmit      # Type check
bun run lint           # ESLint
bun run lint:fix       # ESLint autofix
bun run format         # Prettier format
bun run format:check   # Prettier check

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚            React 19 Frontend            β”‚
β”‚  (webview β€” no direct HTTP to Azure)    β”‚
β”‚                                         β”‚
β”‚   invoke('command', { args })           β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                   β”‚ IPC
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚           Tauri 2.0 / Rust              β”‚
β”‚                                         β”‚
β”‚   #[tauri::command] handlers            β”‚
β”‚   Azure DevOps REST API (reqwest)       β”‚
β”‚   OpenAI API integration                β”‚
β”‚   Secure credential storage             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

All Azure DevOps API calls go through Rust. The PAT token is stored securely and never exposed to the webview layer.


Project Structure

src/
β”œβ”€β”€ pages/           # Dashboard, Tasks, Pipelines, Pull Requests, Releases, Settings
β”œβ”€β”€ components/      # Shared UI components (shadcn/ui based)
β”œβ”€β”€ store/           # Zustand stores (auth, theme, notifications, openai)
β”œβ”€β”€ hooks/           # Global custom hooks
β”œβ”€β”€ lib/             # Core infra (Tauri invoke wrapper, theme manager)
β”œβ”€β”€ types/           # Shared TypeScript types (azure, work-item, pipeline, release)
β”œβ”€β”€ utils/           # Helpers (formatters, mappers, search)
β”œβ”€β”€ styles/          # Global CSS with design tokens and themes
└── routes/          # Route configuration

src-tauri/src/
β”œβ”€β”€ main.rs          # Entry point
β”œβ”€β”€ lib.rs           # Tauri command registration (35+ commands)
β”œβ”€β”€ azure.rs         # Azure DevOps API client
└── openai.rs        # OpenAI integration

Security

  • PAT tokens are stored in the Rust backend and never sent to the webview
  • All Azure DevOps HTTP requests go through Rust (reqwest)
  • No direct API calls from the frontend

License

Private project. All rights reserved.

About

πŸš€ A lightweight native desktop client for Azure DevOps. Manage work items, pipelines, PRs, and releasesβ€”without the browser.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors