{"id":17974120,"url":"https://github.com/kyleterry/jot","last_synced_at":"2025-03-25T14:32:01.687Z","repository":{"id":136937381,"uuid":"139220637","full_name":"kyleterry/jot","owner":"kyleterry","description":"Simple editable pastebin","archived":false,"fork":false,"pushed_at":"2024-06-09T22:01:01.000Z","size":1529,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-20T12:07:35.488Z","etag":null,"topics":["editable","golang","http","pastebin","pastebin-service"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kyleterry.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2018-06-30T05:01:38.000Z","updated_at":"2022-10-23T11:51:53.000Z","dependencies_parsed_at":"2024-06-19T06:37:51.493Z","dependency_job_id":"93051273-5b35-4227-a032-1fecb86bf484","html_url":"https://github.com/kyleterry/jot","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kyleterry%2Fjot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kyleterry%2Fjot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kyleterry%2Fjot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kyleterry%2Fjot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kyleterry","download_url":"https://codeload.github.com/kyleterry/jot/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245480504,"owners_count":20622326,"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":["editable","golang","http","pastebin","pastebin-service"],"created_at":"2024-10-29T17:06:42.928Z","updated_at":"2025-03-25T14:32:01.671Z","avatar_url":"https://github.com/kyleterry.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"Jot\n===\n\nJot is a simple and editable pastebin that's super easy to host yourself. It\ndoesn't require installation of large dependencies and everything runs from a\nsingle binary. Outside a data dir and encryption seed file for password\ngeneration, you don't need a programming language installed or assets anywhere\non your server.\n\n## Features\n\nThe Jot feature set is very simple. The server exposes a very limited set of\nCRUD operations defined below:\n\n- `POST` content and get back a unique URL (`JOT_URL`) and a Jot-Password header\n- `GET` to `JOT_URL` and you get back the content and an ETag header with the last\n  modified date set.\n- `GET` to `JOT_URL` with `If-None-Match` header set and you will get a 304 Not\n  Modified status code back with no content, if the last modified date matches\n  the value sent in that header. Useful for client caching. Browsers support\n  this out of the box.\n- `PUT` to `JOT_URL` with `?password=\u003cJot-Password value\u003e` and you can update that\n  content.\n- `PUT` supports `If-Match` header allowing you to bail if the content has been\n  updated since the last modified date returned with a `GET`.\n- `DELETE` to `JOT_URL` with `?password=\u003cJot-Password value\u003e` and you will delete\n  the jot.\n\n## Endpoints\n\n`GET /`: help text\n\n`POST /txt`: create a text jot\n\n`GET /txt/\u003cid\u003e`: get a text jot\n\n`PUT /txt/\u003cid\u003e?password=\u003cpassword\u003e`: edit a text jot\n\n`DELETE /txt/\u003cid\u003e?password=\u003cpassword\u003e`: delete a text jot\n\n`POST /img`: upload an image\n\n`GET /img/\u003cid\u003e`: get an image\n\n`DELETE /img/\u003cid\u003e?password=\u003cpassword\u003e`: delete an image\n\n## Building and Running\n\nRequires: Go \u003e=1.14\n\nRunning from localhost is simple. Below describes the minimal effort that goes\ninto running Jot:\n\n```\n# setup the source code dir\nexport JOT_HOME=\"${HOME}/code/jot\"\nmkdir -p \"${JOT_HOME}\"\ngit clone https://github.com/kyleterry/jot \"${JOT_HOME}\"\n\n# these two are for config and data storage\nmkdir -p \"${HOME}/.config/jot\"\nmkdir -p \"${HOME}/.local/share/jot\"\n\n# export the configuration for the jot proc\nexport JOT_MASTER_PASSWORD=\"please change this, this is your master password (also don't lose it)\"\nexport JOT_SEED_FILE=\"${HOME}/.config/jot/seed\"\nexport JOT_DATA_DIR=\"${HOME}/.local/share/jot\"\n\ncd \"${JOT_HOME}\"\n\n# generate the seed file encrypted with the master password\ngo install github.com/cloudflare/gokey/cmd/gokey \ngokey -p \"${JOT_MASTER_PASSWORD}\" -t seed -o \"${JOT_SEED_FILE}\"\n\n# build and run jot\ngo build ./cmd/jot\n\n./jot\n\ncurl http://localhost:8095\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkyleterry%2Fjot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkyleterry%2Fjot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkyleterry%2Fjot/lists"}