265 lines
8.2 KiB
Markdown
265 lines
8.2 KiB
Markdown
|
|
# Lifecycle Manager - Terminal UI
|
|||
|
|
|
|||
|
|
A modern Terminal User Interface (TUI) for managing syntaxis, built with **ratatui** and **crossterm**.
|
|||
|
|
|
|||
|
|
## Features
|
|||
|
|
|
|||
|
|
### Project Management
|
|||
|
|
- 📋 **Projects List**: Display all projects with their current phase and version
|
|||
|
|
- 🔍 **Project Details**: View detailed information about any project
|
|||
|
|
- 🔒 **Security Assessments**: Monitor security status of projects
|
|||
|
|
- ⚙️ **Project Creation**: Create new projects directly from the terminal
|
|||
|
|
- ⌨️ **Vim-style Navigation**: Use hjkl keys or arrow keys to navigate
|
|||
|
|
|
|||
|
|
### Task Management ✨
|
|||
|
|
- ✅ **Task List & Checklist**: View all project tasks and checklists
|
|||
|
|
- 🔍 **Live Search**: Real-time search by task description or ID
|
|||
|
|
- 📊 **Statistics Dashboard**: View task completion metrics and progress bar with total, completed, pending counts
|
|||
|
|
- 🎯 **Flexible Sorting**: 6 sort options (newest, oldest, highest priority, lowest priority, completed first, pending first)
|
|||
|
|
- 🔴 **Priority Levels**: Critical, High, Medium, Low - with visual indicators
|
|||
|
|
- 🏷️ **Task Types**: Feature, BugFix, Documentation, Testing, Deployment, Maintenance classifications
|
|||
|
|
- 🏆 **Completion Tracking**: Toggle task completion with visual feedback
|
|||
|
|
- 📝 **Task Creation**: Create new tasks with multi-line textarea editor
|
|||
|
|
- 🎨 **Beautiful UI**: Responsive terminal interface with borders and colors
|
|||
|
|
- 📈 **Progress Visualization**: Unicode progress bar showing completion percentage
|
|||
|
|
|
|||
|
|
## Architecture
|
|||
|
|
|
|||
|
|
The TUI is organized into several modules:
|
|||
|
|
|
|||
|
|
- **`api.rs`**: HTTP client for communicating with the REST API server
|
|||
|
|
- **`app.rs`**: Application state management and logic
|
|||
|
|
- **`events.rs`**: Event handling (keyboard input, ticks)
|
|||
|
|
- **`terminal.rs`**: Terminal lifecycle management (initialization, cleanup)
|
|||
|
|
- **`ui.rs`**: UI rendering functions for all screens
|
|||
|
|
- **`types.rs`**: Data models (DTOs)
|
|||
|
|
- **`main.rs`**: Application entry point and event loop
|
|||
|
|
|
|||
|
|
## Building
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cargo build -p syntaxis-tui
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Running
|
|||
|
|
|
|||
|
|
First, ensure the REST API server is running:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cargo run -p syntaxis-api
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Then, in another terminal, start the TUI:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cargo run -p syntaxis-tui
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Or run the compiled binary:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
./target/debug/syntaxis-dashboard
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Key Bindings
|
|||
|
|
|
|||
|
|
### General
|
|||
|
|
- **q** or **Esc**: Quit the application
|
|||
|
|
- **Tab**: Switch between tabs/screens
|
|||
|
|
|
|||
|
|
### Projects List Screen
|
|||
|
|
- **↑ / k**: Navigate up
|
|||
|
|
- **↓ / j**: Navigate down
|
|||
|
|
- **Enter**: View project details
|
|||
|
|
- **c**: Create new project
|
|||
|
|
- **s**: View security assessments
|
|||
|
|
|
|||
|
|
### Project Detail Screen
|
|||
|
|
- **b**: Go back to projects list
|
|||
|
|
|
|||
|
|
### Security Screen
|
|||
|
|
- **b**: Go back to projects list
|
|||
|
|
|
|||
|
|
### Create Project Screen
|
|||
|
|
- **b**: Cancel and go back
|
|||
|
|
|
|||
|
|
### Tasks Screen
|
|||
|
|
- **↑ / k**: Navigate task list up
|
|||
|
|
- **↓ / j**: Navigate task list down
|
|||
|
|
- **Space**: Toggle task completion status
|
|||
|
|
- **n**: Create new task
|
|||
|
|
- **/**: Open filter/sort menu
|
|||
|
|
- **f**: Toggle completion filter (show all / pending only / completed only)
|
|||
|
|
- **c**: Clear all filters
|
|||
|
|
- **←/→ or h/l**: Navigate sort options (when filter menu open)
|
|||
|
|
- **Enter**: Apply selected sort option
|
|||
|
|
- **b**: Go back to project details
|
|||
|
|
|
|||
|
|
## Screens
|
|||
|
|
|
|||
|
|
### Projects List
|
|||
|
|
Displays all projects in a table format showing:
|
|||
|
|
- Project name
|
|||
|
|
- Current phase
|
|||
|
|
- Version
|
|||
|
|
|
|||
|
|
### Project Detail
|
|||
|
|
Shows detailed information about a selected project:
|
|||
|
|
- ID
|
|||
|
|
- Name
|
|||
|
|
- Version
|
|||
|
|
- Type
|
|||
|
|
- Current phase
|
|||
|
|
- Description
|
|||
|
|
- Creation date
|
|||
|
|
- Access to tasks, security assessments, and tools management
|
|||
|
|
|
|||
|
|
### Tasks Management
|
|||
|
|
Enhanced task screen with:
|
|||
|
|
- **Statistics Panel**: Real-time metrics showing total, completed, pending tasks and completion percentage with progress bar
|
|||
|
|
- **Task List**: Sortable, filterable list of all project tasks
|
|||
|
|
- **Task Details Panel**: Shows selected task information including:
|
|||
|
|
- Task ID
|
|||
|
|
- Description
|
|||
|
|
- Priority level (Critical, High, Medium, Low)
|
|||
|
|
- Task type (Feature, BugFix, Documentation, Testing, Deployment, Maintenance)
|
|||
|
|
- Completion status
|
|||
|
|
- Creation date
|
|||
|
|
- **Sorting Options** (6 variants):
|
|||
|
|
1. Newest First (by creation date, descending)
|
|||
|
|
2. Oldest First (by creation date, ascending)
|
|||
|
|
3. Highest Priority (Critical → High → Medium → Low)
|
|||
|
|
4. Lowest Priority (Low → Medium → High → Critical)
|
|||
|
|
5. Completed First (completed tasks first)
|
|||
|
|
6. Pending First (pending tasks first)
|
|||
|
|
- **Filtering**: Toggle between all tasks / pending only / completed only
|
|||
|
|
- **Search**: Real-time search by task description or ID
|
|||
|
|
|
|||
|
|
### Security Assessments
|
|||
|
|
Displays security status across projects:
|
|||
|
|
- Security profile
|
|||
|
|
- Risk level
|
|||
|
|
- Passed/failed rules
|
|||
|
|
- Critical issues
|
|||
|
|
|
|||
|
|
### Create Project
|
|||
|
|
Form for creating a new project with:
|
|||
|
|
- Project name
|
|||
|
|
- Description
|
|||
|
|
- Project type (optional)
|
|||
|
|
|
|||
|
|
## API Integration
|
|||
|
|
|
|||
|
|
The TUI communicates with the REST API server running on `http://localhost:3000/api`.
|
|||
|
|
|
|||
|
|
Available API endpoints:
|
|||
|
|
- `GET /projects` - List all projects
|
|||
|
|
- `GET /projects/:id` - Get project details
|
|||
|
|
- `GET /projects/:id/status` - Get project status
|
|||
|
|
- `GET /projects/:id/security` - Get security assessment
|
|||
|
|
- `GET /projects/:id/checklists` - Get checklist items
|
|||
|
|
- `GET /projects/:id/tools` - Get tools
|
|||
|
|
- `POST /projects` - Create new project
|
|||
|
|
|
|||
|
|
## Data Model
|
|||
|
|
|
|||
|
|
### Task Priority
|
|||
|
|
```
|
|||
|
|
Critical (🔴) - Highest priority
|
|||
|
|
High (🟠)
|
|||
|
|
Medium (🟡) - Default
|
|||
|
|
Low (🟢) - Lowest priority
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Task Type
|
|||
|
|
```
|
|||
|
|
Feature (⭐) - New feature implementation
|
|||
|
|
BugFix (🐛) - Bug fixes and patches
|
|||
|
|
Documentation (📚) - Documentation and guides
|
|||
|
|
Testing (✔) - Testing and QA tasks
|
|||
|
|
Deployment (🚀) - Deployment and release tasks
|
|||
|
|
Maintenance (🔧) - Maintenance and updates
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Statistics Calculation
|
|||
|
|
The TUI continuously calculates and displays:
|
|||
|
|
- **Total Tasks**: Complete count of all tasks
|
|||
|
|
- **Completed Tasks**: Count of tasks marked as completed
|
|||
|
|
- **Pending Tasks**: Count of tasks still pending
|
|||
|
|
- **Completion Percentage**: (Completed / Total) × 100
|
|||
|
|
- **Progress Bar**: Visual representation with Unicode characters (█ filled, ░ empty)
|
|||
|
|
|
|||
|
|
## Guidelines
|
|||
|
|
|
|||
|
|
The TUI is implemented following these principles:
|
|||
|
|
|
|||
|
|
- **No unsafe code**: All code is safe Rust with `#![forbid(unsafe_code)]`
|
|||
|
|
- **Error handling**: Proper error messages displayed in the UI
|
|||
|
|
- **Async/await**: All API calls are non-blocking using tokio
|
|||
|
|
- **Clean architecture**: Separation of concerns (API, UI, state, events)
|
|||
|
|
- **User experience**: Responsive, intuitive navigation with vim-style keys
|
|||
|
|
- **Backward compatibility**: Uses `#[serde(default)]` for new fields to work with older API versions
|
|||
|
|
- **Type-safe filtering**: Enum-based sorting and filtering instead of string comparisons
|
|||
|
|
|
|||
|
|
## Feature Parity Status
|
|||
|
|
|
|||
|
|
### ✅ Completed (Phase 12)
|
|||
|
|
- [x] Task priority levels (Critical, High, Medium, Low)
|
|||
|
|
- [x] Task type classifications (Feature, BugFix, Documentation, Testing, Deployment, Maintenance)
|
|||
|
|
- [x] 6 flexible sort options (Newest, Oldest, HighestPriority, LowestPriority, CompletedFirst, PendingFirst)
|
|||
|
|
- [x] Task statistics display (Total, Completed, Pending, Completion %)
|
|||
|
|
- [x] Progress bar visualization with Unicode characters
|
|||
|
|
- [x] Feature parity with Dashboard
|
|||
|
|
|
|||
|
|
## Future Enhancements
|
|||
|
|
|
|||
|
|
- [ ] Display priority/type badges in task list with colors
|
|||
|
|
- [ ] Filter by priority in TUI
|
|||
|
|
- [ ] Edit project details
|
|||
|
|
- [ ] Delete projects
|
|||
|
|
- [ ] Add new checklist items
|
|||
|
|
- [ ] Update checklist priority/type
|
|||
|
|
- [ ] Run security assessments
|
|||
|
|
- [ ] Enable/disable tools
|
|||
|
|
- [ ] Phase transitions
|
|||
|
|
- [ ] Search/filter projects by name
|
|||
|
|
- [ ] Keyboard shortcuts help overlay (press ? for help)
|
|||
|
|
- [ ] Color themes (dark/light mode)
|
|||
|
|
- [ ] Statistics breakdown by priority/type
|
|||
|
|
- [ ] Task deadlines/due dates with statistics
|
|||
|
|
- [ ] Milestone tracking
|
|||
|
|
|
|||
|
|
## Dependencies
|
|||
|
|
|
|||
|
|
- **ratatui 0.25**: Terminal UI framework
|
|||
|
|
- **crossterm 0.27**: Cross-platform terminal handling
|
|||
|
|
- **tokio 1.x**: Async runtime
|
|||
|
|
- **reqwest 0.11**: HTTP client
|
|||
|
|
- **serde**: Serialization/deserialization
|
|||
|
|
|
|||
|
|
## Performance
|
|||
|
|
|
|||
|
|
The TUI is designed for performance:
|
|||
|
|
- Non-blocking event handling
|
|||
|
|
- Efficient rendering with only changed areas redrawn
|
|||
|
|
- Connection pooling for API calls
|
|||
|
|
- Responsive to user input with 250ms tick rate
|
|||
|
|
|
|||
|
|
## Testing
|
|||
|
|
|
|||
|
|
Run tests with:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cargo test -p syntaxis-tui
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Status
|
|||
|
|
|
|||
|
|
✅ **Phase 11 Complete**
|
|||
|
|
|
|||
|
|
The TUI application provides a fully functional terminal interface for managing projects with:
|
|||
|
|
- Complete event handling system
|
|||
|
|
- All screens implemented
|
|||
|
|
- Full API integration
|
|||
|
|
- Production-ready code quality
|