RuleStack

Configs

Stacks

Compare

Diff

RuleStack

Configs

Stacks

Compare

Diff

Read API

RuleStack

Configs

Stacks

Compare

Diff

Read API

Diff/lepinkainen-network-monitor-claude ↔ lepinkainen-network-monitor-clinerules-project-base

Comparison

A · CLAUDE.md · lepinkainen/network-monitorB · Cline rules · lepinkainen/network-monitor
What each file covers, counted
DimensionSharedOnly in AOnly in BOverlap
Sections135162%
Commands16113%
Section tags510131%

What each file covers

Sections

1 shared · 35 only in A · 16 only in B
  • − CLAUDE.md
  • − Project Overview
  • − Architecture & Entry Points
  • − Critical Components
  • − Database Schema Strategy
  • − Build & Development Workflow
  • − Essential Commands
  • − Development Mode for UI Work
  • − UI Testing with Playwright
  • − Start development server in background
  • − Use Task tool with browser automation to test UI changes
  • − The agent can:
  • − - Navigate to localhost:8080
  • − - Take screenshots of UI components
  • − - Test hover interactions on heatmap cells
  • − - Verify responsive layout behavior
  • − - Test different time range selections
  • − - Validate tooltips and interactive elements
  • − Pre-commit Requirements
  • − Project-Specific Conventions
  • − Error Handling Pattern
  • − Configuration Philosophy
  • − Ping Implementation Detail
  • − Web Interface Integration
  • − API Patterns
  • − Static Assets
  • − Testing & CI/CD
  • − Test Strategy
  • − Docker Deployment
  • − Integration Points
  • − llm-shared Submodule
  • − External Dependencies
  • − ISP Documentation Workflow
  • − Data Collection Strategy
  • − Report Generation
  • + Network Monitor Project Summary
  • + Overview
  • + Technology Stack
  • + Architecture
  • + Key Components
  • + Features
  • + Configuration
  • + Deployment
  • + Data Flow
  • + Use Cases
  • + Development Guidelines
  • + Git Practices
  • + Build System
  • + Code Quality
  • + Modern Tools
  • + Project Validation
  •   Development Notes

Commands

1 shared · 6 only in A · 1 only in B
  • − task dev
  • − task test
  • − task lint
  • − task build-linux
  • − task test-ci
  • − docker-compose.yml
  • + go build ./cmd/monitor
  •   task build

Section tags

5 shared · 10 only in A · 1 only in B
  • − test
  • − types
  • − testing-strategy
  • − dependencies
  • − database
  • − api
  • − ui
  • − deployment
  • − agent-behaviour
  • − docs
  • + do-not
  •   build
  •   lint-format
  •   code-style
  •   architecture
  •   git-pr

Line diff

+90 added−162 removed33 unchanged16.9% identical
lepinkainen/network-monitor · CLAUDE.md
@@ −1 @@
1# CLAUDE.md
2 
3Network Connectivity Monitor - AI Agent Guidelines
4 
5## Project Overview
6 
7A Go-based network monitoring tool that performs continuous ping tests to detect ISP issues and connectivity patterns. Features intelligent data retention, pattern detection via heatmaps, and web-based visualization.
8 
9**Key Purpose**: Long-term ISP issue documentation with compelling visual evidence.
 
 
 
 
10 
11## Architecture & Entry Points
12 
13- **Main Entry**: `main.go` - Orchestrates all components with graceful shutdown
14- **Internal Structure**: Clean separation via `internal/` packages
15- **Static Assets**: Embedded via `//go:embed static/*` in main.go (production) or filesystem serving (development)
16- **Database**: SQLite with WAL mode for concurrent access
 
17 
18### Critical Components
19 
20```plain
21internal/
22├── config/ - CLI flags and validation (config.go, flags.go)
23├── database/ - SQLite operations, schema, maintenance (db.go, queries.go)
24├── models/ - Data structures (ping.go, stats.go, types.go)
25├── monitor/ - Worker orchestration and lifecycle (monitor.go, worker.go)
26├── ping/ - Cross-platform ping implementation
27├── report/ - PNG chart generation using go-chart/v2
28└── web/ - HTTP server and REST API (handlers.go, server.go)
29```
 
 
 
 
30 
31## Database Schema Strategy
32 
33**Smart Retention Pattern**:
 
 
 
 
 
