# {{TOOL_NAME}} {{SHORT_DESCRIPTION}} ## Features - **Feature 1** - Brief description - **Feature 2** - Brief description - **Feature 3** - Brief description - **Feature 4** - Brief description - **Feature 5** - Brief description ## Quick Start Get started in 5-10 minutes with [QUICKSTART.md](QUICKSTART.md). For detailed instructions, continue reading below. ## Table of Contents - [Installation](#installation) - [Architecture](#architecture) - [Configuration](#configuration) - [CLI Commands](#cli-commands) - [Examples](#examples) - [Troubleshooting](#troubleshooting) - [Development](#development) ## Installation ### From Source **Requirements**: - Rust 1.70+ ([install](https://rustup.rs/)) - Cargo (comes with Rust) **Build**: ```bash git clone https://github.com/yourusername/{{tool_name_kebab}} cd {{tool_name_kebab}} cargo build --release ``` **Install**: ```bash cargo install --path crates/{{tool_name_kebab}}-cli ``` **Verify**: ```bash {{tool_name_kebab}} --version ``` ## Architecture ### 3-Tier Architecture {{TOOL_NAME}} follows a production-grade 3-tier architecture: **Tier 1: Core Library** (`crates/{{tool_name_kebab}}-core/`) - Business logic and domain models - Error handling and validation - Reusable across different interfaces - No UI dependencies **Tier 2: REST API** (`crates/{{tool_name_kebab}}-api/`, optional) - HTTP server using axum - JSON request/response format - Standard CRUD endpoints - Health checks and monitoring **Tier 3: CLI** (`crates/{{tool_name_kebab}}-cli/`) - Command-line interface using clap - Configuration discovery - User-friendly commands - Structured logging ### Module Organization ``` {{tool_name_kebab}}-core/ ├── src/ │ ├── lib.rs # Main module │ ├── error.rs # Error types │ ├── types.rs # Domain types ({{MainType}}) │ └── handlers/ │ ├── mod.rs │ └── service.rs # Business logic ({{MainType}}Service) └── tests/ # Integration tests ``` ### Data Flow ``` User Input ↓ CLI (main.rs) ↓ Configuration Discovery ↓ Core Service ({{MainType}}Service) ↓ Business Logic & Storage ↓ Response/Output ``` ## Configuration ### Configuration Discovery {{TOOL_NAME}} automatically searches for configuration in this order (uses first found): 1. **`.project/{{tool_name_kebab}}.toml`** - Project using Tools (priority) 2. **`.vapora/{{tool_name_kebab}}.toml`** - VAPORA platform project 3. **`.coder/{{tool_name_kebab}}.toml`** - Doc tracking project 4. **`./{{tool_name_kebab}}.toml`** - Current directory The tool automatically uses the first existing location. ### Configuration File See [Configuration Guide](docs/configuration.md) for complete documentation. **Basic example**: ```toml [{{tool_name_kebab}}] # Your configuration here setting1 = "value1" setting2 = 42 ``` **Complete example**: See [examples/config.toml](examples/config.toml) ### Environment Variables You can override configuration with environment variables: ```bash export {{TOOL_NAME}}_SETTING1=value1 {{tool_name_kebab}} list ``` ## CLI Commands ### Getting Help ```bash # Show all commands {{tool_name_kebab}} --help # Show help for specific command {{tool_name_kebab}} list --help # Show version {{tool_name_kebab}} --version # Enable verbose logging {{tool_name_kebab}} -v list ``` ### Available Commands #### `list` - List all items ```bash {{tool_name_kebab}} list # List all items {{tool_name_kebab}} list --filter "pattern" # Filter by pattern {{tool_name_kebab}} list --limit 50 # Limit results ``` **Output**: Shows all {{main_type_plural}} in your project #### `create` - Create new item ```bash {{tool_name_kebab}} create "My Item" {{tool_name_kebab}} create "My Item" --description "Full description" ``` **Output**: Shows created item with ID and timestamp #### `summary` - Show statistics ```bash {{tool_name_kebab}} summary # Show all statistics {{tool_name_kebab}} summary --group-by field # Group by field ``` **Output**: Shows counts, totals, and other metrics #### `version` - Show version ```bash {{tool_name_kebab}} version ``` **Output**: Shows installed version ## Examples ### Basic Workflow ```bash # Create configuration mkdir -p .project cp examples/config.toml .project/{{tool_name_kebab}}.toml # Create first item {{tool_name_kebab}} create "My First Item" --description "Test item" # List all items {{tool_name_kebab}} list # Show summary {{tool_name_kebab}} summary ``` ### Using with Tools Ecosystem ```bash # Automatic setup nu /Users/Akasha/Tools/scripts/setup-project-tools.nu # Configuration is auto-discovered {{tool_name_kebab}} list ``` ### Advanced Usage ```bash # Export with jq {{tool_name_kebab}} list | jq '.[] | select(.status == "active")' # Count items {{tool_name_kebab}} list | wc -l # Filter items {{tool_name_kebab}} list --filter "important" ``` ## REST API (Optional) If using the API server: ```bash # Start API server cargo run -p {{tool_name_kebab}}-api --release # Server runs on http://127.0.0.1:3000 ``` ### API Endpoints - `GET /health` - Health check - `GET /{{main_type_plural}}` - List all items - `GET /{{main_type_plural}}/:id` - Get specific item - `POST /{{main_type_plural}}` - Create new item - `PUT /{{main_type_plural}}/:id` - Update item - `DELETE /{{main_type_plural}}/:id` - Delete item ### Example API Usage ```bash # List items curl http://127.0.0.1:3000/{{main_type_plural}} # Create item curl -X POST http://127.0.0.1:3000/{{main_type_plural}} \ -H "Content-Type: application/json" \ -d '{"name": "New Item", "description": "Item description"}' # Get specific item curl http://127.0.0.1:3000/{{main_type_plural}}/item-id ``` ## Troubleshooting ### Configuration Not Found **Problem**: "No config found in standard locations" **Solution**: Create configuration in one of the search locations: ```bash mkdir -p .project cp examples/config.toml .project/{{tool_name_kebab}}.toml {{tool_name_kebab}} list # Should now work ``` ### Permission Denied **Problem**: "Permission denied" error when running **Solution**: Ensure binary is executable: ```bash chmod +x ~/.cargo/bin/{{tool_name_kebab}} ``` ### Database Lock **Problem**: "Database is locked" (if using SQLite) **Solution**: Only one process can write at a time. Wait for other operations to complete, or use PostgreSQL for concurrent access. ### Help Text Issues **Problem**: Help text shows `{{VARIABLE}}` **Solution**: Templates weren't properly filled in. Check for unreplaced variables: ```bash grep -r "{{" crates/*/src/ ``` ## Development ### Building ```bash # Development build cargo build # Release build (optimized) cargo build --release ``` ### Testing ```bash # Run all tests cargo test --workspace # Run tests for specific crate cargo test -p {{tool_name_kebab}}-core # Run tests with output cargo test -- --nocapture # Run specific test cargo test test_name ``` ### Code Quality ```bash # Format code cargo fmt --all # Check formatting cargo fmt --check # Linting cargo clippy --all-targets # Security audit cargo audit # Check everything cargo fmt --check && cargo clippy --all-targets && cargo audit ``` ### Documentation ```bash # Generate documentation cargo doc --no-deps --open # Run doc tests cargo test --doc ``` ### Extending {{TOOL_NAME}} **Add a new command**: 1. Add variant to `Commands` enum in cli/main.rs 2. Add handler in match statement 3. Update help text 4. Add tests **Add a new service method**: 1. Implement in `handlers/service.rs` 2. Add error handling 3. Add tests (test for success and failure) 4. Update core documentation **Add a new error type**: 1. Add variant to `{{ToolName}}ErrorKind` enum 2. Update Display implementation 3. Add test 4. Use in appropriate places ### Running with Logging ```bash # Enable debug logging RUST_LOG=debug {{tool_name_kebab}} list # Enable trace logging for specific module RUST_LOG={{tool_name_kebab}}_core=trace {{tool_name_kebab}} list # Using with API RUST_LOG=debug cargo run -p {{tool_name_kebab}}-api ``` ## Contributing Contributions are welcome! Please: 1. Read this README completely 2. Check [Architecture](docs/architecture.md) for design 3. Review [QUICKSTART.md](QUICKSTART.md) for setup 4. Follow code quality standards: - No unsafe code - 100% public API documentation - Comprehensive tests (15+ per module) - Idiomatic Rust 5. Commit with clear messages 6. Include tests for new features ## License This tool is part of the Tools ecosystem. See LICENSE file for details. ## More Information - **Quick Start**: [QUICKSTART.md](QUICKSTART.md) - **Architecture**: [docs/architecture.md](docs/architecture.md) - **Configuration**: [docs/configuration.md](docs/configuration.md) - **Guidelines**: [/Users/Akasha/Tools/NEW_TOOL_GUIDELINE.md](https://github.com/Akasha/Tools/blob/main/NEW_TOOL_GUIDELINE.md) - **Main Tools Documentation**: [/Users/Akasha/Tools/README.md](https://github.com/Akasha/Tools)