{"id":19040074,"url":"https://github.com/opensrcerer/paddy-infrastructure","last_synced_at":"2025-10-12T17:03:50.251Z","repository":{"id":220581227,"uuid":"746190419","full_name":"OpenSrcerer/paddy-infrastructure","owner":"OpenSrcerer","description":"IaaC for Project Paddy, the Power Administration Daemon","archived":false,"fork":false,"pushed_at":"2024-07-18T08:44:33.000Z","size":637,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-10-29T10:11:12.538Z","etag":null,"topics":["autoscaling","gcp","hcl","homemade","iot","terraform"],"latest_commit_sha":null,"homepage":"https://paddy.danielstefani.online","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OpenSrcerer.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":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-01-21T10:46:17.000Z","updated_at":"2024-07-18T08:44:36.000Z","dependencies_parsed_at":"2024-11-08T22:20:23.537Z","dependency_job_id":"f8d63fdf-8cdd-4eb0-81bc-25e938a000f3","html_url":"https://github.com/OpenSrcerer/paddy-infrastructure","commit_stats":null,"previous_names":["opensrcerer/paddy-infrastructure"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenSrcerer%2Fpaddy-infrastructure","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenSrcerer%2Fpaddy-infrastructure/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenSrcerer%2Fpaddy-infrastructure/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenSrcerer%2Fpaddy-infrastructure/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenSrcerer","download_url":"https://codeload.github.com/OpenSrcerer/paddy-infrastructure/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240100518,"owners_count":19747682,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["autoscaling","gcp","hcl","homemade","iot","terraform"],"created_at":"2024-11-08T22:20:11.944Z","updated_at":"2025-10-12T17:03:45.202Z","avatar_url":"https://github.com/OpenSrcerer.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n    \u003cimg src=\"img/paddy_infra.png\" alt=\"logo\" width=\"250\"/\u003e\n\u003c/p\u003e\n\n# Paddy Infrastructure\n\nThis is the IaaC component for Paddy, the Power Administration Daemon.\n\nIt uses [Terraform](https://www.terraform.io/) on Google Cloud as a target, using a bucket as a backend.\n\nThe job of this code is to deploy the proper infrastructure for the whole Paddy project to run on it. Specifically, here are the components it creates an environment for:\n\n1. Paddy Auth (Single VM)\n2. A Neo4j Database (Single VM) -\u003e To be upscaled to a cluster soon\n3. Paddy Backend Cluster (Load Balanced)\n4. An EMQX Broker Cluster (Load Balanced)\n\nAll application deployments are done on their own VM instance, by using Docker \u0026 Docker Compose scripts. Secrets/Variables defined in this repository are carried over to each instance through Google's instance metadata service.\n\n# Architecture Diagram\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"img/infra-overview.svg\" alt=\"Overview of the Infrastructure\"/\u003e\n\u003c/p\u003e\n\n# Overview\n\nThis infrastructure maintains high separation of business concerns by creating a clear division between each level and not intermixing services. There is always a clear duty relationship between a microservice and what it ought to do, which helps to keep the business logic in order.\n* **Presentation Tier:** In the presentation tier, the Daemons and Client devices are contained. The main purpose of this layer is to perform the highest-level function of the project, such as showing a management interface to users, collecting power statistics and performing switching of the load device.\n* **Server Tier:** This tier is the one that receives the traffic from the presentation layer. It mainly consists of command operations and request-response conversations. Since it directly handles connections with the presentation layer, there is a strong focus on scalability. Thus, each service is clustered in replicas.\n* **Logic Tier:** This tier is responsible for highly-specific operations that could not be handled solely by the Server tier or that could benefit from running independently. Scheduling and authentication are good examples of this.\n* **Data Tier:** Intuitive to understand, this is where the application data is stored. Considering that many services access this layer concurrently, it is also clustered in replicas.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopensrcerer%2Fpaddy-infrastructure","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopensrcerer%2Fpaddy-infrastructure","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopensrcerer%2Fpaddy-infrastructure/lists"}