<?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: Nate Sharma</title>
    <description>The latest articles on DEV Community by Nate Sharma (@nate_sharma_).</description>
    <link>https://dev.to/nate_sharma_</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%2F3354660%2F4e9e890e-6086-4dfc-b476-8f186a09fb60.png</url>
      <title>DEV Community: Nate Sharma</title>
      <link>https://dev.to/nate_sharma_</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nate_sharma_"/>
    <language>en</language>
    <item>
      <title>Building a User Interview Tracker in an Afternoon (with Gadget)</title>
      <dc:creator>Nate Sharma</dc:creator>
      <pubDate>Mon, 04 Aug 2025 14:55:33 +0000</pubDate>
      <link>https://dev.to/nate_sharma_/building-a-user-interview-tracker-in-an-afternoon-with-gadget-5fom</link>
      <guid>https://dev.to/nate_sharma_/building-a-user-interview-tracker-in-an-afternoon-with-gadget-5fom</guid>
      <description>&lt;p&gt;Lately, I’ve been leaning into building small internal tools for my team. Things that aren’t glamorous, but make our process smoother. One of the most useful was a user interview tracker: just a lightweight web app where we could log interview notes, tag them by feature or theme, and revisit them later.&lt;/p&gt;

&lt;p&gt;I built it in a few hours using React + Gadget, and it’s one of those tools that quietly changed how we work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Build One?&lt;/strong&gt;&lt;br&gt;
We’d been doing user interviews in Notion and Google Docs, which worked fine... until we wanted to do anything with that data. Finding patterns across interviews, tagging insights, or just tracking who said what, it was all friction.&lt;/p&gt;

&lt;p&gt;I didn’t want to build a whole CRM or research platform. Just a place to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Log interview notes (timestamped and associated with a user)&lt;/li&gt;
&lt;li&gt;Tag entries by themes (like “onboarding friction” or “mobile nav”)&lt;/li&gt;
&lt;li&gt;Search and filter by tags or date&lt;/li&gt;
&lt;li&gt;Keep things private but sharable with the team&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Enter Gadget:&lt;br&gt;
I’d used Gadget before for a painpoint journal app and was impressed by how much backend boilerplate it cut out. For this tool, I wanted to go a little deeper multi table relationships, filtering, and some conditional logic.&lt;/p&gt;

&lt;p&gt;Gadget gives you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Built in Postgres DB (via a visual schema editor)&lt;/li&gt;
&lt;li&gt;Auth (already wired up)&lt;/li&gt;
&lt;li&gt;File storage (handy if we want to upload transcripts later)&lt;/li&gt;
&lt;li&gt;Auto generated REST + GraphQL APIs&lt;/li&gt;
&lt;li&gt;A backend code editor (runs server side, uses JS/TS)&lt;/li&gt;
&lt;li&gt;Free tier with generous limits&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All I had to do was hook up a React frontend, and I was off.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A Quick Breakdown of the Build&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Schema setup&lt;br&gt;
I created models for Interview, User, and Tag. Gadget’s schema editor made this painless, and relationships between models (e.g., many interviews per user, many tags per interview) were easy to define visually.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Auth&lt;br&gt;
Out of the box, users can sign in with email/password or Google. I just stuck with email login. Didn’t write a single line of auth code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;API&lt;br&gt;
Every model gets a GraphQL and REST API auto generated so I just queried/interacted from my React app with Apollo.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Backend logic&lt;br&gt;
I used Gadget’s built in JS backend to handle things like auto tagging interviews if certain keywords appeared, and flagging stale entries after 30 days. The background job setup was surprisingly painless.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;What Went Wrong (But Not Really)&lt;/strong&gt;&lt;br&gt;
There were a couple of small hiccups:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Nested filtering in GraphQL took a minute to figure out. I wanted to get “all interviews tagged with ‘onboarding’ from the last month” and had to poke around a bit to structure the query right.&lt;/li&gt;
&lt;li&gt;I briefly messed up the permissions config. My own fault, not Gadget’s and accidentally let anyone delete entries. Luckily, their UI makes it easy to review access rules.&lt;/li&gt;
&lt;li&gt;Styling took longer than it should have (because I fuss over UI too much).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But honestly? Nothing broke. I never got stuck debugging some weird auth middleware or tracking down CORS issues. It felt like working downhill.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Thoughts&lt;/strong&gt;&lt;br&gt;
The user interview tracker is now used by design, product, and support. People log stuff casually after a call, tag it, and move on. During planning, we can quickly pull up real user voices sorted by theme.&lt;/p&gt;