34 
35- `ping_results`: Raw data (7-day retention)
36- `hourly_patterns`: Aggregated for heatmap (90-day retention)
37- `outages`: Detected failures (permanent)
38- `hourly_stats`: Statistical summaries
39 
40**Key Insight**: Maintenance runs hourly via `internal/database/maintenance.go` - automatic data aggregation and cleanup.
 
 
 
 
41 
42## Build & Development Workflow
43 
44### Essential Commands
 
 
 
45 
46```bash
47task build # Build after tests+lint (required for deployment)
48task dev # Development server with live static file editing
49task test # Run all tests
50task lint # goimports + vet + golangci-lint
51task build-linux # Cross-compile for Linux deployment
52```
53 
54### Development Mode for UI Work
 
 
 
 
55 
56**Live Static File Editing**: The `task dev` command now enables live editing of HTML, CSS, and JavaScript files without server restarts.
57 
58```bash
59task dev # Runs: go run . --dev
60```
 
61 
62**Development Mode Features**:
63 
64- **Live HTML editing**: Changes to `static/index.html` visible on browser refresh
65- **Live CSS editing**: Modifications to `static/css/*.css` applied immediately
66- **Live JavaScript editing**: Updates to `static/js/*.js` served instantly from filesystem
67- **No server restart required**: Only browser refresh needed to see changes
68- **Production safety**: Build process unchanged, still uses embedded files
69 
70**Development vs Production**:
 
 
 
71 
72- **Development** (`--dev` flag): Serves files from `static/` directory (live editing)
73- **Production** (default): Uses embedded `//go:embed` files (compile-time)
74 
75### UI Testing with Playwright
 
 
 
 
76 
77**Automated UI Testing**: Use the general-purpose agent with Playwright browser automation for comprehensive UI testing.
78 
79```bash
80# Start development server in background
81task dev
 
 
82 
83# Use Task tool with browser automation to test UI changes
84# The agent can:
85# - Navigate to localhost:8080
86# - Take screenshots of UI components
87# - Test hover interactions on heatmap cells
88# - Verify responsive layout behavior
89# - Test different time range selections
90# - Validate tooltips and interactive elements
91```
92 
93**UI Development Workflow**:
 
 
94 
951. Start development server: `task dev`
962. Edit static files (HTML/CSS/JS) in your editor
973. Refresh browser to see changes immediately
984. Use Playwright agent to verify functionality
995. Take screenshots for documentation/validation
100 
101### Pre-commit Requirements
 
