Skip to content

Latest commit

 

History

History
81 lines (59 loc) · 4.42 KB

File metadata and controls

81 lines (59 loc) · 4.42 KB

HomeLink - Distributed Home Network Monitoring

A sophisticated distributed Go service for home network monitoring with automatic leader election and service discovery.

Project Overview

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.

Key Features

  • 🔍 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

Architecture

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

Repository Access

Private Repository: https://github.com/dillius/home-link-go

Request Access

This is a private repository showcasing advanced Go development practices and distributed systems architecture. To request access to view the complete source code:

  1. Visit my homepage: https://dillius.com
  2. Navigate to the Contact section on the homepage
  3. 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

What You'll Find

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

Tech Stack

  • 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

Development Highlights

  • 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.