{"id":24306593,"url":"https://github.com/roib20/petinvent","last_synced_at":"2025-09-26T12:30:49.929Z","repository":{"id":139049912,"uuid":"563164099","full_name":"roib20/petinvent","owner":"roib20","description":"An inventory for your pets! PetInvent allows you to track your pets","archived":false,"fork":false,"pushed_at":"2024-06-02T10:27:44.000Z","size":309,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-06-02T11:39:10.385Z","etag":null,"topics":["bootstrap","docker","flask","kubernetes","python"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/roib20.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":"2022-11-08T03:12:29.000Z","updated_at":"2024-06-02T10:27:42.000Z","dependencies_parsed_at":"2024-04-17T14:47:20.213Z","dependency_job_id":"379abacf-8b2e-40ea-bf80-12dbb72e0b6c","html_url":"https://github.com/roib20/petinvent","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roib20%2Fpetinvent","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roib20%2Fpetinvent/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roib20%2Fpetinvent/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roib20%2Fpetinvent/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/roib20","download_url":"https://codeload.github.com/roib20/petinvent/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234309705,"owners_count":18811946,"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":["bootstrap","docker","flask","kubernetes","python"],"created_at":"2025-01-17T03:37:41.470Z","updated_at":"2025-09-26T12:30:49.557Z","avatar_url":"https://github.com/roib20.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PetInvent\n\n[![License](https://img.shields.io/badge/license-MIT-blue)](https://opensource.org/licenses/MIT)\n[![CI Status](https://github.com/roib20/petinvent/actions/workflows/ci-pipeline.yml/badge.svg)](https://github.com/roib20/petinvent/actions/workflows/ci-pipeline.yml)\n[![ShellCheck](https://github.com/roib20/petinvent/actions/workflows/shellcheck.yml/badge.svg)](https://github.com/roib20/petinvent/actions/workflows/shellcheck.yml)\n\u003cbr /\u003e\n[![Image](https://img.shields.io/badge/image-ghcr.io%2Froib20%2Fpetinvent-orange)](https://github.com/roib20/petinvent/pkgs/container/petinvent)\n\nAn inventory for your pets! PetInvent allows you to track your pets. Many animal species and breeds are available to choose from.\n\nThis project is a full stack web application that uses DevOps best practices - including containerization, micro-services, Infrastructure as Code (IaC), CI/CD pipelines, GitOps, Kubernetes and more.\n\n~Live Demo: [petbuddy.party](https://www.petbuddy.party/)~\n\n\u003cbr /\u003e\n\n## Installation\n\nA local clean install using Docker and docker compose can be easily achieved using the `clean-install.sh` shell script.\n\nAdvanced users can deploy manually using Docker and docker compose, or using Kubernetes and Helm with the charts and shell scripts under the `Kubernetes` folder.\n\n\u003cbr /\u003e\n\n## Contribution\nIs your favorite animal missing? Found any bugs? You are welcome to open issues, pull requests or forks.\n\n\u003cbr /\u003e\n\n## Technology Stack\n\n### Full Stack Web Application\n- **Back-end Language:**  [Python](https://www.python.org/)  \n- **Back-end Framework:** [Flask](https://flask.palletsprojects.com/)  \n- **Front-end Languages:** [HTML](https://developer.mozilla.org/en/docs/Web/HTML), [CSS](https://developer.mozilla.org/en/docs/Web/CSS) \u0026 [JavaScript](https://developer.mozilla.org/en/docs/Web/JavaScript)  \n- **Front-end Framework:** [Bootstrap v5](https://getbootstrap.com/)\n- **Database:** SQL - [PostgreSQL](https://www.postgresql.org/), [MySQL](https://www.mysql.com/), [MariaDB](https://mariadb.org/) or [SQLite](https://www.sqlite.org/)  \n- **Scripting Languages**: [Bash](https://www.gnu.org/software/bash/) \u0026 [POSIX Shell Command Language](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html)  \n\n### Containerization (Docker)\n- **Container Engine:** [Docker](https://www.docker.com) \u0026 [containerd](https://containerd.io/) \n- **Container Image Format:** [OCI Image Format](https://github.com/opencontainers/image-spec), built using [Dockerfile](https://docs.docker.com/engine/reference/builder/)\n- **Container Image Registry:** [GitHub Packages](https://ghcr.io) - GitHub Container Registry [^1]  \n- **Deployment:** [Docker Compose](https://docs.docker.com/compose/) [^2]  \n\n### Container Orchestration (Kubernetes)\n- **Kubernetes Engine:** [Google Kubernetes Engine (GKE)](https://cloud.google.com/kubernetes-engine) [^3]  \n- **Kubernetes Packaging:** [Helm](https://helm.sh/)  \n\n### Pipeline\n- **Infrastructure as Code (IaC):** [Terraform](https://www.terraform.io/) [^4]\n- **CI/CD:** [Github Actions](https://github.com/features/actions)\n  \n- **GitOps:** [Argo CD](https://argoproj.github.io/cd/) [^5]  \n- **Cloud Provider:** [Google Cloud Platform (GCP)](https://cloud.google.com/)  \n\n### Kubernetes Stack [^6]\n- **Application:** [PetInvent](https://ghcr.io/roib20/petinvent)  \n- **Database:** [PostgreSQL HA packaged by Bitnami](https://bitnami.com/stack/postgresql-ha)  \n- **Secret Management:** [Sealed Secrets](https://sealed-secrets.netlify.app/)  \n- **Ingress Controller:** [Ingress NGINX Controller](https://kubernetes.github.io/ingress-nginx/)  \n- **TLS Certificate:** [cert-manager](https://cert-manager.io/) \u0026 [Let's Encrypt](https://letsencrypt.org/)  \n- **Authoritative DNS:** [ExternalDNS](https://github.com/kubernetes-sigs/external-dns) \u0026 [Cloudflare DNS](https://www.cloudflare.com/dns/)  \n- **Domain Registrar**: [Cloudflare Registrar](https://www.cloudflare.com/products/registrar/)  \n\n\u003cbr /\u003e\u003cbr /\u003e\n\n[^1]: See container image here: [ghcr.io/roib20/petinvent](https://ghcr.io/roib20/petinvent) \n[^2]: Used for testing and local deployments (see `Installation` instructions above).  \n[^3]: Used for cloud deployments  \n[^4]: See repo: [Terraform - Provision a GKE Cluster with Cloudflare Ingress and ArgoCD](https://github.com/roib20/terraform-provision-gke-cloudflare)  \n[^5]: See repo: [petinvent-gitops](https://github.com/roib20/petinvent-gitops)  \n[^6]: Deployed using the Pipeline above.  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froib20%2Fpetinvent","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Froib20%2Fpetinvent","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froib20%2Fpetinvent/lists"}