<?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: Dhairya Bhargava</title>
    <description>The latest articles on DEV Community by Dhairya Bhargava (@dhairyabhargava).</description>
    <link>https://dev.to/dhairyabhargava</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4152833%2Fa1651af0-8d11-4d8a-be6e-80e40607e468.jpeg</url>
      <title>DEV Community: Dhairya Bhargava</title>
      <link>https://dev.to/dhairyabhargava</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dhairyabhargava"/>
    <language>en</language>
    <item>
      <title>How to Test Your First REST API with Postman: A Practical Walkthrough</title>
      <dc:creator>Dhairya Bhargava</dc:creator>
      <pubDate>Wed, 30 Sep 2026 19:06:25 +0000</pubDate>
      <link>https://dev.to/dhairyabhargava/how-to-test-your-first-rest-api-with-postman-a-practical-walkthrough-4gn8</link>
      <guid>https://dev.to/dhairyabhargava/how-to-test-your-first-rest-api-with-postman-a-practical-walkthrough-4gn8</guid>
      <description>&lt;p&gt;Every modern web application relies on Application Programming Interfaces (APIs) to exchange data between user interfaces and backend servers. Before writing code to consume an endpoint, verifying how that API responds is essential for preventing unexpected bugs and runtime errors.&lt;/p&gt;

&lt;p&gt;Postman is the industry standard for manual API development and testing. It allows developers to construct HTTP requests, configure payloads, inspect response bodies, and verify status codes without writing client-side fetch logic.&lt;/p&gt;

