<?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: SM Shahbaj</title>
    <description>The latest articles on DEV Community by SM Shahbaj (@smshahbaj).</description>
    <link>https://dev.to/smshahbaj</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%2F3894885%2F1a1590ea-8d02-41ee-8375-4a8fe2973459.png</url>
      <title>DEV Community: SM Shahbaj</title>
      <link>https://dev.to/smshahbaj</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/smshahbaj"/>
    <language>en</language>
    <item>
      <title>I built a free AI-powered Linktree alternative that generates your page algorithmically — Xefna</title>
      <dc:creator>SM Shahbaj</dc:creator>
      <pubDate>Thu, 14 May 2026 18:07:31 +0000</pubDate>
      <link>https://dev.to/smshahbaj/i-built-a-free-ai-powered-linktree-alternative-that-generates-your-page-algorithmically-xefna-34ml</link>
      <guid>https://dev.to/smshahbaj/i-built-a-free-ai-powered-linktree-alternative-that-generates-your-page-algorithmically-xefna-34ml</guid>
      <description>&lt;p&gt;I got tired of every link-in-bio page looking exactly the same.&lt;/p&gt;

&lt;p&gt;You know the look — white background, rounded buttons stacked in a&lt;br&gt;
column, maybe a profile picture at the top. Linktree. Beacons.&lt;br&gt;
Bio.link. They all look identical. Your page looks like everyone&lt;br&gt;
else's page.&lt;/p&gt;

&lt;p&gt;So I built &lt;a href="https://xefna.com" rel="noopener noreferrer"&gt;Xefna&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Xefna?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://xefna.com" rel="noopener noreferrer"&gt;Xefna&lt;/a&gt; is a micro-site engine that uses AI and algorithmic design to&lt;br&gt;
generate a completely unique digital identity for every user — not&lt;br&gt;
a template, not a button list. It analyzes your content and builds&lt;br&gt;
a layout, color palette, and typography specifically for you.&lt;/p&gt;

&lt;p&gt;Every Xefna page looks like a custom-coded portfolio. No two pages&lt;br&gt;
look the same.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;You go to &lt;a href="https://xefna.com" rel="noopener noreferrer"&gt;xefna.com&lt;/a&gt; and hit &lt;strong&gt;Magic Start&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Type a short prompt or bio — something like &lt;em&gt;"I'm a music
producer and visual artist from Dhaka"&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;The AI engine extracts your brand essence and generates your
entire page — layout, colors, typography, structure&lt;/li&gt;
&lt;li&gt;You customize links and content in the visual editor&lt;/li&gt;
&lt;li&gt;Your page is live instantly at &lt;strong&gt;xefna.com/yourname&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The whole thing takes under 2 minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  What makes it different from Linktree
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Linktree&lt;/th&gt;
&lt;th&gt;Xefna&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Design&lt;/td&gt;
&lt;td&gt;Static button list&lt;/td&gt;
&lt;td&gt;Algorithmically generated&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Setup&lt;/td&gt;
&lt;td&gt;Manual&lt;/td&gt;
&lt;td&gt;AI-powered from a single prompt&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Uniqueness&lt;/td&gt;
&lt;td&gt;Everyone looks the same&lt;/td&gt;
&lt;td&gt;Every page is distinct&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Feel&lt;/td&gt;
&lt;td&gt;Generic&lt;/td&gt;
&lt;td&gt;Custom-coded portfolio&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Price&lt;/td&gt;
&lt;td&gt;Free tier&lt;/td&gt;
&lt;td&gt;Free tier&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  The tech stack
&lt;/h2&gt;

&lt;p&gt;For the devs curious about what's under the hood:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;React 19&lt;/strong&gt; + TypeScript + Vite (SPA)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Express&lt;/strong&gt; server for SSR meta tag injection (so profiles are
crawlable by Google and social platforms)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supabase&lt;/strong&gt; (PostgreSQL) for user data and profile storage&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloudflare Pages + CDN&lt;/strong&gt; for edge deployment globally&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Gemini AI&lt;/strong&gt; + &lt;strong&gt;OpenAI&lt;/strong&gt; for the Magic Start generator&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;motion/react&lt;/strong&gt; for micro-animations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tailwind CSS&lt;/strong&gt; for styling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The SSR part was the most interesting engineering challenge —&lt;br&gt;
since it's a React SPA, user profile pages at xefna.com/username&lt;br&gt;
needed to return real HTML to Googlebot and social crawlers&lt;br&gt;
(for OG previews). The Express server detects the User-Agent and&lt;br&gt;
injects pre-rendered HTML + meta tags before serving.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I learned building this
&lt;/h2&gt;

