{"id":30310295,"url":"https://github.com/dinoscapeprogramming/sheetstash","last_synced_at":"2026-01-20T17:29:32.082Z","repository":{"id":304008983,"uuid":"1017542215","full_name":"DinoscapeProgramming/SheetStash","owner":"DinoscapeProgramming","description":"Lightweight JS SDK for syncing JSON data with Google Sheets as a backend.","archived":false,"fork":false,"pushed_at":"2025-07-14T16:01:32.000Z","size":14724,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-09T15:56:32.608Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DinoscapeProgramming.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}},"created_at":"2025-07-10T17:36:40.000Z","updated_at":"2025-07-14T16:01:35.000Z","dependencies_parsed_at":"2025-07-10T22:35:29.781Z","dependency_job_id":null,"html_url":"https://github.com/DinoscapeProgramming/SheetStash","commit_stats":null,"previous_names":["dinoscapeprogramming/sheetstash"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/DinoscapeProgramming/SheetStash","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DinoscapeProgramming%2FSheetStash","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DinoscapeProgramming%2FSheetStash/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DinoscapeProgramming%2FSheetStash/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DinoscapeProgramming%2FSheetStash/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DinoscapeProgramming","download_url":"https://codeload.github.com/DinoscapeProgramming/SheetStash/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DinoscapeProgramming%2FSheetStash/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270856775,"owners_count":24657700,"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","status":"online","status_checked_at":"2025-08-17T02:00:09.016Z","response_time":129,"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":[],"created_at":"2025-08-17T14:10:09.871Z","updated_at":"2026-01-20T17:29:32.042Z","avatar_url":"https://github.com/DinoscapeProgramming.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SheetStash 🗂️✨\r\n\r\n**SheetStash** is a simple and powerful SDK for managing and syncing baskets of JSON data using Google Sheets as a backend. It provides easy access to baskets, automatic synchronization with your Google Sheet, and allows developers to manage data in a clean and intuitive way - all without any server costs. 🚀\r\n\r\n## Installation 📦\r\n\r\nTo install **SheetStash**, use npm:\r\n\r\n```bash\r\nnpm install sheetstash\r\n```\r\n\r\n## Usage 🛠️\r\n\r\n### Initialize SheetStash SDK ⚙️\r\n\r\n```javascript\r\nconst SheetStash = require(\"sheetstash\");\r\nconst auth = require(\"./auth\"); // Your Google API auth setup\r\n\r\nconst pantry = new SheetStash(\"your-google-sheet-id\", auth); // Initialize with Google Sheet ID\r\n```\r\n\r\n### Access and Modify a Basket 🧺\r\n\r\n```javascript\r\n// Access a basket (e.g., \"store\")\r\nasync function useBasket() {\r\n  const store = await pantry.store; // Access the basket named \"store\"\r\n\r\n  // Modify the basket (this will automatically trigger an update to Google Sheets)\r\n  store.someKey = \"newValue\"; // Automatically triggers an update to the Sheet! 🔄\r\n\r\n  console.log(store); // Output the store data 📋\r\n\r\n  // Access another basket (e.g., \"cart\")\r\n  const cart = await pantry.cart; // Dynamically fetch the basket named \"cart\"\r\n  console.log(cart);\r\n};\r\n\r\nuseBasket().catch(console.error);\r\n```\r\n\r\n### Disable Caching 🫸\r\n\r\n```js\r\nprocess.env.SHEETSTASH_CHACHING = \"0\";\r\n```\r\n\r\nDisables in-memory caching so every basket fetch hits the backing Google Sheet. Useful for development or when real-time accuracy is more important than speed.\r\n\r\n## Features ✨\r\n\r\n* **Auto-sync** 🔄: When you modify basket data, it automatically syncs with your Google Sheet.\r\n* **Lazy Loading** ⏳: Baskets are fetched and initialized only when accessed for the first time.\r\n* **Dynamic Basket Access** 🧺: Access baskets directly using `pantry.store`, `pantry.cart`, etc., without explicit function calls.\r\n* **No server or backend costs** 💸: Uses Google Sheets as a free, cloud-hosted JSON store.\r\n\r\n## License 📄\r\n\r\nApache License 2.0. See LICENSE file for details.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdinoscapeprogramming%2Fsheetstash","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdinoscapeprogramming%2Fsheetstash","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdinoscapeprogramming%2Fsheetstash/lists"}