<?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: Andrew Detwiler</title>
    <description>The latest articles on DEV Community by Andrew Detwiler (@adetwiler).</description>
    <link>https://dev.to/adetwiler</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%2F3922665%2Fedaf1385-07fd-44b2-97f6-d9d4fa513ef1.png</url>
      <title>DEV Community: Andrew Detwiler</title>
      <link>https://dev.to/adetwiler</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/adetwiler"/>
    <language>en</language>
    <item>
      <title>How I’m Building Personal Apps With AI, Next.js, SQLite, and Tailscale</title>
      <dc:creator>Andrew Detwiler</dc:creator>
      <pubDate>Sun, 10 May 2026 02:04:02 +0000</pubDate>
      <link>https://dev.to/adetwiler/how-im-building-personal-apps-with-ai-nextjs-sqlite-and-tailscale-2n40</link>
      <guid>https://dev.to/adetwiler/how-im-building-personal-apps-with-ai-nextjs-sqlite-and-tailscale-2n40</guid>
      <description>&lt;p&gt;For years, building custom software felt like something reserved for startups, funded teams, or companies with dedicated infrastructure.&lt;/p&gt;

&lt;p&gt;That’s changing fast.&lt;/p&gt;

&lt;p&gt;Today, you can build fully custom personal apps for yourself, your family, or a small team in an afternoon using AI. You don’t need cloud infrastructure. You don’t need Kubernetes. You don’t even need to deploy anything publicly.&lt;/p&gt;

&lt;p&gt;You can run modern web apps entirely on your own machine or on a small dedicated computer in your house, securely, and install them on your phone like native apps.&lt;/p&gt;

&lt;p&gt;I’ve been doing this myself for budgeting tools, meal planning apps, grocery lists, internal dashboards, and small tools that help organize things at home.&lt;/p&gt;

&lt;p&gt;And honestly, it works incredibly well. Most of these apps would have never been worth building for me a few years ago.&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%2Fqix2bj4j2aug1r28f2b9.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%2Fqix2bj4j2aug1r28f2b9.png" alt="Food Planner app" width="800" height="828"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  The Shift Happening Right Now
&lt;/h1&gt;

&lt;p&gt;The biggest change isn’t just AI generating code.&lt;/p&gt;

&lt;p&gt;It’s that the combination of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI coding models&lt;/li&gt;
&lt;li&gt;Modern frameworks like Next.js&lt;/li&gt;
&lt;li&gt;SQLite&lt;/li&gt;
&lt;li&gt;Progressive Web Apps (PWAs)&lt;/li&gt;
&lt;li&gt;Tailscale&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;has lowered the barrier so much that building personal software is now practical for regular developers.&lt;/p&gt;

&lt;p&gt;You no longer need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS infrastructure&lt;/li&gt;
&lt;li&gt;complicated authentication systems&lt;/li&gt;
&lt;li&gt;production-grade distributed databases&lt;/li&gt;
&lt;li&gt;app store deployments&lt;/li&gt;
&lt;li&gt;expensive SaaS subscriptions for every tiny need&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your app is only for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;yourself&lt;/li&gt;
&lt;li&gt;your family&lt;/li&gt;
&lt;li&gt;your friend group&lt;/li&gt;
&lt;li&gt;a small team&lt;/li&gt;
&lt;li&gt;your local business&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;you can simplify almost everything.&lt;/p&gt;

&lt;p&gt;And simplification changes the game.&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%2Fjwg6qsybnef71fd30mv7.jpg" 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%2Fjwg6qsybnef71fd30mv7.jpg" alt=" " width="800" height="753"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  What You’ll Need
&lt;/h1&gt;

&lt;p&gt;The stack is intentionally minimal.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. AI Coding Tool
&lt;/h2&gt;

&lt;p&gt;You can use:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ChatGPT&lt;/li&gt;
&lt;li&gt;Claude&lt;/li&gt;
&lt;li&gt;Cursor&lt;/li&gt;
&lt;li&gt;Windsurf&lt;/li&gt;
&lt;li&gt;anything capable of generating and modifying code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is really the only paid part depending on the model you use.&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%2Flmd9sgvhf1rdtbxkmyl8.jpg" 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%2Flmd9sgvhf1rdtbxkmyl8.jpg" alt=" " width="800" height="1738"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Next.js
&lt;/h2&gt;

&lt;p&gt;Next.js is perfect for this.&lt;/p&gt;

&lt;p&gt;You get:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;frontend&lt;/li&gt;
&lt;li&gt;backend API routes&lt;/li&gt;
&lt;li&gt;server rendering&lt;/li&gt;
&lt;li&gt;static assets&lt;/li&gt;
&lt;li&gt;routing&lt;/li&gt;
&lt;li&gt;PWA support&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;all in one project.&lt;/p&gt;

&lt;p&gt;No separate backend required.&lt;/p&gt;




&lt;h1&gt;
  
  
  3. SQLite
&lt;/h1&gt;

&lt;p&gt;For personal apps, SQLite is massively underrated.&lt;/p&gt;

