<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Tomer Shalev</title>
    <description>The latest articles on Forem by Tomer Shalev (@hendrixstring).</description>
    <link>https://forem.com/hendrixstring</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1123321%2Fd738e19c-d2c0-4c73-b86d-0cc6492ab40c.jpeg</url>
      <title>Forem: Tomer Shalev</title>
      <link>https://forem.com/hendrixstring</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/hendrixstring"/>
    <language>en</language>
    <item>
      <title>shelf-cms.io commerce 💖 Firebase</title>
      <dc:creator>Tomer Shalev</dc:creator>
      <pubDate>Thu, 20 Jul 2023 11:50:40 +0000</pubDate>
      <link>https://forem.com/hendrixstring/shelf-cmsio-commerce-firebase-lil</link>
      <guid>https://forem.com/hendrixstring/shelf-cmsio-commerce-firebase-lil</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft0zm9yzq0b5z3ztk4vgl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft0zm9yzq0b5z3ztk4vgl.png" alt="Shelf logo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Promise
&lt;/h2&gt;

&lt;p&gt;What if I told you, that you can transform your firebase project into a headless commerce cms for your online store or application ?&lt;/p&gt;

&lt;h2&gt;
  
  
  Meet &lt;a href="https://shelf-cms.io" rel="noopener noreferrer"&gt;shelf-cms.io&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;shelf turns your firebase resources into a headless commerce platform.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foe0k7mhxtizvsw7vgynl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foe0k7mhxtizvsw7vgynl.png" alt="shelf screenshot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmn06zdx3egcbeeb5lgoe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmn06zdx3egcbeeb5lgoe.png" alt="shelf screenshot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;shelf is a &lt;strong&gt;CMS&lt;/strong&gt; (Content Management System) essentially. Out of the box, it does this while utilizing the following resources, that are available to you&lt;/p&gt;

&lt;h2&gt;
  
  
  Firestore Database
&lt;/h2&gt;

&lt;p&gt;Firestore is the leading no-SQL database offering by Google. Some of it's benefits&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Very generous free tier&lt;/li&gt;
&lt;li&gt;pay as you go pricing above the free tier&lt;/li&gt;
&lt;li&gt;Infinitely scalable as opposed to other common databases&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;shelf&lt;/code&gt; manages your firestore to create the a fully functional commerce platform. It does so by managing the following collections:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/products&lt;/code&gt; collection to store product information&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/collections&lt;/code&gt; collection to store collections information&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/storefronts&lt;/code&gt; collection to manage storefront data&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/tags&lt;/code&gt; collection to manage laconic key value tags (helpful for filtering)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/users&lt;/code&gt; collection to manage users&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/discounts&lt;/code&gt; collection to manage automatic and manual(coupons) discounts&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/orders&lt;/code&gt; collection to manage orders with states and line items&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/shipping_methods&lt;/code&gt; collection to manage shipping methods&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/images&lt;/code&gt; collection to manage images&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/payment_gateways&lt;/code&gt; collection to manage configurations of payment gateways&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/posts&lt;/code&gt; collection to manage rich media&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/notifications&lt;/code&gt; collection to manage admin notifications&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/settings&lt;/code&gt; collection to manage admin notifications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once, &lt;code&gt;shelf&lt;/code&gt; manages these collections for your project, you can use them in your app however you want at client side and backend side. But, we made things simpler for you, we developed an optional client side &lt;strong&gt;SDK&lt;/strong&gt; and a sample backend to enable payments and checkouts from a website as well as emails.&lt;/p&gt;

&lt;h2&gt;
  
  
  Storage
&lt;/h2&gt;

&lt;p&gt;Object Storage is a classic serverless object storage, where you can store images, files, jsons and any type of blob you can think of. &lt;code&gt;shelf&lt;/code&gt; leverages storage services&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;To store images you upload and edit in the products page&lt;/li&gt;
&lt;li&gt;Save compressed exported collections with embedded products&lt;/li&gt;
&lt;li&gt;Save compressed exported storefronts&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We support the following object storage services&lt;/p&gt;

