{"id":48294765,"url":"https://github.com/joshterrill/hushnote","last_synced_at":"2026-04-04T23:30:20.673Z","repository":{"id":41400596,"uuid":"99087663","full_name":"joshterrill/hushnote","owner":"joshterrill","description":":speak_no_evil: a privnote-like service with a REST API that lets you send one-time-use messages via unique url's","archived":false,"fork":false,"pushed_at":"2023-07-06T14:17:03.000Z","size":423,"stargazers_count":26,"open_issues_count":2,"forks_count":9,"subscribers_count":4,"default_branch":"master","last_synced_at":"2023-08-02T23:23:16.268Z","etag":null,"topics":["encryption","pgp","privacy"],"latest_commit_sha":null,"homepage":"https://hush.dangerous.dev","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/joshterrill.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":"2017-08-02T07:43:36.000Z","updated_at":"2023-08-02T23:23:16.269Z","dependencies_parsed_at":"2023-02-08T16:31:30.787Z","dependency_job_id":null,"html_url":"https://github.com/joshterrill/hushnote","commit_stats":null,"previous_names":[],"tags_count":2,"template":null,"template_full_name":null,"purl":"pkg:github/joshterrill/hushnote","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshterrill%2Fhushnote","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshterrill%2Fhushnote/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshterrill%2Fhushnote/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshterrill%2Fhushnote/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/joshterrill","download_url":"https://codeload.github.com/joshterrill/hushnote/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshterrill%2Fhushnote/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31419096,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T20:09:54.854Z","status":"ssl_error","status_checked_at":"2026-04-04T20:09:44.350Z","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":["encryption","pgp","privacy"],"created_at":"2026-04-04T23:30:18.054Z","updated_at":"2026-04-04T23:30:20.643Z","avatar_url":"https://github.com/joshterrill.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hushnote\n\nA small privnote-like application written in Node/Express on the server and vanilla javascript on the client. It allows you to send *client-side encrypted* one-time-use messages to someone via unique URL's that are generated on the server - once someone views the note, it is decrypted on the *client*, then destroyed.\n\n\u003cins\u003e*If you wish to take advantage of the client-side encryption/decryption, feel free to use the web UI hosted at: https://hush.dangerous.dev - if you want to implement the API in your own applications, endpoints prefixed with /api are still sever-side encrypted.*\u003c/ins\u003e\n\nThere is also a public API that you can use if you would like to integrate it into your own applications.\n\nPublic URL: https://hush.dangerous.dev\n\n## API Endpoints\n\n### POST `/api/create/`\n\n```\nHeaders: Content/Type = application/json\nBody: {\"note\": \"this is a test message\"}\n------------------------------------------\nSuccess Response:\n{\n  \"url\": \"https://hush.dangerous.dev/api/read/40312d32/160586e0\",\n  \"error\": null\n}\n```\n\n### GET `/api/read/:key/:pass`\n\n```\nSuccess Response:\n{\n  \"note\": \"this is a test message\",\n  \"message\": \"Note has been destroyed.\"\n}\n\nNote Not Found Response:\n{\n  \"note\": null,\n  \"message\": \"Could not find note, perhaps it has already been destroyed?\"\n}\n\nIncorrect Pass Response:\n{\n  \"note\": null,\n  \"message\": \"Incorrect URL parameters. Note has been destroyed.\"\n}\n```\n\n## Spinning up your own instance\n\n1. Check out the project by cloning it `git clone https://github.com/joshterrill/hushnote` and then `cd hushnote/`\n\n2. Install dependencies by typing `npm install`\n\n3. Create an `.env` file from a copy of `.env.example` by running `cp .env.example .env`\n\n4. Add your mongodb connection string and other required variables to the `.env` file. If you wish to have a clean-up job delete any stale notes after a certain amount of days, flip the `.env` variable `DELETE_STALE_MESSSAGES` to `true` and define the `DELETE_STALE_MESSAGES_DAYS` variable top equal how many days you want to keep on hand at any given time. If this is set to true, the home page will have some text on it that shows when stale messages will be deleted.\n\n5. Type `npm start` to run\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoshterrill%2Fhushnote","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoshterrill%2Fhushnote","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoshterrill%2Fhushnote/lists"}