&lt;p&gt;You do not need Postgres for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;grocery lists&lt;/li&gt;
&lt;li&gt;meal planners&lt;/li&gt;
&lt;li&gt;budgeting apps&lt;/li&gt;
&lt;li&gt;household management&lt;/li&gt;
&lt;li&gt;internal dashboards&lt;/li&gt;
&lt;li&gt;small team tools&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;a single file database&lt;/li&gt;
&lt;li&gt;zero infrastructure&lt;/li&gt;
&lt;li&gt;no database server&lt;/li&gt;
&lt;li&gt;extremely reliable storage&lt;/li&gt;
&lt;li&gt;backups as simple as copying a file&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And for personal applications, it’s more than enough.&lt;/p&gt;




&lt;h1&gt;
  
  
  4. Tailscale
&lt;/h1&gt;

&lt;p&gt;This is what makes the whole thing practical.&lt;/p&gt;

&lt;p&gt;Tailscale creates a private encrypted mesh network between your devices.&lt;/p&gt;

&lt;p&gt;Your app never has to be exposed publicly to the internet.&lt;/p&gt;

&lt;p&gt;You can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;host the app on your desktop&lt;/li&gt;
&lt;li&gt;run it on a mini PC&lt;/li&gt;
&lt;li&gt;keep it on an old laptop&lt;/li&gt;
&lt;li&gt;use a small home server&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;and securely access it from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;iPhone&lt;/li&gt;
&lt;li&gt;Android&lt;/li&gt;
&lt;li&gt;Mac&lt;/li&gt;
&lt;li&gt;Windows&lt;/li&gt;
&lt;li&gt;tablets&lt;/li&gt;
&lt;li&gt;laptops&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tailscale’s free tier supports up to 6 users, which is perfect for families or small teams.&lt;/p&gt;

&lt;p&gt;This is honestly one of the biggest unlocks for personal software development.&lt;/p&gt;




&lt;h1&gt;
  
  
  The Authentication Trick
&lt;/h1&gt;

&lt;p&gt;For personal apps, you don’t need enterprise auth.&lt;/p&gt;

&lt;p&gt;You don’t need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OAuth&lt;/li&gt;
&lt;li&gt;Auth0&lt;/li&gt;
&lt;li&gt;Clerk&lt;/li&gt;
&lt;li&gt;JWT complexity&lt;/li&gt;
&lt;li&gt;social logins&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the app only exists inside your private Tailscale network, you can simplify authentication dramatically.&lt;/p&gt;

&lt;p&gt;One approach I use often:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;create predefined users&lt;/li&gt;
&lt;li&gt;let the app ask “Who are you?”&lt;/li&gt;
&lt;li&gt;store the selected user locally&lt;/li&gt;
&lt;li&gt;treat that as authenticated&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That sounds wrong if you come from enterprise software.&lt;/p&gt;

&lt;p&gt;But context matters.&lt;/p&gt;

&lt;p&gt;Inside a private encrypted Tailscale network shared only with trusted users, this is often completely acceptable for personal tools.&lt;/p&gt;

&lt;p&gt;The result:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;almost zero auth complexity&lt;/li&gt;
&lt;li&gt;no external auth provider&lt;/li&gt;
&lt;li&gt;no monthly auth costs&lt;/li&gt;
&lt;li&gt;much faster development&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You stop overengineering software that only five people will ever use.&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%2Fx3tc0yt6tz8z9r9gdqys.jpg" 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%2Fx3tc0yt6tz8z9r9gdqys.jpg" alt=" " width="800" height="828"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Make It a PWA
&lt;/h1&gt;

&lt;p&gt;This part is important.&lt;/p&gt;

&lt;p&gt;When prompting the AI to build the app, include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;installable PWA support&lt;/li&gt;
&lt;li&gt;offline support where possible&lt;/li&gt;
&lt;li&gt;responsive mobile UI&lt;/li&gt;
&lt;li&gt;app manifest&lt;/li&gt;
&lt;li&gt;service worker setup&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This allows the web app to behave almost exactly like a native app.&lt;/p&gt;

&lt;p&gt;You can install it directly from the browser.&lt;/p&gt;

&lt;h2&gt;
  
  
  iPhone
&lt;/h2&gt;

&lt;p&gt;Use Safari → Share → Add to Home Screen&lt;/p&gt;

&lt;h2&gt;
  
  
  Android
&lt;/h2&gt;

&lt;p&gt;Install directly through Chrome&lt;/p&gt;

&lt;h2&gt;
  
  
  Mac and Windows
&lt;/h2&gt;

&lt;p&gt;Install directly from Chromium browsers&lt;/p&gt;

&lt;p&gt;Once installed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;it launches like a native app&lt;/li&gt;
&lt;li&gt;has its own icon&lt;/li&gt;
&lt;li&gt;runs fullscreen&lt;/li&gt;
&lt;li&gt;feels like a real application&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most non-technical users won’t even realize it’s a website.&lt;/p&gt;




&lt;h1&gt;
  
  
  Using MagicDNS
&lt;/h1&gt;

&lt;p&gt;Tailscale’s MagicDNS makes the experience even better.&lt;/p&gt;