&lt;h3&gt;
  
  
  Cloudflare R2 storage
&lt;/h3&gt;

&lt;p&gt;yes, we support it&lt;/p&gt;

&lt;h3&gt;
  
  
  Amazon S3
&lt;/h3&gt;

&lt;p&gt;yes, we support it&lt;/p&gt;

&lt;h3&gt;
  
  
  Any S3 compatible service
&lt;/h3&gt;

&lt;p&gt;such as minIO&lt;/p&gt;

&lt;h3&gt;
  
  
  Firebase Google Storage
&lt;/h3&gt;

&lt;p&gt;Of course, we also support Google storage&lt;/p&gt;

&lt;h2&gt;
  
  
  Firebase Authentication (identity)
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;shelf&lt;/code&gt; uses firebase authorization to distinguish you as part of the admin users, that's it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Firebase Functions
&lt;/h2&gt;

&lt;p&gt;firebase functions is Google's leading serverless functions offering. &lt;code&gt;shelf&lt;/code&gt; does not require functions, but we recommend using them for the following use cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Integrating payment &lt;strong&gt;API&lt;/strong&gt; such as &lt;code&gt;PayPal standard checkout&lt;/code&gt; or &lt;code&gt;stripe&lt;/code&gt; at your website&lt;/li&gt;
&lt;li&gt;Sending Emails for events when a user onboards or when an order was confirmed or shipped.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Luckily, we have open sourced our very small and effective backend, that you can deploy in few clicks, and the best part, you can customize it to your own needs.&lt;/p&gt;

&lt;h1&gt;
  
  
  Why use SHELF
&lt;/h1&gt;

&lt;p&gt;There are a few reasons why we created this platform, let's discuss it&lt;/p&gt;

&lt;h3&gt;
  
  
  Scalability
&lt;/h3&gt;

&lt;p&gt;All of &lt;strong&gt;Firebase's&lt;/strong&gt; products are scalable, infinitely or so scalable. As opposed, to the old paradigm were one would have to rent a single server, install a database on it and cross his fingers, that traffic will not overwhelm the server and the database.&lt;/p&gt;

&lt;p&gt;So, amazingly enough, we are in the era of scalability, a thing that is hard to achieve with classic WordPress sites.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cost
&lt;/h3&gt;

&lt;p&gt;You really cannot get something better. Firebase has an amazing free tier and a pay as you go (usage based) price one you surpass it. &lt;code&gt;shelf&lt;/code&gt; was born to take advantage of this cost effectiveness.&lt;/p&gt;

&lt;p&gt;You can operate a small store without ever surpassing the free tier of firebase.&lt;/p&gt;

&lt;h3&gt;
  
  
  Headless
&lt;/h3&gt;

&lt;p&gt;Headless Commerce systems are the present and future. By decoupling the presentation layer, i.e front-end from your business logic, you enable a lot of things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;Scalability&lt;/code&gt; - No longer does your backend system determines the vast performance of your frontend&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Originality&lt;/code&gt; - No more do you have to deal with pre-made templates. Now you can craft your own original websites and
unique experiences to delight your customers.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Omnichannels&lt;/code&gt; - Your backend can serve both mobile, web, desktop and IoT users&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Customizable
&lt;/h3&gt;

&lt;p&gt;You can customize and craft your own commerce behaviours at the backend. &lt;code&gt;shelf&lt;/code&gt; is aware to some parts of your backend (should you choose to use one).&lt;/p&gt;

&lt;h3&gt;
  
  
  Speed
&lt;/h3&gt;

&lt;p&gt;A lot of commerce systems have the notion of a payment gateway, for example, where they try to capture all possible features of some payment API such as &lt;code&gt;stripe&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;In reality, users only need to use one branch of these features, costing them in speed and bugs. We provide you a solid backbone, that you can take shape the features you need.&lt;/p&gt;

