Sprint 1 — System Design
Overview
Revi is a review tool that bridges human reviewers and AI agents. The system consists of a Vue 3 single-page application for human interaction and a REST API backend that both the frontend and AI agents consume.
The primary goal is to enable anchored feedback — comments that are pinned to specific locations within plans, designs, and prototypes — so agents can programmatically read, act on, and resolve feedback.
Architecture
The supported runtime is now a single Rust backend using Axum, paired with the Vue frontend and a vendored `common/` base that standardizes docs/demo/release entry points.
Vue 3 SPA <--REST--> Rust backend (revi)
|
AI Agent <--/export--> workspace/ + data/ + common/
Storage Layer
Comments are stored as JSON files on disk. Each item gets a comment file at data/comments/{subfolder}__{stem}.json. Archived batches go into data/archive/{subfolder}__{stem}.json.
This file-system approach keeps the tool portable — no database setup required. The trade-off is that concurrent writes from multiple processes could conflict, but in practice Revi runs single-process.
API Endpoints
The REST API follows standard conventions. All responses use camelCase field names. The agent export endpoint at /api/export/{item_id} returns only open comments with their anchor references.
GET /api/reviews— list all itemsGET /api/export/{item_id}— agent exportPOST /api/comments/{item_id}— add commentPATCH /api/comments/{item_id}/{id}/resolve— resolve
Frontend Design
The Vue 3 SPA uses a split-pane layout. The left sidebar lists workspace items grouped by type. The center pane shows the content viewer, and the right panel contains the comment thread.
Comments support hover-linking — hovering a comment card highlights the referenced section, quote, or annotation pin in the content viewer.
Technology Choices
- Vue 3 Composition API with Vue Router and Vue I18n
- Vite for development and builds
- Vitest for unit tests, Playwright for E2E
- No component library — custom lightweight styles