|
1 | | -Agentic::v0.1.0 |
| 1 | +# 🚀 Agentic - Production-Ready TUI Framework |
| 2 | + |
| 3 | +[](https://github.com/gitcoder89431/agentic/actions/workflows/rust.yml) |
| 4 | +[](https://opensource.org/licenses/MIT) |
| 5 | + |
| 6 | +> **Version:** 0.1.0 |
| 7 | +> **Status:** Production Ready ✅ |
| 8 | +
|
| 9 | +A beautiful, responsive terminal user interface (TUI) application built with modern Rust architecture. Features Everforest theming, Taffy flexbox layouts, and comprehensive event handling. |
| 10 | + |
| 11 | +## 🎨 Features |
| 12 | + |
| 13 | +- **🌲 Everforest Theme System**: Dark/Light theme variants with runtime switching |
| 14 | +- **📐 Responsive Layouts**: Taffy-powered flexbox-style layout engine |
| 15 | +- **⚡ Event-Driven Architecture**: Clean async/await with proper state management |
| 16 | +- **🔧 Production Ready**: Comprehensive CI/CD pipeline with quality gates |
| 17 | +- **🎯 Zero Dependencies**: Minimal, focused dependency tree |
| 18 | +- **✨ Beautiful ASCII Art**: Elegant logo with centered presentation |
| 19 | + |
| 20 | +## 🚀 Quick Start |
| 21 | + |
| 22 | +### Prerequisites |
| 23 | + |
| 24 | +- **Rust 1.70+** (tested with latest stable) |
| 25 | +- **Terminal** with true color support recommended |
| 26 | + |
| 27 | +### Installation & Running |
| 28 | + |
| 29 | +```bash |
| 30 | +# Clone the repository |
| 31 | +git clone https://github.com/gitcoder89431/agentic.git |
| 32 | +cd agentic |
| 33 | + |
| 34 | +# Run the application |
| 35 | +cargo run |
| 36 | + |
| 37 | +# Or build for release |
| 38 | +cargo build --release |
| 39 | +./target/release/agentic |
| 40 | +``` |
| 41 | + |
| 42 | +### Controls |
| 43 | + |
| 44 | +- **ESC / q**: Quit application |
| 45 | +- **t / T**: Toggle between Dark/Light themes |
| 46 | +- **Ctrl+C**: Force quit with signal handling |
| 47 | +- **Terminal Resize**: Automatic layout recalculation |
| 48 | + |
| 49 | +## 🛠️ Development |
| 50 | + |
| 51 | +### Local Development |
| 52 | + |
| 53 | +Before pushing changes, run these checks locally: |
| 54 | + |
| 55 | +```bash |
| 56 | +# Format code |
| 57 | +cargo fmt |
| 58 | + |
| 59 | +# Check formatting |
| 60 | +cargo fmt --check |
| 61 | + |
| 62 | +# Run lints |
| 63 | +cargo clippy -- -D warnings |
| 64 | + |
| 65 | +# Run tests |
| 66 | +cargo test |
| 67 | + |
| 68 | +# Check compilation |
| 69 | +cargo check |
| 70 | +``` |
| 71 | + |
| 72 | +### 🔧 CI/CD Pipeline |
| 73 | + |
| 74 | +Our GitHub Actions CI pipeline ensures code quality with multiple validation layers: |
| 75 | + |
| 76 | +#### Pipeline Jobs |
| 77 | + |
| 78 | +1. **🏗️ Build & Test** (`build_and_test`) |
| 79 | + - Code formatting validation (`cargo fmt --check`) |
| 80 | + - Lint checking with zero warnings (`cargo clippy -- -D warnings`) |
| 81 | + - Compilation verification (`cargo build --verbose`) |
| 82 | + - Test suite execution (`cargo test --verbose`) |
| 83 | + |
| 84 | +2. **🛡️ Security Audit** (`security_audit`) |
| 85 | + - Vulnerability scanning with `cargo audit` |
| 86 | + - Checks for known security issues in dependencies |
| 87 | + |
| 88 | +3. **📦 Dependency Check** (`check_dependencies`) |
| 89 | + - Validates dependency freshness with `cargo outdated` |
| 90 | + - Ensures we're using up-to-date packages |
| 91 | + |
| 92 | +#### Trigger Conditions |
| 93 | + |
| 94 | +- **Pushes to `main`**: Full pipeline execution |
| 95 | +- **Pull Requests**: All jobs run before merge approval |
| 96 | +- **Manual triggers**: Available via GitHub Actions UI |
| 97 | + |
| 98 | +#### Performance Optimizations |
| 99 | + |
| 100 | +- **Cargo Registry Cache**: Speeds up dependency downloads |
| 101 | +- **Target Directory Cache**: Accelerates compilation |
| 102 | +- **Hash-Based Invalidation**: Efficient cache management with `Cargo.lock` |
| 103 | + |
| 104 | +#### Common Failure Scenarios & Fixes |
| 105 | + |
| 106 | +| Error | Cause | Fix | |
| 107 | +|-------|-------|-----| |
| 108 | +| `cargo fmt --check failed` | Inconsistent formatting | Run `cargo fmt` locally | |
| 109 | +| `cargo clippy warnings` | Lint violations | Fix warnings or use `#[allow(...)]` | |
| 110 | +| `tests failed` | Broken functionality | Fix failing tests | |
| 111 | +| `security vulnerabilities` | Outdated dependencies | Run `cargo audit fix` | |
| 112 | + |
| 113 | +### 🏗️ Architecture |
| 114 | + |
| 115 | +``` |
| 116 | +┌─────────────────────────────────────────────────────────┐ |
| 117 | +│ AGENTIC TUI │ |
| 118 | +├─────────────────────────────────────────────────────────┤ |
| 119 | +│ Event System │ Theme Engine │ Layout Engine │ |
| 120 | +│ ────────────── │ ───────────── │ ───────────── │ |
| 121 | +│ • AppEvent │ • Everforest │ • Taffy 3-Layer │ |
| 122 | +│ • AppState │ • Dark/Light │ • Header/Body │ |
| 123 | +│ • Async Runtime │ • Runtime Switch│ • Footer/Flex │ |
| 124 | +├─────────────────────────────────────────────────────────┤ |
| 125 | +│ Ratatui Core │ |
| 126 | +│ Crossterm Backend │ |
| 127 | +└─────────────────────────────────────────────────────────┘ |
| 128 | +``` |
| 129 | + |
| 130 | +### 📁 Project Structure |
| 131 | + |
| 132 | +``` |
| 133 | +agentic/ |
| 134 | +├── .github/workflows/ # CI/CD pipeline configuration |
| 135 | +├── src/ |
| 136 | +│ ├── events.rs # Event handling & state management |
| 137 | +│ ├── layout.rs # Taffy flexbox layout engine |
| 138 | +│ ├── theme.rs # Everforest theme system |
| 139 | +│ ├── ui/ # User interface components |
| 140 | +│ │ ├── app.rs # Main application logic |
| 141 | +│ │ └── mod.rs # UI module declarations |
| 142 | +│ ├── lib.rs # Library root |
| 143 | +│ └── main.rs # Application entry point |
| 144 | +├── examples/ # Demo applications |
| 145 | +├── Cargo.toml # Project dependencies |
| 146 | +└── README.md # Project documentation |
| 147 | +``` |
| 148 | + |
| 149 | +## 🧪 Testing |
| 150 | + |
| 151 | +### Unit Tests |
| 152 | + |
| 153 | +```bash |
| 154 | +# Run all tests |
| 155 | +cargo test |
| 156 | + |
| 157 | +# Run tests with output |
| 158 | +cargo test -- --nocapture |
| 159 | + |
| 160 | +# Run specific test |
| 161 | +cargo test test_name |
| 162 | +``` |
| 163 | + |
| 164 | +### Manual Testing |
| 165 | + |
| 166 | +```bash |
| 167 | +# Theme demo |
| 168 | +cargo run --example theme_demo |
| 169 | + |
| 170 | +# Layout demo |
| 171 | +cargo run --example layout_demo |
| 172 | + |
| 173 | +# Input handling demo |
| 174 | +cargo run --example issue_4_demo |
| 175 | +``` |
| 176 | + |
| 177 | +## 📦 Dependencies |
| 178 | + |
| 179 | +### Core Dependencies |
| 180 | +- **ratatui** (0.27): Terminal UI framework |
| 181 | +- **crossterm** (0.27): Cross-platform terminal handling |
| 182 | +- **tokio** (1.0): Async runtime |
| 183 | +- **taffy** (0.4): Flexbox layout engine |
| 184 | + |
| 185 | +### Development Dependencies |
| 186 | +- **GitHub Actions**: Automated CI/CD |
| 187 | +- **cargo-audit**: Security vulnerability scanning |
| 188 | +- **cargo-outdated**: Dependency freshness checks |
| 189 | + |
| 190 | +## 🤝 Contributing |
| 191 | + |
| 192 | +1. **Fork** the repository |
| 193 | +2. **Create** a feature branch (`git checkout -b feature/amazing-feature`) |
| 194 | +3. **Run** local checks (`cargo fmt && cargo clippy && cargo test`) |
| 195 | +4. **Commit** changes (`git commit -m 'Add amazing feature'`) |
| 196 | +5. **Push** to branch (`git push origin feature/amazing-feature`) |
| 197 | +6. **Open** a Pull Request |
| 198 | + |
| 199 | +### Pull Request Process |
| 200 | + |
| 201 | +- ✅ All CI checks must pass (formatting, lints, tests, security) |
| 202 | +- ✅ Code must follow Rust best practices |
| 203 | +- ✅ Include tests for new functionality |
| 204 | +- ✅ Update documentation as needed |
| 205 | + |
| 206 | +## 📄 License |
| 207 | + |
| 208 | +This project is licensed under the **MIT License** - see the [LICENSE](LICENSE) file for details. |
| 209 | + |
| 210 | +## 🙏 Acknowledgments |
| 211 | + |
| 212 | +- **Ratatui Community** for the excellent TUI framework |
| 213 | +- **Taffy Team** for the powerful layout engine |
| 214 | +- **Everforest** color scheme for beautiful aesthetics |
| 215 | +- **Rust Community** for amazing tooling and ecosystem |
| 216 | + |
| 217 | +--- |
| 218 | + |
| 219 | +**Built with ❤️ using Rust** 🦀 |
0 commit comments