102 
103- **Always run**: `task build` before considering changes complete
104- **Format**: Uses `goimports -w .` (NOT gofmt) for imports management
105- **Linting**: golangci-lint with `.golangci.yml` config
106 
107## Project-Specific Conventions
108 
109### Error Handling Pattern
110 
111```go
112// Preferred throughout codebase
113if errors.Is(err, database.ErrOutageExists) {
114 // handle specifically
115}
116```
117 
118### Configuration Philosophy
119 
120- CLI flags via `internal/config/flags.go`
121- Validation in separate `config.Validate()` method
122- Defaults optimized for home ISP monitoring
123 
124### Ping Implementation Detail
125 
126- Cross-platform: Windows/Mac/Linux support in `internal/ping/ping.go`
127- **Outage Detection**: 5+ failures in any 10 consecutive pings
128- Uses OS-native ping (not raw sockets) for reliability
129 
130## Web Interface Integration
131 
132### API Patterns
133 
134- RESTful JSON endpoints in `internal/web/handlers.go`
135- Real-time data serving for D3.js frontend
136- **Key Route**: `/api/data` powers the heatmap visualization
137 
138### Static Assets
139 
140- Single `static/index.html` with embedded D3.js
141- **Production Pattern**: All static files embedded at compile time via `//go:embed`
142- **Development Pattern**: Files served directly from filesystem for live editing
143- No build step for frontend - vanilla HTML/JS/CSS
144- **Live Development**: Use `task dev` for immediate UI changes without server restart
145 
146## Testing & CI/CD
147 
148### Test Strategy
149 
150- `*_test.go` files for critical functionality only
151- **CI Pattern**: Separate test/lint/build jobs in GitHub Actions
152- Uses `task test-ci` for coverage reporting
153 
154### Docker Deployment
155 
156- `Dockerfile` + `docker-compose.yml` for containerization
157- **Volume Pattern**: `./data:/app/data` for database persistence
158- Health checks via web interface availability
159 
160## Integration Points
161 
162### llm-shared Submodule
163 
164- Development tools in `llm-shared/utils/`
165- **Key Tool**: `gofuncs.go` for function analysis
166- Project validation via `validate-docs.go`
167 
168### External Dependencies
169 
170- **Database**: `modernc.org/sqlite` (pure Go SQLite)
171- **Charts**: `github.com/wcharczuk/go-chart/v2` for PNG report generation
172- **Minimal Dependencies**: Prefers standard library
173 
174## ISP Documentation Workflow
175 
176### Data Collection Strategy
177 
1781. **Hour 1**: Basic connectivity data
1792. **Day 1**: Initial pattern recognition
1803. **Week 1**: Clear time-of-day patterns
1814. **Month 1**: Compelling evidence for ISP discussions
182 
183### Report Generation
184 
185- PNG charts via `internal/report/` package
186- **Visual Evidence**: Heatmap screenshots after 1-2 weeks most effective
187- Export capability for CSV data analysis
188 
189## Development Notes
190 
191- **Deployment Target**: Single-user, private monitoring (not SaaS)
192- **Service Integration**: Includes launchd/systemd service examples in README
193- **Resource Efficient**: <1% CPU, 20-50MB RAM with default settings
194- **Cross-Platform**: Full macOS/Linux/Windows support with OS-specific deployment guides
 
 
195 
lepinkainen/network-monitor · .clinerules/project-base.md
@@ +1 @@
1# Network Monitor Project Summary
2 
3## Overview
4 
5A focused Go-based network connectivity monitoring solution designed for long-term ISP issue documentation and pattern detection.
6 
7## Technology Stack
8 
9- **Language**: Go 1.21
10- **Database**: SQLite (modernc.org/sqlite driver)
11- **Frontend**: HTML/CSS/JavaScript with D3.js for visualizations
12- **Chart Generation**: go-chart/v2 library for static PNG reports
13- **Build System**: Taskfile.yml for build management and automation
14 
15## Architecture
16 
17- **Main Application**: Go module with entry point at `cmd/monitor/main.go`, embedded static web assets
18- **Internal Packages**: Modular design with `internal/` packages for separation of concerns
19- **Database Layer**: SQLite with multiple tables for ping results, outages, and aggregated patterns
20- **Web Interface**: REST API serving data to D3.js-based dashboard
21- **Report Generation**: `internal/report/` package for static PNG chart generation
22 
23## Key Components
24 
25- **cmd/monitor/main.go**: Core monitoring logic, ping workers, web server, database management
26- **internal/config/**: Configuration management (config.go, flags.go)
27- **internal/database/**: Database operations and schema (db.go, maintenance.go, queries.go)
28- **internal/models/**: Data models (ping.go, stats.go, types.go)
29- **internal/monitor/**: Monitoring lifecycle and workers (lifecycle.go, monitor.go, worker.go)
30- **internal/ping/**: Ping implementation (ping.go)
31- **internal/report/**: Chart generation using go-chart library (charts.go, generator.go, text.go, utils.go)
32- **internal/web/**: Web server and API handlers (handlers.go, server.go)
33- **static/index.html**: Web dashboard with real-time visualizations
34- **Database Tables**:
35 - `ping_results`: Raw ping data (7-day retention)
36 - `hourly_patterns`: Aggregated patterns for heatmap (90-day retention)
37 - `outages`: Detected connectivity failures
38 - `hourly_stats`: Statistical aggregations
39 
40## Features
41 
42- **Continuous Monitoring**: Configurable ping intervals to multiple targets
43- **Real-time Dashboard**: Web interface at localhost:8080 with live charts
44- **Pattern Detection**: 24-hour heatmap overlay showing issue patterns across days
45- **Outage Tracking**: Automatic detection of connectivity failures (5+ failed pings in any 10 consecutive pings)
46- **Static Reports**: PNG chart generation for ISP evidence documentation
47- **Data Management**: Automatic maintenance with configurable retention periods
48 
49## Configuration
 
 
 
50 
51- **Targets**: Comma-separated IP addresses (default: Google DNS, Cloudflare, OpenDNS)
52- **Interval**: Ping frequency (default: 1 second)
53- **Timeout**: Ping timeout (default: 5 seconds)
54- **Database**: SQLite file path (default: network_monitor.db)
55- **Port**: Web server port (default: 8080)
56 
57## Deployment
58 
59- **Build**: `task build` command (or `go build ./cmd/monitor`)
60- **Run**: Executable binary with optional flags
61- **Service**: Can be configured as macOS launchd service or systemd service
62- **Resource Usage**: Low CPU/memory footprint suitable for continuous operation
63 
64## Data Flow
 
 
 
 
 
 
65 
661. Ping workers continuously test connectivity to configured targets
672. Results stored in SQLite database with timestamps
683. Hourly maintenance aggregates data for heatmap visualization
694. Web API serves data to frontend dashboard
705. Optional static report generation for documentation
71 
72## Use Cases
73 
74- ISP connectivity monitoring and issue documentation
75- Network troubleshooting and pattern analysis
76- Long-term connectivity logging for service agreements
77- Real-time network status dashboard
78 
79## Development Guidelines
80 
81### Git Practices
 
 
 
 
82 
83- **NEVER commit to main/master branch directly** - use feature branches
84- Keep commits small and focused with clear, descriptive messages
85- Rebase branches before merging to maintain clean history
86- Use pull requests for code reviews and discussions
87 
88### Build System
 
89 
90- Use Taskfile.yml for build management instead of Makefiles
91- Required tasks: `build`, `build-linux`, `build-ci`, `test`, `test-ci`, `lint`
92- Build tasks must depend on test and lint tasks
93- Build artifacts placed in `build/` directory
94- GitHub Actions CI uses build-ci task for automated testing and linting
95 
96### Code Quality
97 
98- **Formatting**: Use `goimports -w .` (not `gofmt`) for code formatting and import management
99- **Linting**: Use golangci-lint with `.golangci.yml` configuration
100- **Error Handling**: Use `errors.Is()` and `errors.As()` for robust error checking
101- **Testing**: Include basic unit tests for critical functionality
102- **Dependencies**: Prefer standard library; justify third-party additions
103 
104### Modern Tools
 
 
 
 
 
 
 
 
105 
106- **Search**: Use `rg` (ripgrep) instead of `grep` for faster, smarter searching
107- **File Finding**: Use `fd` instead of `find` for better performance and `.gitignore` respect
108- **Code Analysis**: Use `gofuncs` tool for exploring Go function structures
109 
110### Project Validation
 
 
 
 
111 
112- Use `validate-docs` tool to ensure standard project structure compliance
113- Validates directory structure, required files, and build configuration
114 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
115## Development Notes
116 
117- Cross-platform ping implementation (Windows/Mac/Linux support)
118- Embedded static files using Go's `embed` package
119- RESTful API design with JSON responses
120- D3.js for interactive data visualizations
121- SQLite WAL mode for concurrent access
122- llm-shared submodule provides development tools and guidelines
123 
@@ −1 +1 @@
1−# CLAUDE.md
1+# Network Monitor Project Summary
22  
3−Network Connectivity Monitor - AI Agent Guidelines
3+## Overview
44  
5−## Project Overview
5+A focused Go-based network connectivity monitoring solution designed for long-term ISP issue documentation and pattern detection.
66  
7−A Go-based network monitoring tool that performs continuous ping tests to detect ISP issues and connectivity patterns. Features intelligent data retention, pattern detection via heatmaps, and web-based visualization.
7+## Technology Stack
88  
9−**Key Purpose**: Long-term ISP issue documentation with compelling visual evidence.
9+- **Language**: Go 1.21
10+- **Database**: SQLite (modernc.org/sqlite driver)
11+- **Frontend**: HTML/CSS/JavaScript with D3.js for visualizations
12+- **Chart Generation**: go-chart/v2 library for static PNG reports
13+- **Build System**: Taskfile.yml for build management and automation
1014  
11−## Architecture & Entry Points
15+## Architecture
1216  
13−- **Main Entry**: `main.go` - Orchestrates all components with graceful shutdown
14−- **Internal Structure**: Clean separation via `internal/` packages
15−- **Static Assets**: Embedded via `//go:embed static/*` in main.go (production) or filesystem serving (development)
16−- **Database**: SQLite with WAL mode for concurrent access
17+- **Main Application**: Go module with entry point at `cmd/monitor/main.go`, embedded static web assets
18+- **Internal Packages**: Modular design with `internal/` packages for separation of concerns
19+- **Database Layer**: SQLite with multiple tables for ping results, outages, and aggregated patterns
20+- **Web Interface**: REST API serving data to D3.js-based dashboard
21+- **Report Generation**: `internal/report/` package for static PNG chart generation
1722  
18−### Critical Components
23+## Key Components
1924  
20−```plain
21−internal/
22−├── config/ - CLI flags and validation (config.go, flags.go)
23−├── database/ - SQLite operations, schema, maintenance (db.go, queries.go)
24−├── models/ - Data structures (ping.go, stats.go, types.go)
25−├── monitor/ - Worker orchestration and lifecycle (monitor.go, worker.go)
26−├── ping/ - Cross-platform ping implementation
27−├── report/ - PNG chart generation using go-chart/v2
28−└── web/ - HTTP server and REST API (handlers.go, server.go)
29−```
25+- **cmd/monitor/main.go**: Core monitoring logic, ping workers, web server, database management
26+- **internal/config/**: Configuration management (config.go, flags.go)
27+- **internal/database/**: Database operations and schema (db.go, maintenance.go, queries.go)
28+- **internal/models/**: Data models (ping.go, stats.go, types.go)
29+- **internal/monitor/**: Monitoring lifecycle and workers (lifecycle.go, monitor.go, worker.go)
30+- **internal/ping/**: Ping implementation (ping.go)
31+- **internal/report/**: Chart generation using go-chart library (charts.go, generator.go, text.go, utils.go)
32+- **internal/web/**: Web server and API handlers (handlers.go, server.go)
33+- **static/index.html**: Web dashboard with real-time visualizations
34+- **Database Tables**:
35+ - `ping_results`: Raw ping data (7-day retention)
36+ - `hourly_patterns`: Aggregated patterns for heatmap (90-day retention)
37+ - `outages`: Detected connectivity failures
38+ - `hourly_stats`: Statistical aggregations
3039  
31−## Database Schema Strategy
40+## Features
3241  
33−**Smart Retention Pattern**:
42+- **Continuous Monitoring**: Configurable ping intervals to multiple targets
43+- **Real-time Dashboard**: Web interface at localhost:8080 with live charts
44+- **Pattern Detection**: 24-hour heatmap overlay showing issue patterns across days
45+- **Outage Tracking**: Automatic detection of connectivity failures (5+ failed pings in any 10 consecutive pings)
46+- **Static Reports**: PNG chart generation for ISP evidence documentation
47+- **Data Management**: Automatic maintenance with configurable retention periods
3448  
35−- `ping_results`: Raw data (7-day retention)
36−- `hourly_patterns`: Aggregated for heatmap (90-day retention)
37−- `outages`: Detected failures (permanent)
38−- `hourly_stats`: Statistical summaries
49+## Configuration
3950  
40−**Key Insight**: Maintenance runs hourly via `internal/database/maintenance.go` - automatic data aggregation and cleanup.
51+- **Targets**: Comma-separated IP addresses (default: Google DNS, Cloudflare, OpenDNS)
52+- **Interval**: Ping frequency (default: 1 second)
53+- **Timeout**: Ping timeout (default: 5 seconds)
54+- **Database**: SQLite file path (default: network_monitor.db)
55+- **Port**: Web server port (default: 8080)
4156  
42−## Build & Development Workflow
57+## Deployment
4358  
44−### Essential Commands
59+- **Build**: `task build` command (or `go build ./cmd/monitor`)
60+- **Run**: Executable binary with optional flags
61+- **Service**: Can be configured as macOS launchd service or systemd service
62+- **Resource Usage**: Low CPU/memory footprint suitable for continuous operation
4563  
46−```bash
47−task build # Build after tests+lint (required for deployment)
48−task dev # Development server with live static file editing
49−task test # Run all tests
50−task lint # goimports + vet + golangci-lint
51−task build-linux # Cross-compile for Linux deployment
52−```
64+## Data Flow
5365  
54−### Development Mode for UI Work
66+1. Ping workers continuously test connectivity to configured targets
67+2. Results stored in SQLite database with timestamps
68+3. Hourly maintenance aggregates data for heatmap visualization
69+4. Web API serves data to frontend dashboard
70+5. Optional static report generation for documentation
5571  
56−**Live Static File Editing**: The `task dev` command now enables live editing of HTML, CSS, and JavaScript files without server restarts.
72+## Use Cases
5773  
58−```bash
59−task dev # Runs: go run . --dev
60−```
74+- ISP connectivity monitoring and issue documentation
75+- Network troubleshooting and pattern analysis
76+- Long-term connectivity logging for service agreements
77+- Real-time network status dashboard
6178  
62−**Development Mode Features**:
79+## Development Guidelines
6380  
64−- **Live HTML editing**: Changes to `static/index.html` visible on browser refresh
65−- **Live CSS editing**: Modifications to `static/css/*.css` applied immediately
66−- **Live JavaScript editing**: Updates to `static/js/*.js` served instantly from filesystem
67−- **No server restart required**: Only browser refresh needed to see changes
68−- **Production safety**: Build process unchanged, still uses embedded files
81+### Git Practices
6982  
70−**Development vs Production**:
83+- **NEVER commit to main/master branch directly** - use feature branches
84+- Keep commits small and focused with clear, descriptive messages
85+- Rebase branches before merging to maintain clean history
86+- Use pull requests for code reviews and discussions
7187  
72−- **Development** (`--dev` flag): Serves files from `static/` directory (live editing)
73−- **Production** (default): Uses embedded `//go:embed` files (compile-time)
88+### Build System
7489  
75−### UI Testing with Playwright
90+- Use Taskfile.yml for build management instead of Makefiles
91+- Required tasks: `build`, `build-linux`, `build-ci`, `test`, `test-ci`, `lint`
92+- Build tasks must depend on test and lint tasks
93+- Build artifacts placed in `build/` directory
94+- GitHub Actions CI uses build-ci task for automated testing and linting
7695  
77−**Automated UI Testing**: Use the general-purpose agent with Playwright browser automation for comprehensive UI testing.
96+### Code Quality
7897  
79−```bash
80−# Start development server in background
81−task dev
98+- **Formatting**: Use `goimports -w .` (not `gofmt`) for code formatting and import management
99+- **Linting**: Use golangci-lint with `.golangci.yml` configuration
100+- **Error Handling**: Use `errors.Is()` and `errors.As()` for robust error checking
101+- **Testing**: Include basic unit tests for critical functionality
102+- **Dependencies**: Prefer standard library; justify third-party additions
82103  
83−# Use Task tool with browser automation to test UI changes
84−# The agent can:
85−# - Navigate to localhost:8080
86−# - Take screenshots of UI components
87−# - Test hover interactions on heatmap cells
88−# - Verify responsive layout behavior
89−# - Test different time range selections
90−# - Validate tooltips and interactive elements
91−```
104+### Modern Tools
92105  
93−**UI Development Workflow**:
106+- **Search**: Use `rg` (ripgrep) instead of `grep` for faster, smarter searching
107+- **File Finding**: Use `fd` instead of `find` for better performance and `.gitignore` respect
108+- **Code Analysis**: Use `gofuncs` tool for exploring Go function structures
94109  
95−1. Start development server: `task dev`
96−2. Edit static files (HTML/CSS/JS) in your editor
97−3. Refresh browser to see changes immediately
98−4. Use Playwright agent to verify functionality
99−5. Take screenshots for documentation/validation
110+### Project Validation
100111  
101−### Pre-commit Requirements
112+- Use `validate-docs` tool to ensure standard project structure compliance
113+- Validates directory structure, required files, and build configuration
102114  
103−- **Always run**: `task build` before considering changes complete
104−- **Format**: Uses `goimports -w .` (NOT gofmt) for imports management
105−- **Linting**: golangci-lint with `.golangci.yml` config
106− 
107−## Project-Specific Conventions
108− 
109−### Error Handling Pattern
110− 
111−```go
112−// Preferred throughout codebase
113−if errors.Is(err, database.ErrOutageExists) {
114− // handle specifically
115−}
116−```
117− 
118−### Configuration Philosophy
119− 
120−- CLI flags via `internal/config/flags.go`
121−- Validation in separate `config.Validate()` method
122−- Defaults optimized for home ISP monitoring
123− 
124−### Ping Implementation Detail
125− 
126−- Cross-platform: Windows/Mac/Linux support in `internal/ping/ping.go`
127−- **Outage Detection**: 5+ failures in any 10 consecutive pings
128−- Uses OS-native ping (not raw sockets) for reliability
129− 
130−## Web Interface Integration
131− 
132−### API Patterns
133− 
134−- RESTful JSON endpoints in `internal/web/handlers.go`
135−- Real-time data serving for D3.js frontend
136−- **Key Route**: `/api/data` powers the heatmap visualization
137− 
138−### Static Assets
139− 
140−- Single `static/index.html` with embedded D3.js
141−- **Production Pattern**: All static files embedded at compile time via `//go:embed`
142−- **Development Pattern**: Files served directly from filesystem for live editing
143−- No build step for frontend - vanilla HTML/JS/CSS
144−- **Live Development**: Use `task dev` for immediate UI changes without server restart
145− 
146−## Testing & CI/CD
147− 
148−### Test Strategy
149− 
150−- `*_test.go` files for critical functionality only
151−- **CI Pattern**: Separate test/lint/build jobs in GitHub Actions
152−- Uses `task test-ci` for coverage reporting
153− 
154−### Docker Deployment
155− 
156−- `Dockerfile` + `docker-compose.yml` for containerization
157−- **Volume Pattern**: `./data:/app/data` for database persistence
158−- Health checks via web interface availability
159− 
160−## Integration Points
161− 
162−### llm-shared Submodule
163− 
164−- Development tools in `llm-shared/utils/`
165−- **Key Tool**: `gofuncs.go` for function analysis
166−- Project validation via `validate-docs.go`
167− 
168−### External Dependencies
169− 
170−- **Database**: `modernc.org/sqlite` (pure Go SQLite)
171−- **Charts**: `github.com/wcharczuk/go-chart/v2` for PNG report generation
172−- **Minimal Dependencies**: Prefers standard library
173− 
174−## ISP Documentation Workflow
175− 
176−### Data Collection Strategy
177− 
178−1. **Hour 1**: Basic connectivity data
179−2. **Day 1**: Initial pattern recognition
180−3. **Week 1**: Clear time-of-day patterns
181−4. **Month 1**: Compelling evidence for ISP discussions
182− 
183−### Report Generation
184− 
185−- PNG charts via `internal/report/` package
186−- **Visual Evidence**: Heatmap screenshots after 1-2 weeks most effective
187−- Export capability for CSV data analysis
188− 
189115 ## Development Notes
190116  
191−- **Deployment Target**: Single-user, private monitoring (not SaaS)
192−- **Service Integration**: Includes launchd/systemd service examples in README
193−- **Resource Efficient**: <1% CPU, 20-50MB RAM with default settings
194−- **Cross-Platform**: Full macOS/Linux/Windows support with OS-specific deployment guides
117+- Cross-platform ping implementation (Windows/Mac/Linux support)
118+- Embedded static files using Go's `embed` package
119+- RESTful API design with JSON responses
120+- D3.js for interactive data visualizations
121+- SQLite WAL mode for concurrent access
122+- llm-shared submodule provides development tools and guidelines
195123  
RuleStack

Built by

Kynth Studio

Directory

Configs
Stacks
Compare formats
Diff two configs
Best AGENTS.md examples

Formats

AGENTS.md
CLAUDE.md
Cursor rules
Copilot instructions

Reference

Read API
Corpus health
Privacy Policy
Terms

RuleStack

RuleStack

Built by

Kynth Studio

Directory

Configs
Stacks
Compare formats
Diff two configs
Best AGENTS.md examples

Formats

AGENTS.md
CLAUDE.md
Cursor rules
Copilot instructions

Reference

Read API
Corpus health
Privacy Policy
Terms

RuleStack

RuleStack

Built by

Kynth Studio

Directory

Configs
Stacks
Compare formats
Diff two configs
Best AGENTS.md examples

Formats

AGENTS.md
CLAUDE.md
Cursor rules
Copilot instructions

Reference

Read API
Corpus health
Privacy Policy
Terms

RuleStack