<?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>DEV Community: Harini Janakiraman</title>
    <description>The latest articles on DEV Community by Harini Janakiraman (@harinilabs).</description>
    <link>https://dev.to/harinilabs</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%2F4667%2FA4KqiTdX.jpg</url>
      <title>DEV Community: Harini Janakiraman</title>
      <link>https://dev.to/harinilabs</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/harinilabs"/>
    <language>en</language>
    <item>
      <title>How to create illusion diffusion apps without code</title>
      <dc:creator>Harini Janakiraman</dc:creator>
      <pubDate>Wed, 11 Oct 2023 23:25:35 +0000</pubDate>
      <link>https://dev.to/harinilabs/how-to-create-illusion-diffusion-apps-without-code-5hbn</link>
      <guid>https://dev.to/harinilabs/how-to-create-illusion-diffusion-apps-without-code-5hbn</guid>
      <description>&lt;p&gt;At the intersection of art, creativity and AI - illusions diffusion models have captivated our minds. If you are on Twitter (I mean 𝕏), you must have seen a recent wave of AI-generated images of QR codes, spiral images, and brand logos superimposed on AI-generated images with illusion diffusion model. &lt;/p&gt;

&lt;p&gt;Today, we will show you exactly how to build this BuildShip's ready-made template for a quick start. &lt;a href="http://buildship.com/"&gt;BuildShip&lt;/a&gt; is a low-code visual backend builder powered by AI that lets you build a seemingly complex backend with ease. This template comes with prebuilt steps for removing background from an image, converting the image to black-and-white, and then uploading it to storage for use in the illusion diffusion model with your prompt.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step by Step Tutorial
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Create a BuildShip account&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create an account on BuildShip if you do not have one already. Once you create the account, you will be directed to create a project - you can give it a name and select the region you want the app to be deployed to.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Clone the illusion diffusion template&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Go to the templates section and pick the template. This will give you the entire workflow in one click.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Add your Replicate API key&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Next, add your Replicate API key by clicking the context menu and clicking secret as shown below. Your API key is securely stored on Google Cloud Secret Manager and never exposed on the UI. This makes it super secure to use in your apps and web apps.  This node of Replicate lets you use multiple load models in a workflow.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv9gq5z3ylsw6sxetgwob.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv9gq5z3ylsw6sxetgwob.png" alt="Adding Secret to BuildShip" width="800" height="555"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then add this key in the two Replicate nodes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Click Ship and you are done, for real!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now you are ready to click Ship, button. This will instantly deploy this workflow and give you an API URL that you can start using in your apps. &lt;/p&gt;

&lt;h2&gt;
  
  
  How to use this API?
&lt;/h2&gt;

&lt;p&gt;Shipping this template gives you an API endpoint URL. You can use this directly in your frontend apps that you build either with nocode builders like Bubble, Framer, FlutterFlow, GlideApps, Toddle, Bravo etc on front-end framer works like Next.js, React, Vue.js, Flutter, iOS, Android apps etc.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://fh48ty.buildship.run/illusion_diffusion
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;🚀 This endpoint is highly scalable on Google cloud and can handle from 1 user to millions of users with cost efficiency.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can do a quick test by using this API endpoint URL in your browser and appending the following param values to it: First a text prompt and then a image URL with which you want it to be blended.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;?prompt=a surreal landscape with flow fields&amp;amp;image_url=https://asset.brandfetch.io/id20mQyGeY/idyE-PQqf2.png
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To use this API in your app, web app built with no-code tools like Bubble, FlutterFlow, Adalo, Bravo Studio, Toddle, etc., or a frontend framework like Next.js, React … On your app, you will have a simple form or input fields taking in your image URL and prompt text passing that to this API endpoint, and using the generated image to display back in your app.&lt;/p&gt;

&lt;p&gt;This endpoint in the template is a GET request, but you can change it to POST and add authentication if you want it to be accessible by only validated or paying customers. You have full control. Check out BuildShip Documentation for further details on how you can expand on this template further.&lt;/p&gt;

&lt;h2&gt;
  
  
  How does this work?
&lt;/h2&gt;

&lt;p&gt;This might seem like magic, so let's unpack how this works and how you can tweak it any way you like.&lt;/p&gt;

&lt;h3&gt;
  
  
  Trigger node
&lt;/h3&gt;

&lt;p&gt;Every workflow has a trigger node, this is the core node that marks the beginning of your workflow. In this case it is an GET API request and so anytime your shipping API endpoint is called with the required params, it will trigger the workflow.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fon8voe0szaewi2brqf45.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fon8voe0szaewi2brqf45.png" alt="BuildShip Trigger node" width="780" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Replicate API to remove image background, then storage image to Cloud Storage
&lt;/h3&gt;

&lt;p&gt;Incoming image from the query parameter, is first passed to the Replicate background remover API to prepare it for the illusion diffusion model. This AI media generated is stored in the BuildShip Cloud Storage.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Wait and then convert image to black-and-white
&lt;/h3&gt;

