{"id":48917063,"url":"https://github.com/danpasecinic/podling","last_synced_at":"2026-04-17T03:09:48.844Z","repository":{"id":319661592,"uuid":"1054136403","full_name":"danpasecinic/podling","owner":"danpasecinic","description":"A lightweight container orchestrator in Go. It features a master controller with a REST API, worker agents that manage containers via Docker.","archived":false,"fork":false,"pushed_at":"2026-02-09T05:57:24.000Z","size":397,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"development","last_synced_at":"2026-02-09T11:40:46.223Z","etag":null,"topics":["docker-swarm","go","kubernetes","react","typescript","vite"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/danpasecinic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-10T12:18:13.000Z","updated_at":"2026-02-09T05:57:27.000Z","dependencies_parsed_at":"2025-12-11T20:14:34.386Z","dependency_job_id":null,"html_url":"https://github.com/danpasecinic/podling","commit_stats":null,"previous_names":["danpasecinic/podling"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/danpasecinic/podling","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danpasecinic%2Fpodling","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danpasecinic%2Fpodling/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danpasecinic%2Fpodling/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danpasecinic%2Fpodling/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/danpasecinic","download_url":"https://codeload.github.com/danpasecinic/podling/tar.gz/refs/heads/development","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danpasecinic%2Fpodling/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31913116,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T18:22:33.417Z","status":"online","status_checked_at":"2026-04-17T02:00:06.879Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker-swarm","go","kubernetes","react","typescript","vite"],"created_at":"2026-04-17T03:09:48.150Z","updated_at":"2026-04-17T03:09:48.832Z","avatar_url":"https://github.com/danpasecinic.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Podling\n\n[![CI](https://github.com/danpasecinic/podling/actions/workflows/ci.yml/badge.svg)](https://github.com/danpasecinic/podling/actions/workflows/ci.yml)\n[![Go Report Card](https://goreportcard.com/badge/github.com/danpasecinic/podling)](https://goreportcard.com/report/github.com/danpasecinic/podling)\n\nA lightweight, educational container orchestrator built from scratch in Go. Inspired by Kubernetes, it features a master\ncontroller with REST API, worker agents that manage containers via Docker, and a CLI tool.\n\n## Features\n\n- **Master-Worker Architecture**: Distributed container management\n- **Multi-Container Pods**: Kubernetes-style pods with shared lifecycle and networking\n- **Service Discovery**: ClusterIP allocation with DNS resolution\n- **REST API**: Echo-based HTTP server for control plane\n- **Web Dashboard**: Modern React UI with real-time monitoring\n- **Health Checks**: Liveness and readiness probes (HTTP, TCP, Exec)\n- **Persistent Storage**: PostgreSQL or in-memory state store\n\n## Quick Start\n\n### Prerequisites\n\n- Go 1.25+, Docker Engine, Node.js 18+ (for dashboard)\n\n### Run\n\n```bash\ngit clone https://github.com/danpasecinic/podling.git \u0026\u0026 cd podling\n\n# Start PostgreSQL\ndocker-compose up -d\n\n# Configure and run master\ncp .env.example .env\nmake run\n\n# In another terminal, start a worker\nmake build\n./bin/podling-worker -node-id=worker-1\n```\n\n### Basic Usage\n\n```bash\n# Run a container\n./bin/podling run my-nginx --image nginx:latest\n\n# Create a multi-container pod\n./bin/podling pod create my-app \\\n  --container app:myapp:1.0:PORT=8080 \\\n  --container sidecar:nginx:latest\n\n# Create a service\n./bin/podling service create web --selector app=nginx --port 80\n\n# View status\n./bin/podling ps\n./bin/podling pod list\n./bin/podling nodes\n```\n\n## Architecture\n\n| Component | Description                              | Port  |\n|-----------|------------------------------------------|-------|\n| Master    | API server, scheduling, state management | 8070  |\n| Worker    | Container execution, heartbeats          | 8081+ |\n| DNS       | Service discovery resolution             | 5353  |\n| Dashboard | Web UI                                   | 5173  |\n\n```\npodling/\n├── cmd/                    # Main applications (master, worker, CLI)\n├── internal/\n│   ├── types/             # Core data models (Task, Pod, Node, Service)\n│   ├── master/            # API handlers, scheduler, state store\n│   └── worker/            # Docker client, health checks, agent\n├── web/                   # React dashboard\n└── docs/                  # Documentation\n```\n\n\u003cimg width=\"3828\" height=\"2350\" alt=\"Dashboard\" src=\"https://github.com/user-attachments/assets/b146f06a-6e8a-47e0-9a68-2652e105953a\" /\u003e\n\n## Documentation\n\n| Document                                 | Description              |\n|------------------------------------------|--------------------------|\n| [API Reference](docs/API.md)             | REST API endpoints       |\n| [CLI Reference](docs/CLI.md)             | Command-line interface   |\n| [Architecture](docs/ARCHITECTURE.md)     | System diagrams          |\n| [Pod Networking](docs/POD_NETWORKING.md) | Shared network namespace |\n| [Storage](docs/STORAGE.md)               | PostgreSQL configuration |\n| [Security](docs/SECURITY.md)             | SSRF prevention          |\n| [Postman Guide](docs/POSTMAN_GUIDE.md)   | API testing              |\n\n## Development\n\n```bash\nmake dev          # Run with hot reload\nmake test         # Run tests\nmake test-coverage # Generate coverage report\nmake lint         # Run linter\nmake build        # Build all binaries\n```\n\n## License\n\nSee [LICENSE](LICENSE) file for details.\n\n## Acknowledgments\n\n- Inspired by [Kubernetes](https://kubernetes.io/)\n- Built with [Echo](https://echo.labstack.com/), [React](https://react.dev/), [shadcn/ui](https://ui.shadcn.com/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanpasecinic%2Fpodling","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanpasecinic%2Fpodling","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanpasecinic%2Fpodling/lists"}