&lt;p&gt;It’s simple. And it works.&lt;br&gt;
And I actually enjoyed building it.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Why I Switched from Supabase to Gadget for My Replit Projects</title>
      <dc:creator>Nate Sharma</dc:creator>
      <pubDate>Mon, 14 Jul 2025 18:41:00 +0000</pubDate>
      <link>https://dev.to/nate_sharma_/why-i-switched-from-supabase-to-gadget-for-my-replit-projects-3pgi</link>
      <guid>https://dev.to/nate_sharma_/why-i-switched-from-supabase-to-gadget-for-my-replit-projects-3pgi</guid>
      <description>&lt;p&gt;Most devs agree that Replit's built-in Neon database is not ideal. r/replit is full of complaints about losing access to the DB, randomly getting disconnected, the list goes on.&lt;/p&gt;

&lt;p&gt;For my new Replit projects, I want to find the perfect database solution. I need something where I can define my data models, and the rest is done for me. This mythical service would create tables based on my data models and generate the APIs that my frontend uses to read/write to the tables.&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.amazonaws.com%2Fuploads%2Farticles%2Fb0c4647hrefh0uo0m9v1.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.amazonaws.com%2Fuploads%2Farticles%2Fb0c4647hrefh0uo0m9v1.png" alt=" " width="800" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The first thing that came to mind was Supabase. The landing page proclaims that you can "Start your project with a Postgres database, Authentication and instant APIs". That's exactly what I was looking for.&lt;/p&gt;

&lt;p&gt;It was surprisingly easy to integrate Supabase with my Replit project. Supabase has a dedicated Replit page on their docs. I just followed the steps outlined there. &lt;/p&gt;

&lt;p&gt;Although the setup was frictionless, maintaining the database required investing a lot of time into learning Postgres. I was spending hours reading through the docs, figuring out how to index columns, set up read-only replicas and partition tables.&lt;/p&gt;

&lt;p&gt;I started to realize that Supabase is great for going from 0 to 1, but it doesn't fully automate the process of scaling your backend. You have to implement your own indexes, read-replicas and do everything else that goes into building a fast, reliable database. I have no employees at my startup, so I have to think about sales, customer support, the company finances, the product roadmap and a billion other things. As much as I'd love to dive into the docs and fine tune my DB, I don't have the time. I need a service that does all that for me.&lt;/p&gt;

&lt;p&gt;I found a web app building platform on X called Gadget. They offer the same table and API generation as Supabase, with the added bonus of handling the headache of making your backend fast and reliable. Gadget has 24/7 monitoring, database auto-indexing and 99.99% uptime. You can also build the app’s frontend with Gadget, but I’m invested in the Replit UI &amp;amp; agent. I won’t touch that part of Gadget for now. &lt;/p&gt;

&lt;p&gt;Gadget’s DX is excellent. Devs have been building for the web for 30 years. I can't believe that we're only now getting a crisp GUI that lets you build a database (something that pretty much every web app has). Even a non-dev like myself was able to understand what was going on without too much trouble.&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.amazonaws.com%2Fuploads%2Farticles%2Fqmskz2smhitakl7prfhv.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.amazonaws.com%2Fuploads%2Farticles%2Fqmskz2smhitakl7prfhv.png" alt=" " width="800" height="465"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Another awesome thing about Gadget was the assistant. Bill Gates once said “I choose a lazy person to do a hard job. Because a lazy person will find an easy way to do it.” Bill and I see eye to eye here. I am incurably lazy, which is why I used Gadget’s excellent assistant to do all the work for me. I took screenshots of my data models from Supabase and prompted the Gadget assistant to recreate models based on the attached images. In two minutes, I had recreated my Supabase database in Gadget.&lt;/p&gt;

&lt;p&gt;One killer feature is Gadget’s auto docs. This is an insanely helpful tool when I want to sync my Gadget backend with my Replit front end. Here’s an example of the docs explaining how to get a blog post by ID using the auto-generated API:&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.amazonaws.com%2Fuploads%2Farticles%2F71mszgfiwjwkba9fr8lz.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.amazonaws.com%2Fuploads%2Farticles%2F71mszgfiwjwkba9fr8lz.png" alt=" " width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Most docs are way too general to be of any help. The auto docs were great because I could just copy/paste the API calls into Replit without having to change the code in any way.&lt;/p&gt;

&lt;p&gt;I’m constantly inundated with ads for tools that get me from 0 to 1 in the blink of an eye. Supabase is great for getting a weekend project off the ground. I found that Gadget gives you the ability to go beyond a prototype, and build something that could get real traction. &lt;/p&gt;

&lt;p&gt;So that's what I think so far. Hit me up if you've also tried using Gadget with Replit, would love to hear how it went for you.&lt;/p&gt;

</description>
      <category>replit</category>
      <category>vibecoding</category>
      <category>webdev</category>
      <category>gadget</category>
    </item>
  </channel>
</rss>
