<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Sheetson]]></title><description><![CDATA[Sheetson]]></description><link>https://blog.sheetson.com</link><generator>RSS for Node</generator><lastBuildDate>Tue, 19 May 2026 00:31:15 GMT</lastBuildDate><atom:link href="https://blog.sheetson.com/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Improved Security and Performance with Read-only API Key and Cache]]></title><description><![CDATA[We are proud to announce that the most useful features have been released today: Read-only API Key and Cache. These updates make Sheetson API more secure and much faster than previous version.
Read-only Key
With this new feature, you can now safely e...]]></description><link>https://blog.sheetson.com/improved-security-and-performance-with-read-only-api-key-and-cache</link><guid isPermaLink="true">https://blog.sheetson.com/improved-security-and-performance-with-read-only-api-key-and-cache</guid><dc:creator><![CDATA[ralphilius]]></dc:creator><pubDate>Sun, 06 Sep 2020 17:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1711358293114/7cb14dd8-8597-4e2e-a0ae-9a6c7735ae7f.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We are proud to announce that the most useful features have been released today: <strong>Read-only API Key</strong> and <strong>Cache</strong>. These updates make Sheetson API more secure and much faster than previous version.</p>
<h2 id="heading-read-only-key">Read-only Key</h2>
<p>With this new feature, you can now safely expose your API key within your source code with no worry about data manipulation by unauthorized persons. It is now generally available for free and paid plans.</p>
<p>You will now see a new <strong>API Key (Read-only)</strong> option in the console which is blank by default. You will need to click on <strong>Generate</strong> icon to enable it.</p>
<p><img src="https://sheetson.vercel.app/blog/assets/blog/read-only-api-key.png" alt="API Key (Read-only)" /></p>
<p>Only GET requests using this API Key will return data. All other methods would receive a <code>405 Not Allowed</code> error code.</p>
<h2 id="heading-faster-response">Faster Response</h2>
<p>In order to enhance API speed, we have implement caching which lasts for 8 hours for all GET requests. When the request returned for the first time we store its results in cache to serve subsequent requests. With this behavior the execution time is <strong>2x-10x faster</strong> which is around 400~700ms for cached responses.</p>
<p>When making changes to the sheet's data by <code>POST/PATCH/DELETE</code> operations, we invalidate the cache and the next GET request would serve directly from Sheets API.</p>
<p>Currently, there's no way to invalidate cache when you update via the Google Sheets UI yet. A new update would address this issue automatically. To always get the latest data from the API, you can also pass <code>no-cache=true</code> parameter in the URL.</p>
<h2 id="heading-feedback">Feedback</h2>
<p>We would love to hear your thought on new ideas. Please ping us at Twitter here <a target="_blank" href="https://twitter.com/sheetson">@sheetson</a></p>
]]></content:encoded></item><item><title><![CDATA[Story of Sheetson: Free APIs from any Google Sheets]]></title><description><![CDATA[Start of a journey
A few years ago, I was an indie developer working on some Android side projects using Parse as back-end without any hassle, thanks to their comprehensive SDKs and generous free plan. Suddenly, they got acquired by Facebook then dec...]]></description><link>https://blog.sheetson.com/our-story-sheets-database</link><guid isPermaLink="true">https://blog.sheetson.com/our-story-sheets-database</guid><dc:creator><![CDATA[ralphilius]]></dc:creator><pubDate>Sun, 02 Aug 2020 17:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1711354805590/d318f067-f593-40cf-93ed-f7d85f3a2bcc.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-start-of-a-journey"><strong>Start of a journey</strong></h2>
<p>A few years ago, I was an indie developer working on some Android side projects using Parse as back-end without any hassle, thanks to their comprehensive SDKs and generous free plan. Suddenly, they got acquired by Facebook then decided to shut down the service gradually.</p>
<p>Lucky for me at that time they released open source version as Parse Server. It was a great project since it replicated as many features Parse provided. I then looked around for some providers to host my projects, but the found results were so costly for small apps. I then realized why should I not use Google Sheets as the database instead. Again, some Google searches resulted in a very costly products for a simple use case.</p>
<p>So the journey began when I decided to roll my sleeves.</p>
<blockquote>
<p><strong><em>Note: Although it's not practical to have a Google Sheets as database for medium-large applications, it's still acceptable for my use case when most of my projects are read-heavy.</em></strong></p>
</blockquote>
<h2 id="heading-first-version-spreadsheets-as-a-database"><strong>First Version - Spreadsheets as a Database</strong></h2>
<p>I went through Google Sheets API and started to leverage its offering into an MVP. The project was like a proxy between end-users and Google's APIs. The principle was that it should be super easy but secure to turn any Google Sheets into a working API, compared to other solutions that require users to share the sheets publicly ⚠️!</p>
<p>After a few months of coding, the first version of Sheetson was almost finished. It based on REST architecture style in which each sheet in a spreadsheet is a database table and its columns are database fields. The workflow to get it ready is dead simple:</p>
<ol>
<li><p>Share a Google Sheets with <code>google@sheetson.com</code></p>
</li>
<li><p>Consume the API straight away using spreadsheet ID as the API key.</p>
</li>
</ol>
<p><img src="https://docs.sheetson.com/static/sheetson_preparation_01_docked.png" alt="Simple Google Sheets setup" /></p>
<p>Regarding the name, it was inspired by JSON the output format of the APIs and Google Sheets. The final name became SheetSON.</p>
<h2 id="heading-sheetson-20-free-and-unlimited"><strong>Sheetson 2.0 - Free and Unlimited</strong></h2>
<p>After launching Sheetson on Product Hunt, it was supported by the community and awarded #5 product of the day. Nothing can be free in this world, since I need to cover the cost for hosting on my server, so I intended to start charging free users a small dime. <s>Until I discover Vercel (formerly Now) who offer super generous Free plan with unlimited requests.</s> I know this time I should do something to the community, so with Sheetson 2.0 <strong>everything offered via Google Sheets API should be FREE and unlimited</strong>.</p>
<ul>
<li><p>Unlimited spreadsheets</p>
</li>
<li><p><s>Unlimited</s> 1,000 rows</p>
</li>
<li><p>Unlimited requests</p>
</li>
<li><p>Zero cost</p>
</li>
</ul>
<p>With that being set, I started thinking about advanced scenarios that enhance usage of spreadsheets as database.</p>
<p>If you need any help, feel free to reach out to me at <a target="_blank" href="mailto:ralph@sheetson.com"><strong>ralph@sheetson.com</strong></a></p>
]]></content:encoded></item></channel></rss>