&lt;p&gt;Our &lt;code&gt;PayPal&lt;/code&gt; integration is just a single file, easy to understand and change for your own needs, if changes are needed.&lt;/p&gt;

&lt;p&gt;We do not maintain a plugin with 1000 issues at github covering all possible payment scenarios, it is an overkill. We instead, use minimalism as a guide to use only what we require.&lt;/p&gt;

&lt;h3&gt;
  
  
  Versatility
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;You can use &lt;code&gt;shelf&lt;/code&gt; to run your offline business, just to manage your inventory, customers and orders.&lt;/li&gt;
&lt;li&gt;You can get started in minutes with &lt;code&gt;shelf&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Toolings
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;shelf&lt;/code&gt; platform comes with some delights to make it easy to use at client and backend side.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;shelf-client-js-sdk&lt;/code&gt; - a very simple client side js sdk, that talks to firebase with it's lightweight
REST API. It takes care of authentication, public resources like products, collections, storefronts etc..&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;shelf-client-react-hooks&lt;/code&gt; - a React hook lib for shelf&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;shelf-backend&lt;/code&gt; - a base backend for shelf example. Easy to customize (only 160kb) &lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>cms</category>
      <category>headless</category>
      <category>firebase</category>
      <category>shopping</category>
    </item>
    <item>
      <title>My online store costs me 1$ per year</title>
      <dc:creator>Tomer Shalev</dc:creator>
      <pubDate>Thu, 20 Jul 2023 11:41:57 +0000</pubDate>
      <link>https://forem.com/hendrixstring/my-online-store-costs-me-1-per-year-14a4</link>
      <guid>https://forem.com/hendrixstring/my-online-store-costs-me-1-per-year-14a4</guid>
      <description>&lt;p&gt;Yes, this is true, not a bait of any sort. Developers and Entrepreneurs beware of this.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hiedeGDC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/chzpzud8hn5jfq0z5qlw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hiedeGDC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/chzpzud8hn5jfq0z5qlw.png" alt="Shelf logo" width="256" height="256"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Short Story
&lt;/h2&gt;

&lt;p&gt;Me and my son started a retro video games shop 🚀, we used the following tools, which amounted to less than a 1USD for operational costs per year&lt;/p&gt;

&lt;p&gt;This is the Cost of our project for the first 20 days of July&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Nf0CeUAy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bp1xvm9ch4vf4q82308w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Nf0CeUAy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bp1xvm9ch4vf4q82308w.png" alt="Project Cost" width="800" height="492"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How we did it ?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Firebase &amp;gt; Pay as you go cloud database, storage and user management&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://shelf-cms.io"&gt;SHELF CMS&lt;/a&gt; &amp;gt; Online Commerce Management System, that you login to with your firebase credentials. It will convert your firebase into a Headless commerce CMS&lt;/li&gt;
&lt;li&gt;PayPal &amp;gt; We accept credit cards 💳 with PayPal&lt;/li&gt;
&lt;li&gt;Cloudflare R2 &amp;gt; We store images/json assets with Cloudflare R2 storage service, which we connect to with SHELF-CMS. They do not have egress fees like other providers (which is amazing)&lt;/li&gt;
&lt;li&gt;Cloudflare Pages &amp;gt; We serve our website static website with this amazing service&lt;/li&gt;
&lt;li&gt;Firebase Functions &amp;gt; for creating Checkouts, Payments and Marketing Emails, we also connect it to SHELF-CMS&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Long Story
&lt;/h2&gt;

&lt;p&gt;There is no long story, simply follow the &lt;a href="https://www.shelf-cms.io/docs/setup/project"&gt;instructions&lt;/a&gt; 📖 @ SHELF-CMS.&lt;/p&gt;

&lt;p&gt;It is really fast to setup&lt;/p&gt;

</description>
      <category>cms</category>
      <category>firebase</category>
      <category>headless</category>
      <category>shopping</category>
    </item>
  </channel>
</rss>