&lt;p&gt;This guide walks through sending an HTTP GET request, interpreting response codes, and validating JSON data using a live public endpoint.&lt;/p&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;p&gt;To follow along, you only need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A modern web browser&lt;/li&gt;
&lt;li&gt;A free Postman account (accessible at &lt;a href="https://www.postman.com" rel="noopener noreferrer"&gt;postman.com&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Understanding the Target Endpoint
&lt;/h3&gt;

&lt;p&gt;We will test an endpoint provided by &lt;strong&gt;JSONPlaceholder&lt;/strong&gt;, a free REST API designed for development and prototyping. We will query an individual post:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;HTTP Method:&lt;/strong&gt; &lt;code&gt;GET&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Target URL:&lt;/strong&gt; &lt;code&gt;https://jsonplaceholder.typicode.com/posts/1&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A &lt;code&gt;GET&lt;/code&gt; request retrieves data from the specified server without modifying any server-side state.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Construct the GET Request
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;In your Postman workspace, click the &lt;strong&gt;+&lt;/strong&gt; icon or open a request tab.&lt;/li&gt;
&lt;li&gt;Ensure the HTTP method dropdown is set to &lt;strong&gt;GET&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;In the request URL bar, enter:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[https://jsonplaceholder.typicode.com/posts/1]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;h3&gt;
  
  
  Step 2: Send the Request and Inspect the Output
&lt;/h3&gt;

&lt;p&gt;Click the blue Send button on the right side of the address bar.&lt;/p&gt;

&lt;p&gt;Postman executes the network call and populates the response pane directly below the workbench:&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Key Response Metrics:
&lt;/h3&gt;

&lt;p&gt;Status Code (200 OK): Located on the right side of the response bar. A 200 series code indicates the server successfully received, understood, and fulfilled the request.&lt;/p&gt;

&lt;p&gt;Latency: Displays the round-trip time in milliseconds (e.g., 37 ms), indicating network speed and server response time.&lt;/p&gt;

&lt;p&gt;Payload Size: Shows the total transfer weight (e.g., 1.31 KB).&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Parse the Returned JSON Payload
&lt;/h3&gt;

&lt;p&gt;Under the Body tab, ensure the display format is set to JSON and Pretty. The server returns a structured JSON object representing the requested resource:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "userId": 1,
  "id": 1,
  "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
  "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The payload contains key-value pairs (userId, id, title, body) ready to be mapped to frontend application state.&lt;/p&gt;

&lt;h2&gt;
  
  
  Essential HTTP Status Codes
&lt;/h2&gt;

&lt;p&gt;When testing APIs, status codes quickly identify whether an issue lies with your request or the server:&lt;/p&gt;

&lt;p&gt;200 OK: The request succeeded and returned the requested payload.&lt;/p&gt;

&lt;p&gt;201 Created: A resource was successfully generated on the server (common for POST requests).&lt;/p&gt;

&lt;p&gt;400 Bad Request: The request was malformed, had missing parameters, or contained invalid syntax.&lt;/p&gt;

&lt;p&gt;401 Unauthorized: Missing or invalid authentication credentials (API key or bearer token).&lt;/p&gt;

&lt;p&gt;404 Not Found: The requested endpoint path or specific resource ID does not exist.&lt;/p&gt;

&lt;p&gt;500 Internal Server Error: An unhandled error occurred within the remote server logic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In under five minutes, you tested a live REST endpoint, validated server availability via standard HTTP response codes, and verified payload formatting without writing single lines of application code. Postman isolates API testing from your frontend UI, giving you an immediate sanity check whenever backend behavior behaves unexpectedly.&lt;/p&gt;

</description>
      <category>api</category>
      <category>postman</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Supabase vs. Firebase: Why Relational Databases Are Dominating Modern App Architecture</title>
      <dc:creator>Dhairya Bhargava</dc:creator>
      <pubDate>Wed, 30 Sep 2026 18:46:28 +0000</pubDate>
      <link>https://dev.to/dhairyabhargava/supabase-vs-firebase-why-relational-databases-are-dominating-modern-app-architecture-293k</link>
      <guid>https://dev.to/dhairyabhargava/supabase-vs-firebase-why-relational-databases-are-dominating-modern-app-architecture-293k</guid>
      <description>&lt;p&gt;For nearly a decade, Google’s Firebase was the default backend-as-a-service (BaaS) for startups, indie hackers, and mobile developers. Its promise was seductive: spin up an app without writing a single line of backend infrastructure code, sync JSON documents in real time, and scale horizontally on Google’s infrastructure.&lt;/p&gt;

&lt;p&gt;However, as production applications mature, developers frequently encounter the structural bottlenecks of document-based NoSQL storage. Supabase emerged not merely as an "open-source Firebase alternative," but as an architectural course correction restoring relational integrity and SQL power to rapid application development.&lt;/p&gt;

&lt;p&gt;Here is an architectural breakdown of why developers are moving toward relational backends, how Supabase and Firebase diverge under the hood, and how to select the right platform for your stack.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Data Modeling: Structured Tables vs. Document Collections
&lt;/h2&gt;

&lt;p&gt;The fundamental architectural difference between both platforms lies in data organization:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Firebase (Cloud Firestore):&lt;/strong&gt; A document-oriented NoSQL database. Data lives in loose JSON like structures organized into collections and subcollections. Documents within the same collection do not need to share the same schema.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supabase:&lt;/strong&gt; An automated layer on top of a dedicated PostgreSQL relational database. Data lives in strictly typed tables with explicit column constraints, foreign keys, and referential integrity.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Reality in Production
&lt;/h3&gt;

&lt;p&gt;NoSQL offers incredible velocity during early prototyping when your schema changes daily. However, as business logic grows, applications inevitably require relational data: users have multiple orders, orders reference inventory items, and inventory belongs to organizations.&lt;/p&gt;

&lt;p&gt;In Firebase, managing relationships requires &lt;strong&gt;denormalization&lt;/strong&gt;—duplicating data across multiple documents. If a user updates their profile picture or username, your application code must find and update dozens of separate documents. If any update fails mid flight, your database falls into an inconsistent state.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Querying Capabilities: SQL Joins vs. Client-Side Stitching
&lt;/h2&gt;

&lt;p&gt;Querying data across multiple entities exposes the steepest difference between the two systems:&lt;/p&gt;

&lt;h3&gt;
  
  
  In Firebase:
&lt;/h3&gt;

&lt;p&gt;Cloud Firestore does not support relational JOIN operations. If an admin dashboard needs to display a list of orders alongside customer profile details, the client application must:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Fetch the &lt;code&gt;orders&lt;/code&gt; collection.&lt;/li&gt;
&lt;li&gt;Extract the &lt;code&gt;user_id&lt;/code&gt; from each order.&lt;/li&gt;
&lt;li&gt;Make individual queries back to the &lt;code&gt;users&lt;/code&gt; collection to retrieve user profiles.&lt;/li&gt;
&lt;li&gt;Manually stitch the responses together in JavaScript.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This "N+1 query problem" inflates network overhead, drains mobile battery life, and multiplies database read costs.&lt;/p&gt;

&lt;h3&gt;
  
  
  In Supabase:
&lt;/h3&gt;

&lt;p&gt;Because Supabase exposes native PostgreSQL over autogenerated REST and GraphQL endpoints, relational queries happen in a single trip. Using standard SQL or the Supabase JavaScript client, you query relational data through a simple nested query:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;supabase&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;orders&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;select&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`
    id,
    total_amount,
    users (
      id,
      email,
      full_name
    )
  `&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Access Control: Security Rules vs. Row Level Security (RLS)
&lt;/h3&gt;

&lt;p&gt;Both platforms prevent client side operations from unauthorized data access, but enforce security at completely different layers:&lt;/p&gt;

&lt;p&gt;Firebase Security Rules: Relies on a proprietary, declarative domain specific language (DSL). While capable, debugging complex access rules across nested subcollections requires specialized testing harnesses and can become brittle as schemas evolve.&lt;/p&gt;

&lt;p&gt;Supabase Row Level Security (RLS): Operates natively within PostgreSQL. Access policies are standard SQL expressions attached directly to tables.&lt;/p&gt;

&lt;p&gt;With Supabase RLS, authorization rules look like standard database logic:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SQL&lt;/span&gt;

&lt;span class="k"&gt;create&lt;/span&gt; &lt;span class="n"&gt;policy&lt;/span&gt; &lt;span class="nv"&gt;"Users can only view their own tasks"&lt;/span&gt;
&lt;span class="k"&gt;on&lt;/span&gt; &lt;span class="n"&gt;tasks&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="k"&gt;select&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;uid&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Because security logic resides inside Postgres rather than an external gateway, the same rules apply whether requests arrive via the Supabase web SDK, an Edge Function, or a direct database connection string.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Pricing Mechanics: Capacity-Based vs. Operation-Based
&lt;/h3&gt;

&lt;p&gt;Cost predictability often dictates backend migration decisions at scale:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Primary Billing Metric:&lt;/strong&gt; Firebase charges per operation (reads, writes, and deletes), whereas Supabase bills based on provisioned compute capacity and storage tiers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pricing Predictability:&lt;/strong&gt; Firebase costs can surge unpredictably with viral traffic spikes or unoptimized front end render loops. Supabase operates on fixed monthly tiers with predictable limits.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Portability &amp;amp; Lock-in:&lt;/strong&gt; Firebase ties your architecture to proprietary Google Cloud services. Supabase is built entirely on standard, portable open-source PostgreSQL.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deployment Flexibility:&lt;/strong&gt; Firebase is strictly cloud hosted; Supabase can be deployed to the cloud or self-hosted on your own infrastructure via Docker.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Realtime Engine:&lt;/strong&gt; Firebase uses native document synchronization, while Supabase uses PostgreSQL logical replication.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Firebase charges per document read and write. An unintentional infinite loop in front end React hooks or a sudden viral spike can trigger thousands of dollars in surprise operational charges overnight.&lt;/p&gt;

&lt;p&gt;Supabase bills on provisioned compute capacity and storage tiers. A compute instance costs a flat monthly rate regardless of whether a query retrieves 10 records or 100,000 records.&lt;/p&gt;

&lt;h3&gt;
  
  
  Architectural Verdict: When to Choose Which
&lt;/h3&gt;

&lt;h2&gt;
  
  
  Choose Firebase if:
&lt;/h2&gt;

&lt;p&gt;You are building a mobile first application where offline caching and seamless local to remote conflict resolution are core requirements.&lt;/p&gt;

&lt;p&gt;Your engineering stack already integrates deeply with the Google Cloud ecosystem (BigQuery, Firebase Cloud Messaging, Vertex AI).&lt;/p&gt;

&lt;p&gt;Your data is naturally non relational (e.g., event logs, isolated chat logs, simple real-time canvas states).&lt;/p&gt;

&lt;h2&gt;
  
  
  Choose Supabase if:
&lt;/h2&gt;

&lt;p&gt;Your product handles structured, interconnected business logic (SaaS tools, marketplaces, CRM systems, e-commerce).&lt;/p&gt;

&lt;p&gt;You want transparent data ownership without vendor lock in; you can dump your Postgres database and migrate to AWS RDS or a self hosted server anytime.&lt;/p&gt;

&lt;p&gt;Your team requires advanced analytical querying, aggregation, full text search, or vector embeddings (pgvector) without deploying external search clusters.&lt;/p&gt;

&lt;p&gt;The developer community's shift toward Supabase is not just about avoiding proprietary ecosystems it reflects a broader recognition that foundational relational modeling remains the most resilient architecture for long term product growth.&lt;/p&gt;

</description>
      <category>supabase</category>
      <category>firebase</category>
      <category>webdev</category>
      <category>architecture</category>
    </item>
    <item>
      <title>How to Set Up a Free Cloud Database and Add Your First Table with Supabase</title>
      <dc:creator>Dhairya Bhargava</dc:creator>
      <pubDate>Wed, 30 Sep 2026 18:21:25 +0000</pubDate>
      <link>https://dev.to/dhairyabhargava/how-to-set-up-a-free-cloud-database-and-add-your-first-table-with-supabase-43b6</link>
      <guid>https://dev.to/dhairyabhargava/how-to-set-up-a-free-cloud-database-and-add-your-first-table-with-supabase-43b6</guid>
      <description>&lt;p&gt;Setting up a backend database traditionally meant provisioning virtual machines, managing port forwarding, and writing manual SQL schemas before writing a single line of application logic. Supabase removes this friction by delivering a managed, cloud-hosted PostgreSQL database in minutes, manageable entirely through an intuitive browser interface.&lt;/p&gt;

&lt;p&gt;This guide walks through creating a Supabase project, building a structured data table visually, inserting records, and accessing client connection configurations &lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;To complete this walkthrough, you only need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A modern web browser&lt;/li&gt;
&lt;li&gt;A free GitHub account or personal email address&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 1: Create a New Supabase Project
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to &lt;a href="https://supabase.com" rel="noopener noreferrer"&gt;supabase.com&lt;/a&gt; and select &lt;strong&gt;Start your project&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Sign in with GitHub or your email credentials.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;New project&lt;/strong&gt; from your organization dashboard.&lt;/li&gt;
&lt;li&gt;Set the &lt;strong&gt;Project name&lt;/strong&gt; to &lt;code&gt;Task Manager DB&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Generate a password&lt;/strong&gt; to generate a secure database password, and store it safely.&lt;/li&gt;
&lt;li&gt;Choose the &lt;strong&gt;Region&lt;/strong&gt; closest to your target audience (e.g., &lt;code&gt;Asia-Pacific&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Confirm the project is on the Free tier and click &lt;strong&gt;Create new project&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8530kw7igbok66d3fvvd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8530kw7igbok66d3fvvd.png" alt="Supabase new project creation form" width="800" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Supabase will provision your isolated PostgreSQL database instance in the background.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Build a Table Using the Visual Editor
&lt;/h2&gt;

&lt;p&gt;Once provisioning completes, you can construct relational tables without writing raw DDL statements:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click the &lt;strong&gt;Table Editor&lt;/strong&gt; icon (the grid icon) on the left sidebar.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Create a table&lt;/strong&gt; (or &lt;strong&gt;+ New table&lt;/strong&gt;).&lt;/li&gt;
&lt;li&gt;Set the &lt;strong&gt;Name&lt;/strong&gt; to &lt;code&gt;Tasks&lt;/code&gt; and add an optional description: &lt;code&gt;A list of daily tasks to track&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Keep the default columns:

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;id&lt;/code&gt; (&lt;code&gt;int8&lt;/code&gt;, primary key)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;created_at&lt;/code&gt; (&lt;code&gt;timestamptz&lt;/code&gt;, default: &lt;code&gt;now()&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Add column&lt;/strong&gt; twice to append your application attributes:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Column 3:&lt;/strong&gt; Name: &lt;code&gt;title&lt;/code&gt; | Type: &lt;code&gt;text&lt;/code&gt; | Default: empty&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Column 4:&lt;/strong&gt; Name: &lt;code&gt;is_completed&lt;/code&gt; | Type: &lt;code&gt;bool&lt;/code&gt; | Default: &lt;code&gt;false&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Keep &lt;strong&gt;Enable Row Level Security (RLS)&lt;/strong&gt; selected to safeguard public access policies.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Folzjxj8svbtesjkwg9c8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Folzjxj8svbtesjkwg9c8.png" alt="Configuring columns in the Supabase Table Editor" width="800" height="434"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click &lt;strong&gt;Save&lt;/strong&gt; in the bottom-right corner to commit the table schema.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Step 3: Insert Sample Records
&lt;/h2&gt;

&lt;p&gt;With the schema live, populate sample rows directly through the dashboard interface:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click &lt;strong&gt;Insert&lt;/strong&gt; in the top action bar, then choose &lt;strong&gt;Insert row&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Leave &lt;code&gt;id&lt;/code&gt; and &lt;code&gt;created_at&lt;/code&gt; empty; the database populates both values automatically.&lt;/li&gt;
&lt;li&gt;In the &lt;code&gt;title&lt;/code&gt; field, type: &lt;code&gt;Write my first technical article&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Leave &lt;code&gt;is_completed&lt;/code&gt; set to &lt;code&gt;false&lt;/code&gt;, then click &lt;strong&gt;Save&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Repeat the process to add a second record: &lt;code&gt;Pitch my sample guide to clients&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fiwttx56pbu9ppqg6okpr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fiwttx56pbu9ppqg6okpr.png" alt="Tasks table showing inserted sample records" width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Your data will instantly appear in the spreadsheet viewer, complete with primary keys and timestamps.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Access Client Connection Snippets
&lt;/h2&gt;

&lt;p&gt;Supabase automatically generates context-aware snippets and client configs based on your active schema:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click the green &lt;strong&gt;Connect&lt;/strong&gt; button in the top navigation bar.&lt;/li&gt;
&lt;li&gt;Under the &lt;strong&gt;Framework&lt;/strong&gt; tab, select your environment (such as &lt;code&gt;Next.js&lt;/code&gt; with the &lt;code&gt;App Router&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Copy the package install command:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; @supabase/supabase-js @supabase/ssr
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Review the ready-to-use .env.local snippet containing your project URL and public publishable key&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg2b5ptnxa6m34g6ab253.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg2b5ptnxa6m34g6ab253.png" alt="Supabase connection modal with client configuration" width="799" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In under ten minutes, you have provisioned a cloud PostgreSQL instance, created a structured table with appropriate data types, populated records visually, and retrieved ready-to-use client initialization credentials. From here, you can query this data directly from any web or mobile front-end using the @supabase/supabase-js software development kit.&lt;/p&gt;

</description>
      <category>supabase</category>
      <category>database</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
