{"id":15540269,"url":"https://github.com/rm-hull/scratchpad","last_synced_at":"2026-01-18T18:06:34.460Z","repository":{"id":63829289,"uuid":"571030193","full_name":"rm-hull/scratchpad","owner":"rm-hull","description":null,"archived":false,"fork":false,"pushed_at":"2024-10-02T16:11:14.000Z","size":4963,"stargazers_count":1,"open_issues_count":5,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-10-03T12:17:26.317Z","etag":null,"topics":["react","scratchpad","typescript"],"latest_commit_sha":null,"homepage":"https://www.destructuring-bind.org/scratchpad/","language":"TypeScript","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/rm-hull.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":"2022-11-26T23:22:12.000Z","updated_at":"2024-09-21T17:20:23.000Z","dependencies_parsed_at":"2024-03-02T16:31:49.375Z","dependency_job_id":"577b6385-08c3-4fd0-9707-e4699c75bb87","html_url":"https://github.com/rm-hull/scratchpad","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rm-hull%2Fscratchpad","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rm-hull%2Fscratchpad/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rm-hull%2Fscratchpad/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rm-hull%2Fscratchpad/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rm-hull","download_url":"https://codeload.github.com/rm-hull/scratchpad/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238585196,"owners_count":19496435,"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":["react","scratchpad","typescript"],"created_at":"2024-10-02T12:13:24.234Z","updated_at":"2025-10-28T03:30:15.574Z","avatar_url":"https://github.com/rm-hull.png","language":"TypeScript","readme":"# Scratchpad\n\nScratchpad is a small web app that allows you to store snippets \u0026 miscellaneous notes as \"blocks\" in your browser's\nlocal storage. They never leave your machine (unless you want to sync them to your Google Drive). Many file formats\nare supported, and it will do syntax coloring and pretty-print formatting (especially useful for JSON).\n\n![main](./doc/screenshots/main.webp)\n\n[Math.JS](https://mathjs.org/docs/index.html) is integrated as a file type, giving a capable calculator functionality\nwith currency conversion (FX rates provided by an ECB API).\n\nEach block has a toolbar of options, and you can right-click to get a context menu allowing you to alter settings\nand sync to Google.\n\n### Keyboard shortcuts\n\nOn MacOS,\n\n\u0026nbsp;\u0026nbsp;\u003ckbd\u003e⌘\u003c/kbd\u003e \u003ckbd\u003e/\u003c/kbd\u003e - Search\n\n\u0026nbsp;\u0026nbsp;\u003ckbd\u003e⌘\u003c/kbd\u003e \u003ckbd\u003eENTER\u003c/kbd\u003e - Add new block\n\n\u0026nbsp;\u0026nbsp;\u003ckbd\u003e⌘\u003c/kbd\u003e \u003ckbd\u003e.\u003c/kbd\u003e - Base64-decode selected text\n\nFor Windows/Linux, use \u003ckbd\u003eCTRL\u003c/kbd\u003e rather than \u003ckbd\u003e⌘\u003c/kbd\u003e.\n\nGo to https://www.destructuring-bind.org/scratchpad to see it in action.\n\n### Namespaces\n\nThe \"default\" namespace is hosted at https://www.destructuring-bind.org/scratchpad, but you can add anything after \nthe main URL to organise scratchpad blocks into separate namespaces, so you could have the following URLs, all which\nare isolated (both the blocks, their own settings configuration and Google Drive synchronisation):\n\n  * https://www.destructuring-bind.org/scratchpad/diary/2024\n  * https://www.destructuring-bind.org/scratchpad/recipies\n  * https://www.destructuring-bind.org/scratchpad/work-stuff\n\nThere is no practical limit to the number of namespaces, however note that:\n  \n  * non-alphabetical characters are treated the same so https://www.destructuring-bind.org/scratchpad/diary/2024 and\n    https://www.destructuring-bind.org/scratchpad/diary-2024 resolve to the same namespace.\n  * namespaces are case-insensitive, so  https://www.destructuring-bind.org/scratchpad/recipies and\n    https://www.destructuring-bind.org/scratchpad/Recipies would resolve the the same namespace.\n\n## Running locally\n\nYou must have Node 20 and Yarn installed. To begin:\n\n```console\nyarn install\nyarn dev\n```\n\nIf you want to test Sync behaviour, you will need to create a project in [Google Developer Console](https://console.cloud.google.com/apis/credentials)\nand create an OAuth 2.0 Client ID. Stop the server, and restart with:\n\n```console\nexport VITE_GOOGLE_API_CLIENT_ID=\u003cyour-google-api-client-id\u003e\nyarn dev\n```\n\nThis is not mandatory however, and if omitted, the sync capability will be marked as disabled in the context menu.\n\n## License\n\n### MIT License\n\nCopyright (c) 2023 Richard Hull\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frm-hull%2Fscratchpad","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frm-hull%2Fscratchpad","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frm-hull%2Fscratchpad/lists"}