mirror of
				https://github.com/shokinn/hosts-go.git
				synced 2025-11-04 04:28:34 +00:00 
			
		
		
		
	feat: Add CLAUDE.md for project documentation and guidance
This commit is contained in:
		
							parent
							
								
									250091bb8a
								
							
						
					
					
						commit
						3c239e68f3
					
				
					 1 changed files with 87 additions and 0 deletions
				
			
		
							
								
								
									
										87
									
								
								CLAUDE.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								CLAUDE.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,87 @@
 | 
				
			||||||
 | 
					# CLAUDE.md
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Project Overview
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This is a Go TUI application for managing `/etc/hosts` files using the Bubble Tea framework. The app provides a two-pane interface (list view + detail view) for viewing, editing, and managing host entries with features like activation/deactivation, sorting, and DNS resolution.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Architecture
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The codebase follows a clean architecture pattern with separation of concerns:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `cmd/hosts/main.go` - Entry point that parses `/etc/hosts` and launches the TUI
 | 
				
			||||||
 | 
					- `internal/core/` - Core business logic and data models
 | 
				
			||||||
 | 
					  - `models.go` - Data structures for HostEntry and HostsFile with validation
 | 
				
			||||||
 | 
					  - `parser.go` - Hosts file parsing, formatting, and writing with intelligent formatting detection
 | 
				
			||||||
 | 
					- `internal/tui/` - Bubble Tea TUI components
 | 
				
			||||||
 | 
					  - `model.go` - Main Bubble Tea model with pane navigation and mode management
 | 
				
			||||||
 | 
					  - `view.go` - Rendering logic for the two-pane interface
 | 
				
			||||||
 | 
					  - `update.go` - Message handling and state updates
 | 
				
			||||||
 | 
					- `tests/` - Test files following TDD approach
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Key Technical Patterns
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Data Models
 | 
				
			||||||
 | 
					- `HostEntry` represents individual host entries with IP, hostname, aliases, comments, and active status
 | 
				
			||||||
 | 
					- `HostsFile` contains collections of entries with methods for searching, adding, and removing
 | 
				
			||||||
 | 
					- All models include validation methods and proper error handling
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### TUI Architecture
 | 
				
			||||||
 | 
					- Uses Bubble Tea's Model-View-Update pattern
 | 
				
			||||||
 | 
					- Two-pane layout with list and detail views
 | 
				
			||||||
 | 
					- Mode switching between ViewMode and EditMode
 | 
				
			||||||
 | 
					- Pane focus management (listPane/detailPane)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### File Operations
 | 
				
			||||||
 | 
					- Intelligent formatting detection preserves original hosts file style
 | 
				
			||||||
 | 
					- Atomic file operations with backup creation
 | 
				
			||||||
 | 
					- Proper validation before writing changes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Development Commands
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Build and Run
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					go run cmd/hosts/main.go
 | 
				
			||||||
 | 
					go build -o hosts cmd/hosts/main.go
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Testing
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					go test ./...                    # Run all tests
 | 
				
			||||||
 | 
					go test ./tests/                 # Run tests in tests directory
 | 
				
			||||||
 | 
					go test -v ./internal/core/      # Run core package tests with verbose output
 | 
				
			||||||
 | 
					go test -cover ./...             # Run tests with coverage
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Dependencies
 | 
				
			||||||
 | 
					Key dependencies are managed via `go.mod`:
 | 
				
			||||||
 | 
					- Bubble Tea framework for TUI
 | 
				
			||||||
 | 
					- Bubbles for common components
 | 
				
			||||||
 | 
					- Lip Gloss for styling
 | 
				
			||||||
 | 
					- testify for test assertions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Important Implementation Details
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Hosts File Parsing
 | 
				
			||||||
 | 
					The parser in `internal/core/parser.go` handles:
 | 
				
			||||||
 | 
					- Active and inactive (commented) entries
 | 
				
			||||||
 | 
					- Inline comments preservation
 | 
				
			||||||
 | 
					- Intelligent formatting detection (tabs vs spaces)
 | 
				
			||||||
 | 
					- IPv4/IPv6 address validation
 | 
				
			||||||
 | 
					- RFC-compliant hostname validation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### TUI Navigation
 | 
				
			||||||
 | 
					- Tab/Shift+Tab for pane switching
 | 
				
			||||||
 | 
					- Arrow keys for list navigation
 | 
				
			||||||
 | 
					- Space for toggling entry activation
 | 
				
			||||||
 | 
					- 'q' to quit application
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Error Handling
 | 
				
			||||||
 | 
					- Comprehensive validation at model level
 | 
				
			||||||
 | 
					- Parse warnings collection during file parsing
 | 
				
			||||||
 | 
					- Graceful error recovery in TUI operations
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Memory Bank Integration
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This project uses Cline's Memory Bank system located in `memory-bank/` directory. The project brief and context files provide additional architectural context and development history. Always consult these files when making significant changes to understand the project's evolution and design decisions.
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue