A sophisticated distributed Go service for home network monitoring with automatic leader election and service discovery.
HomeLink is a distributed service designed to run on multiple devices across a home network, including Raspberry Pi, ARM64-based Macs, and Windows machines. The system features automatic service discovery, secure leadership election, and unified API access for comprehensive home network monitoring.
- 🔍 Automatic Service Discovery - Seamless detection and connection of services across private networks
- ⚖️ Leadership Election - Secure leader election with shared secret authentication and automatic failover
- 🏠 Multi-Platform Support - Native support for Raspberry Pi, ARM64 Macs, Windows, and Linux systems
- 📡 UPnP Integration - Automatic port forwarding configuration for external network access
- 🎯 Centralized Monitoring - Real-time monitoring of configured IP/port combinations across the network
- 🔌 API Request Forwarding - Intelligent routing of API requests to the elected leader
- 🏢 Coordinator Mode - Optional centralized management mode for multi-network deployments
- 📚 Swagger Documentation - Interactive API documentation and testing interface
HomeLink follows a distributed architecture pattern with the following components:
- Service Discovery: Automatic detection of HomeLink instances on the network
- Leader Election: Democratic selection of a primary coordinator with priority-based voting
- Monitoring Engine: Continuous health checks of configured services and endpoints
- API Gateway: RESTful interface with automatic request forwarding to the leader
- UPnP Manager: Dynamic port forwarding management for external accessibility
Private Repository: https://github.com/dillius/home-link-go
This is a private repository showcasing advanced Go development practices and distributed systems architecture. To request access to view the complete source code:
- Visit my homepage: https://dillius.com
- Navigate to the Contact section on the homepage
- Submit a request using the Contact Me form with:
- Your name and email
- Reason for access (code review, collaboration, learning, etc.)
- Brief background about your Go and distributed systems experience
- Specific areas of the codebase you're interested in
The complete codebase includes:
- Distributed Systems Implementation - Real-world patterns for service discovery and leader election
- Cross-Platform Build System - Comprehensive Makefile with multi-architecture support
- Production-Ready Configuration - Flexible YAML-based configuration with environment-specific overrides
- Code Quality Tools - golangci-lint integration with comprehensive linting rules
- API Documentation - Swagger/OpenAPI specifications with interactive testing interface
- Network Programming - UPnP integration and network service management
- Concurrent Programming - Advanced Go concurrency patterns and goroutine management
- Language: Go 1.24+
- Architecture: Microservices with distributed coordination
- Service Discovery: Custom UDP-based discovery protocol
- Leadership: Consensus-based election with priority weighting
- API: RESTful JSON API with Swagger documentation
- Network: UPnP for dynamic port management
- Configuration: YAML-based with environment variable support
- Build System: Make with cross-platform compilation support
- Code Quality: golangci-lint with custom rule configuration
- Clean Architecture: Well-structured package organization following Go best practices
- Error Handling: Comprehensive error handling with meaningful error messages
- Testing Strategy: Unit tests with table-driven test patterns and mocking
- Documentation: Extensive inline documentation and external API specs
- Platform Support: Native compilation for multiple architectures and operating systems
- Network Resilience: Automatic failover and reconnection logic for distributed operations
This project demonstrates production-quality Go development practices, distributed systems design, and advanced network programming. Access is granted for educational, collaborative, and professional development purposes.