{"id":50558902,"url":"https://github.com/jerryryle/simple-guestbook","last_synced_at":"2026-06-04T10:02:02.688Z","repository":{"id":362372518,"uuid":"616170098","full_name":"jerryryle/simple-guestbook","owner":"jerryryle","description":"A very simple Python/Flask guestbook example intended to act as a starting point for a friend's project.","archived":false,"fork":false,"pushed_at":"2023-03-23T21:27:14.000Z","size":20,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-04T00:04:40.625Z","etag":null,"topics":["flask","gunicorn","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jerryryle.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-03-19T20:02:55.000Z","updated_at":"2023-03-22T18:29:33.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/jerryryle/simple-guestbook","commit_stats":null,"previous_names":["jerryryle/simple-guestbook"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/jerryryle/simple-guestbook","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jerryryle%2Fsimple-guestbook","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jerryryle%2Fsimple-guestbook/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jerryryle%2Fsimple-guestbook/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jerryryle%2Fsimple-guestbook/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jerryryle","download_url":"https://codeload.github.com/jerryryle/simple-guestbook/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jerryryle%2Fsimple-guestbook/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33899697,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-04T02:00:06.755Z","response_time":64,"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":["flask","gunicorn","python"],"created_at":"2026-06-04T10:02:01.834Z","updated_at":"2026-06-04T10:02:02.676Z","avatar_url":"https://github.com/jerryryle.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# simple-guestbook\n\nA very simple Python/Flask guestbook example intended to work with\nmy [Rogue Portal](https://github.com/jerryryle/rogueportal) and act as a starting point for a friend's project.\n\n## Rogue Portal Deployment Instructions\n\n1. Prepare a Raspberry Pi SD card per\n   the [Rogue Portal instructions](https://jerryryle.github.io/rogueportal/#create-a-raspberry-pi-os-sd-card), but don't\n   deploy the rogue portal yet.\n2. Install prerequisites.\n    * `sudo apt install nginx python3-pip git`\n3. Install pipenv, which will make working with virtual environments easier.\n    * `sudo pip3 install pipenv`\n4. Clone this repository (or, preferably, your own fork of it) to the \"/var/www/simple-guestbook\" folder.\n    * `sudo git clone https://github.com/jerryryle/simple-guestbook.git /var/www/simple-guestbook`\n5. Change the user/group permissions on the folder so that you don't need to sudo to modify it and so the web services\n   can access it.\n    * `sudo chown -R $USER:www-data /var/www/simple-guestbook`\n6. Switch to the folder.\n    * `cd /var/www/simple-guestbook`\n7. Create and activate a Python virtual environment to contain our application and its dependencies.\n    * `mkdir .venv \u0026\u0026 pipenv shell`\n8. Install the needed dependencies into the virtual environment.\n    * `pipenv install`\n9. Exit the virtual environment.\n    * `exit`\n10. Create a writable location for the guestbook log file.\n    * `sudo mkdir /var/log/guestbook \u0026\u0026 sudo chown $USER:www-data /var/log/guestbook \u0026\u0026 sudo chmod g+w /var/log/guestbook`\n11. Link the systemd service config file into the systemd config folder. This file automatically starts the gunicorn\n    service to run our Python app on startup.\n    * `sudo ln -s /var/www/simple-guestbook/cfg/guestbook.service /etc/systemd/system/guestbook.service`\n12. Start the systemd guestbook gunicorn service.\n    * `sudo systemctl enable guestbook`\n13. Deploy the Rogue Portal packages\n    per [the documentation](https://jerryryle.github.io/rogueportal/#deploy-the-pre-built-debian-packages), but don't\n    reboot yet.\n14. Activate the guestbook site.\n    * `sudo ln -s /var/www/simple-guestbook/cfg/guestbook.rogueportal /etc/nginx/sites-enabled/guestbook`\n15. Deactivate the default Rogue Portal content site.\n    * `sudo rm -f /etc/nginx/sites-enabled/roguecontent`\n16. Reboot.\n    * `sudo reboot`\n\nYou should now be able to access the guestbook at your computer's IP address. Don't for get to test signing the\nguestbook to ensure that the file permissions on the guestbook file are correct.\n\n## Viewing the guestbook\n\nAssuming you did not edit the configuration files to change the guestbook's location, then you can view it with the\nfollowing command:\n`cat /var/log/guestbook/guestbook.txt`\n\n## Editing the website after deployment\n\nOnce deployed per the above instructions, the HTML files for the guestbook website are located here:\n\n`/var/www/simple-guestbook/simple_guestbook/templates`\n\nStatic resources such as CSS and images are here:\n\n`/var/www/simple-guestbook/simple_guestbook/static`\n\nYou can edit/add/remove files in place; however, to see your changes, you will need to restart the guestbook gunicorn\nservice:\n\n`sudo systemctl restart guestbook`\n\nIf you're doing a lot of active development on the website, this might get tedious. A faster approach is to switch the\nservice into debug mode, which will automatically detect changes to the application and reload it. To do this,\nedit `/var/www/simple-guestbook/wsgi.py` and change `app.run(debug=False)` to `app.run(debug=True)`. Save the file and\nrun `sudo systemctl restart guestbook`. After this, your changes to HTML/CSS and even Python should automatically apply.\nBe sure to turn off debug mode before using your app in a production environment.  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjerryryle%2Fsimple-guestbook","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjerryryle%2Fsimple-guestbook","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjerryryle%2Fsimple-guestbook/lists"}