&lt;p&gt;You can then wait for a few milliseconds and then convert the image to black and white as the illusion diffusion model expects it in b&amp;amp;w. For this we will be using a simple script node. In BuildShip, you can run any piece of javascript or typescript code and even use any NPM package. &lt;/p&gt;

&lt;p&gt;For converting to black and white, we can simply ask AI to generate a node script code, here is generated one with jimp module.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq0ed5f181w3qk11f4rje.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq0ed5f181w3qk11f4rje.png" alt="BuildShip node" width="760" height="558"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Rescale image to required dimensions
&lt;/h3&gt;

&lt;p&gt;Upscale the B/W image to target resolution using jimp code node.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flkwbke7mzld2i17e6gjl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flkwbke7mzld2i17e6gjl.png" alt="BuildShip node" width="784" height="479"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Replicate API - Illusion Diffusion node
&lt;/h3&gt;

&lt;p&gt;Generate illusion diffusion image with the given prompt from the request API query parameter and processed image - to generate image using andreasjansson/illusion model&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7km19mc8goodemhsqyiv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7km19mc8goodemhsqyiv.png" alt="BuildShip node" width="768" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Return node
&lt;/h3&gt;

&lt;p&gt;The generated image stored in the cloud storage has an URL that is then return in the return node. So this can now be used in any frontend application easily.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1wwwa5vnxoouzokjc9vd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1wwwa5vnxoouzokjc9vd.png" alt="BuildShip node" width="754" height="329"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Building with low-code gives you the power to ship fast while maintaining full control over extensibility and flexibility to build your ideas exactly the way you want. &lt;/p&gt;

&lt;p&gt;Get started here: &lt;a href="http://buildship.com/"&gt;http://buildship.com/&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>CMS for Firebase and Firestore</title>
      <dc:creator>Harini Janakiraman</dc:creator>
      <pubDate>Mon, 27 Sep 2021 16:44:03 +0000</pubDate>
      <link>https://dev.to/harinilabs/gcp-as-easy-as-abc-a-low-code-platform-for-firestore-cloud-functions-deo</link>
      <guid>https://dev.to/harinilabs/gcp-as-easy-as-abc-a-low-code-platform-for-firestore-cloud-functions-deo</guid>
      <description>&lt;p&gt;Building products requires tons of context switching between your database cloud console UI, code editor and tinkering with CLIs on terminals for deploying cloud functions. &lt;/p&gt;

&lt;p&gt;Google Firestore is great for building and launching scalable apps fast on the serverless stack. There is a drawback though - the Firestore UI looks like this.&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2A0zkpRVZPQgZfkxA8Uc-vHA.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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2A0zkpRVZPQgZfkxA8Uc-vHA.png" alt="Firebase UI"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It is hard to navigate the nested document store and the UI is not intuitive. I have personally faced this challenge many times when building products on Firebase. Only developers have access to the data and you don't want to waste their time to build yet another internal portal or data download script. This is one of the main reasons why we built &lt;a href="http://rowy.io/" rel="noopener noreferrer"&gt;&lt;strong&gt;Rowy&lt;/strong&gt;&lt;/a&gt; - an open-source platform to manage your data in an intuitive spreadsheet-like UI. Say goodbye to emailing that "vFinalFinal" Excel sheet.&lt;/p&gt;

&lt;p&gt;But that is just the tip of the iceberg. We also questioned why cloud functions need to be built the way they do now. From starting with a boilerplate code on editors to deploying using CLI on terminals to finally looking at the logs on Google Cloud console. Why?&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2A1IQAIhTIkps2bYA9eETjOA.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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2A1IQAIhTIkps2bYA9eETjOA.png" alt="Cloud Function Deploy process today"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We wanted to flip the script by making the process of building and deploying cloud functions &lt;strong&gt;effortless, right in the browser and in the view of your data. No Devops, CI/CD, CLIs, reading docs. It just works.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;While we are at it, doesn't it also make sense to have pre-built commonly used functions and extensions to connect to your favorite third-party tools? We did just that. &lt;/p&gt;

&lt;p&gt;With a goal to help developers focus on building their product functionality fast, we built Rowy with ❤️. &lt;strong&gt;Our code is&lt;/strong&gt; &lt;a href="https://github.com/rowyio/rowy" rel="noopener noreferrer"&gt;&lt;strong&gt;open-source&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;, you fully own your data and your data stays on your own GCP/Firestore project.&lt;/strong&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2AqfzH4gp-A6Bswn9cDbIeGA.gif" 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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2AqfzH4gp-A6Bswn9cDbIeGA.gif" alt="Introducing Rowy"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Let's see how you can build on GCP within minutes
&lt;/h3&gt;

&lt;p&gt;First, you can get setup quickly with this link below to deploy Rowy on your Google Cloud/Firebase project. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://rowy.app/deploy" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2A9kRUsDrC6tI0RiMH0IMM8g.png" alt="One click deploy"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once setup is complete, you should be able to access your Firestore data in a collaborative spreadsheet-like UI and perform any CRUD operations. &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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2AjfzgSG038qzNpYZal1vSJA.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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2AjfzgSG038qzNpYZal1vSJA.png" alt="Rowy"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is just the start. There is so much more you can do here.&lt;/p&gt;

