{"id":46171292,"url":"https://github.com/jakuboskera/guestbook","last_synced_at":"2026-03-02T15:13:06.796Z","repository":{"id":38823427,"uuid":"412893637","full_name":"jakuboskera/guestbook","owner":"jakuboskera","description":"Guestbook is a simple cloud-native web application which allows visitors to leave a public comment without creating a user account","archived":false,"fork":false,"pushed_at":"2023-05-03T19:08:58.000Z","size":1158,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2023-05-03T20:58:38.293Z","etag":null,"topics":["docker","docker-compose","flask","flask-migrate","flask-restx","helm","kubernetes","postgresql","python","sqlalchemy"],"latest_commit_sha":null,"homepage":"https://guestbook.jakuboskera.dev","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jakuboskera.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}},"created_at":"2021-10-02T19:30:51.000Z","updated_at":"2023-05-03T20:58:38.293Z","dependencies_parsed_at":"2022-08-26T19:52:19.540Z","dependency_job_id":null,"html_url":"https://github.com/jakuboskera/guestbook","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"purl":"pkg:github/jakuboskera/guestbook","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakuboskera%2Fguestbook","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakuboskera%2Fguestbook/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakuboskera%2Fguestbook/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakuboskera%2Fguestbook/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jakuboskera","download_url":"https://codeload.github.com/jakuboskera/guestbook/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakuboskera%2Fguestbook/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30007322,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-02T14:08:50.421Z","status":"ssl_error","status_checked_at":"2026-03-02T14:08:50.037Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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","docker-compose","flask","flask-migrate","flask-restx","helm","kubernetes","postgresql","python","sqlalchemy"],"created_at":"2026-03-02T15:13:06.013Z","updated_at":"2026-03-02T15:13:06.776Z","avatar_url":"https://github.com/jakuboskera.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n    \u003ch1\u003e📘 Guestbook\u003c/h1\u003e\n    \u003ca href=\"https://github.com/jakuboskera/guestbook/actions\"\u003e\u003cimg alt=\"jakuboskera\" src=\"https://img.shields.io/github/actions/workflow/status/jakuboskera/guestbook/release.yml?logo=github\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/jakuboskera/guestbook/releases\"\u003e\u003cimg alt=\"jakuboskera\" src=\"https://img.shields.io/github/v/release/jakuboskera/guestbook?logo=docker\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://hub.docker.com/repository/docker/jakuboskera/guestbook\"\u003e\u003cimg alt=\"jakuboskera\" src=\"https://img.shields.io/docker/pulls/jakuboskera/guestbook?logo=docker\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://opensource.org/licenses/Apache-2.0\"\u003e\u003cimg alt=\"jakuboskera\" src=\"https://img.shields.io/badge/License-Apache%202.0-blue.svg\"\u003e\u003c/a\u003e\n\u003c/div\u003e\n\nGuestbook is a simple cloud-native web application which allows visitors to\nleave a public comment without creating a user account.\n\nApplication uses\n[MVC architecture](https://www.giacomodebidda.com/posts/mvc-pattern-in-python-introduction-and-basicmodel/),\nwhich is widely used software architectural pattern in GUI-based applications.\n\nThis application among other things, contains these endpoints:\n- **API** (for interaction without UI) - [python-restx/flask-restx](https://github.com/python-restx/flask-restx),\n- **Prometheus metrics** (for observability) - [rycus86/prometheus_flask_exporter](https://github.com/rycus86/prometheus_flask_exporter),\n- **Health** (health of a application) - [ateliedocodigo/py-healthcheck](https://github.com/ateliedocodigo/py-healthcheck).\n\nLive demo of Guestbook application is deployed in\n[Fly.io](http://fly.io) 🚀, **`public comments Welcome`**!🤗:\n\n\u003cp align=\"center\"\u003e\n    \u003cb\u003ehttps://guestbook.jakuboskera.dev\u003c/b\u003e\n\u003c/p\u003e\n\n## 📖 TOC\n\n- [📖 TOC](#-toc)\n- [🏁 Get started](#-get-started)\n- [🛠 Used technologies](#-used-technologies)\n- [🎉 Run in docker using docker-compose](#-run-in-docker-using-docker-compose)\n    - [⚠️ Prerequisites](#️-prerequisites)\n    - [🚀 Install](#-install)\n    - [🧹 Cleanup](#-cleanup)\n- [🎉 Run in Kubernetes](#-run-in-kubernetes)\n    - [Using Helm](#using-helm)\n        - [⚠️ Prerequisites](#️-prerequisites-1)\n        - [🚀 Install](#-install-1)\n        - [🧹 Cleanup](#-cleanup-1)\n    - [Using skaffold and Helm](#using-skaffold-and-helm)\n        - [⚠️ Prerequisites](#️-prerequisites-2)\n        - [🚀 Install](#-install-2)\n        - [🧹 Cleanup](#-cleanup-2)\n\n## 🏁 Get started\n\n1. Clone this repo\n\n    ```bash\n    git clone git@github.com:jakuboskera/guestbook.git\n    ```\n\n1. Navigate to a folder `guestbook`\n\n    ```bash\n    cd guestbook\n    ```\n\n1. Issue `make` command to see available targets, which you can use\n\n    ```bash\n    make\n    ```\n\n## 🛠 Used technologies\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"docs/used_technologies.png\"\u003e\n\u003c/div\u003e\n\n## 🎉 Run in docker using docker-compose\n\n### ⚠️ Prerequisites\n- docker-compose\n\n### 🚀 Install\n\n```bash\nmake docker-run\n```\n\n### 🧹 Cleanup\n\n```bash\nmake docker-cleanup\n```\n\n## 🎉 Run in Kubernetes\n\nUsing Helm chart `guestbook` from Helm repository\n\u003chttps://jakuboskera.github.io/charts\u003e.\n\n### Using Helm\n#### ⚠️ Prerequisites\n- Kubernetes 1.12+\n- Helm 3.1.0+\n\n#### 🚀 Install\n\n```bash\nmake helm-install\n```\n#### 🧹 Cleanup\n\n```bash\nmake helm-cleanup\n```\n\n### Using skaffold and Helm\n\nIdeal for local Kubernetes development.\n\n#### ⚠️ Prerequisites\n- Kubernetes 1.12+\n- Helm 3.1.0+\n- skaffold\n\n#### 🚀 Install\n\nBuild, tag and deploy artifacts via Helm chart using skaffold.yaml\n\n```bash\nmake skaffold-run\n```\n\nBuild, tag and deploy artifacts via Helm chart using skaffold.yaml,\nmake port-forward to containers and write logs of containers to stdout\n\n```bash\nmake skaffold-dev\n```\n\n#### 🧹 Cleanup\n\n```bash\nmake skaffold-cleanup\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakuboskera%2Fguestbook","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjakuboskera%2Fguestbook","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakuboskera%2Fguestbook/lists"}