&lt;p&gt;Instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;192.168.1.44:3000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You get:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mealplanner.tailnet-name.ts.net
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;budgetbox.tailnet-name.ts.net
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This makes your apps feel like real products instead of random local servers.&lt;/p&gt;




&lt;h1&gt;
  
  
  Example Apps That Work Extremely Well
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Family Apps
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Meal Planner
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;weekly meals&lt;/li&gt;
&lt;li&gt;shared grocery list&lt;/li&gt;
&lt;li&gt;pantry tracking&lt;/li&gt;
&lt;li&gt;recipe storage&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Budgeting App
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;monthly expenses&lt;/li&gt;
&lt;li&gt;sinking funds&lt;/li&gt;
&lt;li&gt;subscriptions&lt;/li&gt;
&lt;li&gt;shared family budgeting&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Household Dashboard
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;chores&lt;/li&gt;
&lt;li&gt;maintenance reminders&lt;/li&gt;
&lt;li&gt;schedules&lt;/li&gt;
&lt;li&gt;calendars&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Kids Dashboard
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;allowance tracking&lt;/li&gt;
&lt;li&gt;reading goals&lt;/li&gt;
&lt;li&gt;homework tracking&lt;/li&gt;
&lt;li&gt;screen time systems&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Small Team Apps
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Internal Tools
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;lightweight CRM&lt;/li&gt;
&lt;li&gt;project tracker&lt;/li&gt;
&lt;li&gt;sprint dashboard&lt;/li&gt;
&lt;li&gt;client management&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Studio Tools
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;asset trackers&lt;/li&gt;
&lt;li&gt;bug lists&lt;/li&gt;
&lt;li&gt;roadmap viewers&lt;/li&gt;
&lt;li&gt;release planning&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Content Pipelines
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;social post planners&lt;/li&gt;
&lt;li&gt;publishing trackers&lt;/li&gt;
&lt;li&gt;video pipelines&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Why This Matters
&lt;/h1&gt;

&lt;p&gt;We spent years forcing every software idea into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SaaS&lt;/li&gt;
&lt;li&gt;cloud hosting&lt;/li&gt;
&lt;li&gt;subscriptions&lt;/li&gt;
&lt;li&gt;scaling concerns&lt;/li&gt;
&lt;li&gt;public deployment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But most software ideas do not need to scale to millions of users.&lt;/p&gt;

&lt;p&gt;A huge percentage of useful software only needs to solve problems for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;one person&lt;/li&gt;
&lt;li&gt;one family&lt;/li&gt;
&lt;li&gt;one studio&lt;/li&gt;
&lt;li&gt;one team&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI makes custom software generation cheap.&lt;/p&gt;

&lt;p&gt;Modern frameworks make development fast.&lt;/p&gt;

&lt;p&gt;Tailscale makes networking easy.&lt;/p&gt;

&lt;p&gt;PWAs make distribution trivial.&lt;/p&gt;

&lt;p&gt;And SQLite removes infrastructure entirely.&lt;/p&gt;

&lt;p&gt;The result is that personal software development is entering a completely different era.&lt;/p&gt;




&lt;h1&gt;
  
  
  A Sample Prompt
&lt;/h1&gt;

&lt;p&gt;Here’s the type of prompt I’ll give an AI model:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Build a Next.js PWA for meal planning and grocery management.&lt;br&gt;
Use SQLite for storage.&lt;br&gt;
Use simple local authentication where the user selects their identity from predefined users.&lt;br&gt;
Design it mobile-first.&lt;br&gt;
Add installable PWA support.&lt;br&gt;
Include offline support for grocery lists.&lt;br&gt;
Optimize the UI for iPhone and desktop usage.&lt;br&gt;
Use TailwindCSS and shadcn/ui.&lt;br&gt;
Structure the app cleanly with reusable components and API routes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That alone can get you shockingly far now.&lt;/p&gt;




&lt;h1&gt;
  
  
  Final Thoughts
&lt;/h1&gt;

&lt;p&gt;I think we’re entering a phase where developers will increasingly build software specifically for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;their own lives&lt;/li&gt;
&lt;li&gt;their families&lt;/li&gt;
&lt;li&gt;their friend groups&lt;/li&gt;
&lt;li&gt;niche communities&lt;/li&gt;
&lt;li&gt;small businesses&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not everything needs to become a startup.&lt;/p&gt;

&lt;p&gt;Sometimes the best software is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;simple&lt;/li&gt;
&lt;li&gt;private&lt;/li&gt;
&lt;li&gt;local&lt;/li&gt;
&lt;li&gt;highly customized&lt;/li&gt;
&lt;li&gt;built for exactly the people using it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And for the first time in a long time, building those kinds of applications is actually easy.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Are You Building?
&lt;/h2&gt;

&lt;p&gt;If you’ve been building personal apps or experimenting with local-first setups, I’d honestly love to hear what you’re building or how you’re approaching it.&lt;/p&gt;

&lt;p&gt;I think this space is becoming more interesting every month.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>nextjs</category>
      <category>ai</category>
      <category>selfhosted</category>
    </item>
  </channel>
</rss>
