{"id":13453551,"url":"https://github.com/whitesmith/hawkpost","last_synced_at":"2025-03-24T01:31:39.068Z","repository":{"id":6341593,"uuid":"55302159","full_name":"whitesmith/hawkpost","owner":"whitesmith","description":"Generate links that users can use to submit messages encrypted with your public key.","archived":false,"fork":false,"pushed_at":"2024-10-28T04:36:50.000Z","size":5922,"stargazers_count":952,"open_issues_count":7,"forks_count":43,"subscribers_count":25,"default_branch":"master","last_synced_at":"2024-10-28T20:38:57.308Z","etag":null,"topics":["django","email","gpg-encryption","hacktoberfest","openpgp","openpgpjs","python","python3","security","webapp"],"latest_commit_sha":null,"homepage":"https://hawkpost.co","language":"Python","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/whitesmith.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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":"2016-04-02T15:38:13.000Z","updated_at":"2024-10-25T15:51:26.000Z","dependencies_parsed_at":"2024-01-06T01:06:01.401Z","dependency_job_id":"224ec046-a455-44f3-8925-cd67556ca40c","html_url":"https://github.com/whitesmith/hawkpost","commit_stats":{"total_commits":660,"total_committers":30,"mean_commits":22.0,"dds":0.65,"last_synced_commit":"1344dfc4905f14c7e6bc5f1782190789f3e80d92"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whitesmith%2Fhawkpost","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whitesmith%2Fhawkpost/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whitesmith%2Fhawkpost/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whitesmith%2Fhawkpost/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/whitesmith","download_url":"https://codeload.github.com/whitesmith/hawkpost/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245194254,"owners_count":20575729,"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":["django","email","gpg-encryption","hacktoberfest","openpgp","openpgpjs","python","python3","security","webapp"],"created_at":"2024-07-31T08:00:42.906Z","updated_at":"2025-03-24T01:31:37.104Z","avatar_url":"https://github.com/whitesmith.png","language":"Python","readme":"# Hawkpost\n\nHawkpost lets you create unique links that you can share with the person that desires to send you important information but doesn't know how to deal with PGP.\n\nYou can deploy your own server using the code from this repository or use the official server (that is running an exact copy of this repo) at [https://hawkpost.co](https://hawkpost.co).\n\n## NOTICE\n\n**Hawkpost is currently in maintenance mode. This means that bug fixes will be merged and vulnerabilities in the codebase and its dependencies will be patched; however, improvements and new features will not be handled or included.**\n\n**This status might change in the future, but for the moment it will stay as is.**\n\n## Rationale\n\nFor many web and mobile development studios, no matter how hard they try to secure their client secrets (passwords, API keys, etc), the weakest link resides on the client most of the times, specially when he's not a tech savvy person. This project tries to help minimize this issue on the communication between both parties.\n\nThe way it works is like this:\n\n1. It fetches your public key.\n1. When the box is open and the secrets submitted, all the content is encrypted on the client side.\n1. The server then signs (**experimental**) the encrypted content.\n1. Finally the server forwards it to your e-mail address.\n\n# Setting up a development environment\n\nIn this section you can find the steps to setup a minimal development environment on your machine.\n\nBase requirements:\n\n- Python 3\n- Redis\n- PostgreSQL\n\n## On Linux\n\nOn a **Debian** based operating system execute the following steps, after cloning the repository:\n\n- Make sure you have `pipenv` installed. You can check [this page for more information](https://pipenv.readthedocs.io/en/latest/install/#installing-pipenv)\n\n* Install the dependencies\n\n```\n$ pipenv install\n```\n\n- Create the local postgreSQL database with your user and no password\n\n- Migrate the database\n\n```\n$ pipenv run python manage.py migrate\n```\n\n- Generate stylesheet with gulp (installation instructions for gulp can be found [here](https://gulpjs.com/))\n\n```\n$ gulp build\n```\n\n- Now you should be able to launch the server and its workers\n\n```\n$ pipenv run python manage.py runserver\n$ pipenv run celery -A hawkpost worker --beat -l info\n```\n\nYou can avoid `pipenv run` in every command if you first active the virtual environment with `pipenv shell`.\n\n## Using Docker\n\nTo use this approach you need to have [Docker][docker-overview] and\n[Docker Compose][docker-compose-overview] installed.\nPlease note that since **this project uses version 2 of the\n[Compose file format][docker-compose-versioning]** you may need\nto update your Docker and Docker Compose to their latest versions.\n\nInstallation instructions for every platform are available at the\n[Docker Engine Documentation][docker-install-docs]. If you use Linux you'll\nhave to [install Docker Compose][docker-compose-install-docs] manually.\n\nAfter having the latest Docker and Docker Compose installed, **make the\nfolder** that will hold the **GPG public keys keyring**:\n\n```\n$ mkdir -p gpg_home\n```\n\nSome environment variables need to be set so the application works properly.\n**Copy** the provided **[.env.sample](.env.sample)** and name it **`.env`**:\n\n```\n$ cp .env.sample .env\n```\n\nSince this setup assumes containers talk to each other some of the variables\nneed to be set in order to point to the containers' names.\n\n**Edit `.env`** and set the following variables to these values:\n\n```\nDB_HOST=db\nDB_USER=hawkpost\nDB_PASSWORD=hawkpost\nREDIS_URL=redis://redis:6379/0\n```\n\n**Don't forget to set the remaining variables** as well.\n\nAfter setting `.env` correctly, just **run** (you may need to `sudo` depending\non your setup)\n\n```bash\n# Run the databases in detached mode to avoid seeing the logs\n$ docker-compose up -d db redis\n\n# Perform the migrations\n# (using `--rm` to remove the temporary container afterwards)\n$ docker-compose run --rm web pipenv run python manage.py migrate\n\n# Run the web and celery containers\n# (`docker-compose up` would log db and redis as well)\n$ docker-compose up web celery\n```\n\nThese commands\n\n1. **Run the `db` and the `redis` containers** detached from the console, so\n   we're not bothered by their logs while working on the application.\n1. **Perform the migrations** using a temporary `web` container; it is removed\n   afterwards.\n1. **Run the `web` and `celery`** attached to the\n   console.\n\nThe `web` container will reload on code changes.\n\nYou may access the application by **opening `http://\u003cdocker-network-ip\u003e` on\nyour browser**, which you can find by **running** (you may need to run this as\n`root` depending on your setup).\n\n```\nCID=$(docker ps | grep 'hawkpost_web' | cut -d ' ' -f 1)\ndocker inspect -f \"{{ .NetworkSettings.Networks.hawkpost_default.Gateway }}\" $CID\n```\n\nThis IP won't change unless you remove every container and the corresponding\nnetwork (manually), so you may alias it on your `/etc/hosts` (to something like\n`hawkpost.test`).\n\n**Note:** This approach was not tested on OS X or Windows platforms, so the\nnetwork feature may require additional steps.\n\n[docker-overview]: https://www.docker.com/products/docker-engine\n[docker-compose-overview]: https://www.docker.com/products/docker-compose\n[docker-compose-versioning]: https://docs.docker.com/compose/compose-file/#versioning\n[docker-install-docs]: https://docs.docker.com/engine/installation\n[docker-compose-install-docs]: https://github.com/docker/compose/releases\n\n# Running the test suite\n\nTo execute our current test suite, you just need to execute the following command after setting up your local development environment:\n\n\u003e \\$ pipenv run python manage.py test\n\nIn case you are using our docker setup the command should be:\n\n\u003e \\$ docker-compose run --rm web pipenv run python manage.py test\n\n# Credits\n\n![Whitesmith](http://i.imgur.com/Si2l3kd.png)\n\nThis project was born during an internal hackathon at [Whitesmith](https://whitesmith.co), which is helping and supporting the current development.\n","funding_links":[],"categories":["Python","\u003ca id=\"tag-communication\" href=\"#tag-communication\"\u003eCommunication\u003c/a\u003e","django"],"sub_categories":["Django"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwhitesmith%2Fhawkpost","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwhitesmith%2Fhawkpost","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwhitesmith%2Fhawkpost/lists"}