&lt;h4&gt;
  
  
  Build your data model visually
&lt;/h4&gt;

&lt;p&gt;As a first step in building any product, you can build your Firestore data model visually by simply clicking the "Add Table" and "Add column" buttons. Choose from &lt;a href="https://docs.rowy.io/field-types/supported-fields" rel="noopener noreferrer"&gt;30+ fields&lt;/a&gt; including complex data fields like images, files, richtext, subtables, code, flexible fields like json and more. &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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2AMh2632MUi8THinBMgg4NxQ.gif" 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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2AMh2632MUi8THinBMgg4NxQ.gif" alt="data model"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Powerful and rich spreadsheet-like UI
&lt;/h4&gt;

&lt;p&gt;Manage your data intuitively on a familiar spreadsheet-like UI with all the functionality and features that come with it.&lt;/p&gt;

&lt;p&gt;⚡️   Bulk import and export data - csv, json&lt;br&gt;
⚡️   Filter and sort data fields&lt;br&gt;
⚡️   Create your custom flexible views by locking, freezing, hiding columns. Admins have full control over their data views for different user roles, i.e., you can create data portals customized for your operations team, marketing, developers, PMs ... or any user really&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2AZJWaWXmZcaoQNlFqi1DspA.gif" 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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2AZJWaWXmZcaoQNlFqi1DspA.gif" alt="spreadsheet"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Collaborate with your team
&lt;/h4&gt;

&lt;p&gt;Invite your team members to collaborate on the data and give them specific granular CRUD permissions at a table-level and field-level using custom roles.&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2AE9I-D6IcsbWlEnfEdMy4Bg.gif" 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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2AE9I-D6IcsbWlEnfEdMy4Bg.gif" alt="collaborate with team"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Connect to your favorite tools
&lt;/h4&gt;

&lt;p&gt;With ready-made extensions to Typeform, SendGrid, Algolia, Twilio, Bigquery and more, you can connect to your favorite third-party tools. Also, you have full flexibility to customize these pre-built extensions or build your own.&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2ArRppYgVuJRZibRau0QhCRw.gif" 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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2ArRppYgVuJRZibRau0QhCRw.gif" alt="connect to tools"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Multiple views for the same data collection
&lt;/h4&gt;

&lt;p&gt;You can have more than one way to look at the same Firestore collection by using flexible Table views with unique Table IDs. You can build table and column views for your different team members with unique roles.&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2A2iZAKFRT-QIpO2QczceZzQ.gif" 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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2A2iZAKFRT-QIpO2QczceZzQ.gif" alt="multiple view"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Default values, data validation, required fields
&lt;/h4&gt;

&lt;p&gt;Allowing non-technical users to make changes to production data is scary. To address this, Rowy not only allows permission and access controls at a table-level and field-level but also the ability to validate any field-level CRUD operations with regex checks to ensure critical data is always accurate before updating your Firestore document. You can also define default values for fields (static, null, custom) and make fields mandatory for row creation.&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2A_ibiuM9La4xBt4JFqEtLng.gif" 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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2A_ibiuM9La4xBt4JFqEtLng.gif" alt="default values"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Write cloud functions
&lt;/h4&gt;

&lt;p&gt;You can build cloud functions that are triggered on any field-level data changes. Easy deploy, no need for terminals, CLIs and boilerplate code. Import npm packages and use any API. Read full documentation &lt;a href="https://docs.rowy.io/field-types/derivative" rel="noopener noreferrer"&gt;here&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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2A04CC8pGsy6_L-MRbn-_6Fw.gif" 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%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2A04CC8pGsy6_L-MRbn-_6Fw.gif" alt="write cloud functions"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;If you like what we are building, give Rowy a quick spin on your Firebase project using the button below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://rowy.app/deploy" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1600%2F1%2ApuLdUWZHhjKa7-SbEytdWA.png" alt="Quick Deploy Link"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This runs RowyRun (an open-source, cloud run instance) that operates exclusively on your GCP project.&lt;/em&gt; &lt;strong&gt;&lt;em&gt;We will never have access to your service account or any of your data&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;. Alternatively, you can also manually install using the steps detailed&lt;/em&gt; &lt;a href="https://docs.rowy.io/install" rel="noopener noreferrer"&gt;&lt;em&gt;here&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Join the community of developers building on GCP/Firebase using Rowy&lt;/p&gt;

&lt;p&gt;😻&lt;a href="https://github.com/rowyio/rowy" rel="noopener noreferrer"&gt;Github&lt;/a&gt; 💬&lt;a href="https://rowy.io/chat" rel="noopener noreferrer"&gt;Discord&lt;/a&gt; 🐦&lt;a href="https://twitter.com/rowyio" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Please give us a star on Github to get the latest updates 🌟 We would love to hear from you and get feedback 👋&lt;/p&gt;

</description>
      <category>firebase</category>
      <category>googlecloud</category>
      <category>webdev</category>
      <category>database</category>
    </item>
  </channel>
</rss>
