Use when adding or changing NanoProxy configuration — the env-driven struct config in pkg/config (caarlos0/env/v10), struct-tag defaults, and validation. Note real env vars (ADDR, ADDR_HTTP, TOR_ENABLED, USER_STORE_PATH).
Use when working on proxy authentication and credential storage in pkg/credential — bcrypt hashing, constant-time/secure verification, the BoltDB-backed store, multiple users, and thread-safe access.
Use when working with the Resolver interface in pkg/resolver — custom resolvers, DNS caching/TTL, retries, hostname validation, or resolution error handling for the proxy frontends.
Use when handling concurrent client connections, goroutine lifecycle, channels, context cancellation/timeouts, connection pooling, or preventing goroutine leaks in NanoProxy's proxy frontends.
Use when writing or improving Go tests in NanoProxy — table-driven tests, testify assertions/mocks, byte-level wire-format tests, coverage thresholds (make check-coverage), race detection, or benchmarks.
Use when working on the HTTP/HTTPS proxy in pkg/httpproxy — request forwarding, HTTPS CONNECT tunneling, hop-by-hop header stripping, Proxy-Authorization handling, or proxy forwarding tests.
Use when implementing or debugging the SOCKS5 protocol (RFC 1928) in pkg/socks5 — handshakes, auth method negotiation, request parsing, IPv4/IPv6/domain address types, error codes, or byte-level wire-format tests.
Use when working on Tor support in pkg/tor — control-port (NEWNYM) signaling, circuit and identity rotation, dialing through the Tor SOCKS port, or the Dockerfile-tor/supervisord deployment.