&lt;p&gt;This is a micro-startup I founded in April 2026. A few honest takeaways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SSR meta injection is underrated.&lt;/strong&gt; Most SPA tutorials skip
this entirely but it's critical for SEO and social sharing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI generation UX is hard.&lt;/strong&gt; Getting the prompt-to-page flow
to feel magical rather than frustrating took many iterations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloudflare Pages + Supabase is an incredible free stack.&lt;/strong&gt;
Zero infrastructure cost at this stage.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://xefna.com" rel="noopener noreferrer"&gt;xefna.com&lt;/a&gt;&lt;/strong&gt; — completely free, no credit card&lt;/p&gt;

&lt;p&gt;I'd genuinely love your feedback. Especially from devs — what&lt;br&gt;
would you want from a link-in-bio tool that you can't get from&lt;br&gt;
Linktree today?&lt;/p&gt;

&lt;p&gt;Drop a comment or reach out on X: &lt;strong&gt;@xefnalabs&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>showdev</category>
      <category>opensource</category>
      <category>startup</category>
    </item>
    <item>
      <title>Building a "Local-First" Expense Tracker with zero server costs</title>
      <dc:creator>SM Shahbaj</dc:creator>
      <pubDate>Thu, 23 Apr 2026 20:26:21 +0000</pubDate>
      <link>https://dev.to/smshahbaj/building-a-local-first-expense-tracker-with-zero-server-costs-6ih</link>
      <guid>https://dev.to/smshahbaj/building-a-local-first-expense-tracker-with-zero-server-costs-6ih</guid>
      <description>&lt;p&gt;As developers, we tend to follow a common practice: frontend + api + database. Yet, when I decided to develop the Sheet Manager application, I wanted to break this paradigm. I wanted to create an application which is 100% private, offline, and completely zero-cost.&lt;/p&gt;

&lt;p&gt;And Local-First architecture helped me achieve that.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Architecture
&lt;/h2&gt;

&lt;p&gt;There is no reason why your sensitive financial data should be stored on some PostgreSQL or MongoDB instance somewhere on the cloud. Instead, all of it is stored in the user's browser.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Persistence:&lt;/strong&gt; I implemented a wrapper for IndexedDB which allows us to handle very large sets of structured data (in comparison to LocalStorage). Plus, unlike LocalStorage, it does not block the main thread.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Performance:&lt;/strong&gt; Being client-side only makes our UI super responsive since there are no API calls and the latency becomes simply the execution of JavaScript code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Privacy:&lt;/strong&gt; This is the main advantage of local-first applications. I literally have no way of accessing the data users enter since it's being stored on their own computers. For a finance application, that's an incredible feature.&lt;/p&gt;

&lt;h2&gt;
  
  
  The "Zero-Cost" Infrastructure
&lt;/h2&gt;

&lt;p&gt;Can we make a production-ready application without any bills whatsoever?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hosting:&lt;/strong&gt; Using Cloudflare Pages and GitHub Pages as the frontend hosting services.&lt;br&gt;
&lt;strong&gt;Database:&lt;/strong&gt; Free (It's inside the user's browser).&lt;br&gt;
&lt;strong&gt;Analytics:&lt;/strong&gt; Keeping analytics light and simple to stay away from trackers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenges of Local-First Development
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;This was not as easy as it sounds. Developing without backend adds its challenges:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Data portability:&lt;/strong&gt; In case the user clears browser storage, how can we provide him/her with the option to import/export data? Implemented a JSON/CSV export/import system.&lt;br&gt;
&lt;strong&gt;Sync across multiple devices:&lt;/strong&gt; This is something I want to tackle soon by using WebRTC or Peer-to-Peer synchronization technologies._&lt;/p&gt;

&lt;h2&gt;
  
  
  Why did I develop this?
&lt;/h2&gt;

&lt;p&gt;In addition to being a software engineer, I'm also very privacy-conscious (I don't even use Facebook and Twitter). We over-engineered the idea of "the cloud" into every tiny utility. Sheet Manager became a proof that we don't necessarily need servers to develop beautiful dashboard-based applications.&lt;/p&gt;

&lt;p&gt;Take a look at the project yourself: &lt;strong&gt;&lt;a href="https://sheetmanager.com/" rel="noopener noreferrer"&gt;Sheet Manager&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What do you think about the idea of local-first development? How are you handling data persistence nowadays?&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>showdev</category>
      <category>productivity</category>
      <category>cloud</category>
    </item>
  </channel>
</rss>
