<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>App on Techformist</title>
    <link>https://techformist.com/tags/app/</link>
    <description>Recent content in App on Techformist</description>
    <image>
      <url>https://techformist.com/logo.svg</url>
      <link>https://techformist.com/logo.svg</link>
    </image>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Sat, 03 Jan 2026 06:30:00 +0000</lastBuildDate><atom:link href="https://techformist.com/tags/app/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Pexand - A Simple and Free Text Expander</title>
      <link>https://techformist.com/pexand-simple-free-text-expander/</link>
      <pubDate>Sat, 03 Jan 2026 06:30:00 +0000</pubDate>
      
      <guid>https://techformist.com/pexand-simple-free-text-expander/</guid>
      <description>&lt;p&gt;After years of building web apps where &amp;ldquo;performance&amp;rdquo; means a 2-second LCP and &amp;ldquo;local storage&amp;rdquo; is a suggestion, I have taken the last 2-3 months to explore how the desktop ecosystem has changed. Since I don&amp;rsquo;t like opening browsers masquerading as an app all the time, Rust and specifically Tauri looked great.&lt;/p&gt;
&lt;p&gt;However I did lean back on AI coding a lot more with my latest project - &lt;strong&gt;Pexand&lt;/strong&gt;. I wanted to try how much can I like the core desktop app building experience that I have not delved into for sometime.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>After years of building web apps where &ldquo;performance&rdquo; means a 2-second LCP and &ldquo;local storage&rdquo; is a suggestion, I have taken the last 2-3 months to explore how the desktop ecosystem has changed. Since I don&rsquo;t like opening browsers masquerading as an app all the time, Rust and specifically Tauri looked great.</p>
<p>However I did lean back on AI coding a lot more with my latest project - <strong>Pexand</strong>. I wanted to try how much can I like the core desktop app building experience that I have not delved into for sometime.</p>
<p>Pexand a text expander. It&rsquo;s written in Rust. And it&rsquo;s gloriously, unapologetically &ldquo;dumb.&rdquo;</p>
<h2 id="the-sentinel-is-watching">The &ldquo;Sentinel&rdquo; is Watching</h2>
<p>Most modern apps want to know your location, your mother&rsquo;s maiden name, and your favorite flavor of cloud storage. Pexand just wants to know if you typed <code>;shrug</code>.</p>
<p>The app just monitors key strokes and upon finding a pattern replaces the abbreviation with an expanded form. While the core design suggestions were by multiple AI agents, I did try to make the app blow up here and there.</p>
<p>The way it works is interesting -</p>
<ol>
<li>A background thread called the <strong>Sentinel</strong> sits in the background, quietly monitoring your keystrokes using Windows hooks, waiting for a trigger.</li>
<li>When the sentinel sees one, it reaches into a <strong>Radix Trie</strong> (because O(m) lookup is the only way to live) and swaps your shortcut for the real deal in under 5ms.</li>
</ol>
<p>And.. that&rsquo;s it.</p>
<p>Here&rsquo;s what it looks like.</p>
<p><img loading="lazy" src="/2026/pexand-text-expander-home.png" type="" alt="pexand-ui-screenshot"  /></p>
<h2 id="why-build-another-text-expander">Why build another text expander?</h2>
<ul>
<li><strong>Cloud Fatigue:</strong> I don&rsquo;t want my snippets synced to a server in Singapore. I want them in a local SQLite database that I own.</li>
<li><strong>The &ldquo;Dumb&rdquo; Factor:</strong> No AI. No &ldquo;smart&rdquo; suggestions. No collaboration features. Just: I type <code>;addr</code>, it gives me my address.</li>
<li><strong>Rust:</strong> Honestly? I just wanted to see if I could make a GUI app in Rust without losing my mind.</li>
</ul>
<h2 id="the-tech-stack">The Tech Stack</h2>
<p>Building a native Windows app in 2026 feels like a superpower with AI coding.</p>
<ul>
<li><strong>Iced:</strong> The GUI framework uses the Elm Architecture, which means state management did not actually make sense to me. But, something new for sure - no more &ldquo;is this component re-rendering because of a ghost prop?&rdquo;</li>
<li><strong>SQLite:</strong> Every snippet lives in a local <code>.db</code> file. It&rsquo;s ACID compliant, fast, and portable. If I want to move my snippets, I just move the file. I could also export / import snippets - just saying.</li>
<li><strong>Radix Trie:</strong> This was most unfamiliar to me. Instead of looping through a list of snippets every time you press a key, the app traverses a tree. It&rsquo;s fast!</li>
</ul>
<p>I deliberately chose a tech stack that I had been putting away for sometime now. AI coding makes everything fast - even making terrible mistakes.</p>
<p>I was surprised and dismayed at the same time on how coding agents have evolved and helped through the process. That&rsquo;s a story for another day.</p>
<h2 id="features-for-the-minimalist">Features for the Minimalist</h2>
<ul>
<li><strong>Dynamic Variables:</strong> Use <code>{{date}}</code> or <code>{{clipboard}}</code> to inject context on the fly.</li>
<li><strong>App Filtering:</strong> Want expansion in VS Code but not in your terminal? Just blacklist it.</li>
<li><strong>Fuzzy Search:</strong> The &ldquo;Dashboard&rdquo; (summoned with <code>Ctrl+Alt+Shift+P</code>) lets you find snippets even if you only remember half the trigger.</li>
</ul>
<h2 id="conclusion">Conclusion</h2>
<p>Pexand isn&rsquo;t going to change the world. It&rsquo;s not a &ldquo;platform.&rdquo; It&rsquo;s a tool.</p>
<p>It&rsquo;s for the people who still appreciate a single <code>.exe</code> that does one thing and one thing.. uh, better than average. Or, it&rsquo;s only for me, because I&rsquo;m tired of copying and pasting from Notepad++ every time.</p>
<p>Check out the code, or download the binary and start being efficiently lazy:
<a href="https://github.com/techformist/pexand">https://github.com/techformist/pexand</a></p>
]]></content:encoded>
    </item>
    
    <item>
      <title>Notocan is a simple, local Google Keep alternative</title>
      <link>https://techformist.com/notocan-simple-local-notes/</link>
      <pubDate>Thu, 02 Oct 2025 06:30:00 +0000</pubDate>
      
      <guid>https://techformist.com/notocan-simple-local-notes/</guid>
      <description>&lt;p&gt;After spending years 😏 building applications with Nuxt.js (and occasionally dipping into Next.js), I decided to take a step back to pure Vue 3 and create a.. lo and behold - a Google Keep alternative.&lt;/p&gt;
&lt;p&gt;Just kidding - the app is far more dumb.&lt;/p&gt;
&lt;h2 id=&#34;notocan-a-dumb-google-keep-alternative&#34;&gt;Notocan: A Dumb Google Keep Alternative&lt;/h2&gt;
&lt;p&gt;Notocan is what I like to say &amp;ldquo;deliberately dumb&amp;rdquo;, local and fast. It&amp;rsquo;s not trying to be the next big productivity platform with AI features, cloud sync complexity, or fancy collaboration tools. It&amp;rsquo;s just notes, done right in a browser window.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>After spending years 😏 building applications with Nuxt.js (and occasionally dipping into Next.js), I decided to take a step back to pure Vue 3 and create a.. lo and behold - a Google Keep alternative.</p>
<p>Just kidding - the app is far more dumb.</p>
<h2 id="notocan-a-dumb-google-keep-alternative">Notocan: A Dumb Google Keep Alternative</h2>
<p>Notocan is what I like to say &ldquo;deliberately dumb&rdquo;, local and fast. It&rsquo;s not trying to be the next big productivity platform with AI features, cloud sync complexity, or fancy collaboration tools. It&rsquo;s just notes, done right in a browser window.</p>
<p><img loading="lazy" src="/2025/notocan-keep-alternative.png" type="" alt="notocan-local-notes-in-browser"  /></p>
<p>tldr;</p>
<ul>
<li>Has it been done a million times? Yes.</li>
<li>Has it been done by me in the past? Probably, yes.</li>
<li>Will it deter me from building something dumb again. Absolutely not.</li>
</ul>
<p>The core features are straightforward:</p>
<ul>
<li>Create notes with titles and rich text content</li>
<li>Color-code your notes for visual organization</li>
<li>Pin important notes to keep them at the top</li>
<li>Archive notes you don&rsquo;t need anymore</li>
<li>Search through all your notes instantly</li>
<li>Keyboard navigation</li>
</ul>
<p>Check it out here:
<a href="https://notocan.techformist.com">https://notocan.techformist.com</a></p>
<p>If you are gungho about todo&rsquo;s and notes - Notocan is open source and available on <a href="https://github.com/prashanth1k/notocan">GitHub</a>.</p>
<p>Feel free to use the app, or just poke around the code!</p>
<h2 id="back-to-the-experience">Back to the Experience</h2>
<p>The experience though has been nothing short of refreshing. No more complex configurations, no more wrestling with SSR setups and errors, just pure Vue 3 with the Composition API.</p>
<p>The dev experience is incredibly fast - hot reload is instantaneous, compilation is lightning-quick, and the build process feels almost instantaneous.</p>
<p>It&rsquo;s amazing how much mental overhead you shed when you don&rsquo;t have to think about server-side rendering for a client-side notes app. Also, there are no accounts, no subscriptions, no worrying about data privacy or service outages.</p>
<p>Your notes live in your browser&rsquo;s IndexedDB, which means:</p>
<ul>
<li>Instant loading (no network calls)</li>
<li>Works offline perfectly</li>
<li>Your data stays yours</li>
<li>Migration from localStorage is handled automatically</li>
</ul>
<p>The IndexedDB implementation includes pagination for performance, so even with hundreds of notes, the app stays snappy.</p>
<p>Also, I can&rsquo;t say enough good things about DaisyUI. Every time I use it, I&rsquo;m reminded why it was my go-to UI library. The component system is thoughtful and the default styles just work without being overwhelming.</p>
<p>Combined with Tailwind CSS, DaisyUI makes building polished interfaces feel effortless. The color system, spacing, and component variants work together seamlessly. It&rsquo;s the kind of library that gets out of your way and lets you focus on building features, not fighting CSS. And, not having all the code in my repo mocking my design skills. I would like that mocking to be deep insite the node_modules thank you very much.</p>
<h2 id="conclusion">Conclusion</h2>
<p>Building Notocan reinforced some important lessons:</p>
<ol>
<li>Simple is indeed beautiful</li>
<li>I continue to be undeterred by no one using the applications I build</li>
</ol>
<p>If you need a simple notes app, check out Notocan - it might just become your new favorite way to jot down thoughts.</p>
]]></content:encoded>
    </item>
    
    <item>
      <title>TimeMomo - A Shared Timer App</title>
      <link>https://techformist.com/shared-timer-app-free-self-hosted/</link>
      <pubDate>Thu, 02 Oct 2025 06:30:00 +0000</pubDate>
      
      <guid>https://techformist.com/shared-timer-app-free-self-hosted/</guid>
      <description>&lt;p&gt;As someone who&amp;rsquo;s never been a huge fan of React, I found myself diving headfirst into building &lt;strong&gt;TimeMomo&lt;/strong&gt; - a real-time collaborative timer platform. This project was born out of a desire to learn more about modern web development stacks while creating something genuinely useful (for me, if no one else!).&lt;/p&gt;
&lt;p&gt;TimeMomo is designed for presenters, streamers, and event managers who need to share timers with audiences in real-time, without the complexity of traditional WebSocket implementations.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>As someone who&rsquo;s never been a huge fan of React, I found myself diving headfirst into building <strong>TimeMomo</strong> - a real-time collaborative timer platform. This project was born out of a desire to learn more about modern web development stacks while creating something genuinely useful (for me, if no one else!).</p>
<p>TimeMomo is designed for presenters, streamers, and event managers who need to share timers with audiences in real-time, without the complexity of traditional WebSocket implementations.</p>
<h2 id="what-is-timemomo">What is TimeMomo?</h2>
<p>TimeMomo is a collaborative timer application that allows users to create &ldquo;rooms&rdquo; where timers can be started, paused, and synchronized across all participants in real-time. Think of it as a professional timer platform for:</p>
<ul>
<li><strong>Presenters</strong> who need to manage speaking time during conferences</li>
<li><strong>Streamers</strong> who want to share countdowns with their audience</li>
<li><strong>Event managers</strong> coordinating multiple sessions</li>
<li><strong>Meeting facilitators</strong> keeping discussions on track</li>
</ul>
<p>The app features a clean, intuitive interface with room management, user authentication, and responsive design that works seamlessly on both desktop and mobile devices.</p>
<p>Using TimeMomo is simple.</p>
<p>Register &gt; Create a room &gt; Share the room URL with audience and presenters to see a common timer.</p>
<p><img loading="lazy" src="/2025/timemomo-timer.png" type="" alt="timemomo-timer"  /></p>
<p>It is an alternative to apps like stagetimer.io, but let&rsquo;s face it - there are many great apps and it&rsquo;s not a great alternative. TimeMomo happens to be the app I built.</p>
<p>Use it for free (well, limited to 3 concurrent rooms and ~100 participants).
<a href="http://timemomo.techformist.com/">http://timemomo.techformist.com/</a></p>
<p>Or, make the project your own! TimeMomo is open source and available on <a href="https://github.com/techformist/timemomo">GitHub</a>.</p>
<p>Try it out and let me know what you think!</p>
<h2 id="why-i-built-this">Why I Built This</h2>
<p>My motivation was twofold: <strong>learning</strong> and <strong>solving a real problem</strong>. Despite my reservations about React (I&rsquo;ve always preferred Vue/Nuxt), I wanted to challenge myself with Next.js to understand what all the hype was about. At the same time, I kept encountering situations where I needed a reliable timer that could be shared across devices without the hassle of screen sharing or manual coordination.</p>
<p>The idea crystallized when I realized how many professional settings could benefit from a real-time timer platform - from agile ceremonies to public speaking events. And since I&rsquo;m a big fan of keeping things simple, I wanted to build something that didn&rsquo;t require complex infrastructure.</p>
<h2 id="technology-choices-keeping-it-simple-and-powerful">Technology Choices: Keeping It Simple and Powerful</h2>
<h3 id="nextjs-facing-my-react-fears">Next.js: Facing My React Fears</h3>
<p>Choosing Next.js was a deliberate step outside my comfort zone. As someone who&rsquo;s struggled with React&rsquo;s verbosity and component lifecycle complexities, I approached this with skepticism. However, Next.js 15&rsquo;s improvements, combined with TypeScript, made the experience surprisingly smooth. The App Router and server components felt more intuitive than I expected, and the built-in optimization features handled performance concerns automatically.</p>
<h3 id="pocketbase-real-time-magic">PocketBase: Real-Time Magic</h3>
<p>This is where the project really shines. <strong>PocketBase is absolutely incredible</strong> for real-time applications. While I always appreciated the one-file philosophy for entire backend, I was blown away by how it handles live synchronization without needing to set up WebSocket servers or manage connection states. The real-time subscriptions API is so clean and reliable that I could focus on building features rather than infrastructure.</p>
<p>The decision to use PocketBase instead of traditional WebSockets was a game-changer. It simplified the architecture dramatically:</p>
<ul>
<li>No need for separate WebSocket servers</li>
<li>Built-in authentication and authorization</li>
<li>SQLite backend that&rsquo;s easy to deploy</li>
<li>Automatic real-time updates across all connected clients</li>
</ul>
<h3 id="shadcnui-the-ui-i-always-wanted">Shadcn/UI: The UI I Always Wanted</h3>
<p>If PocketBase is the backend hero, Shadcn is definitely the frontend star. The developer experience is exceptional - copy-paste components that just work, with full TypeScript support and excellent documentation.</p>
<h3 id="dokploy-deployment-adventures">Dokploy: Deployment Adventures</h3>
<p>Using Dokploy for the first time was an interesting experience. I always wanted the Vercel / Netlify experience at budget and this is certainly it. The ability to deploy both the Next.js frontend and PocketBase backend as containers with automated CI/CD made the whole process much smoother than traditional hosting setups.</p>
<h2 id="travails-and-turbulences-the-learning-curve">Travails and Turbulences: The Learning Curve</h2>
<p>Building TimeMomo wasn&rsquo;t without its challenges. As someone new to React/Next.js, I hit several roadblocks:</p>
<h3 id="react-learning-pains">React Learning Pains</h3>
<ul>
<li>Understanding React&rsquo;s component lifecycle and hooks took time</li>
<li>State management across real-time updates required careful planning</li>
<li>TypeScript integration had a learning curve, especially with complex types</li>
</ul>
<p>I am still not a fan.</p>
<h3 id="real-time-synchronization-headaches">Real-Time Synchronization Headaches</h3>
<ul>
<li>Love the real-time capabilities</li>
<li>Debugging hooks - not so much</li>
</ul>
<h3 id="deployment-drama">Deployment Drama</h3>
<ul>
<li>Dokploy&rsquo;s initial setup was trickier than expected</li>
<li>Docker networking between Next.js and PocketBase containers</li>
</ul>
<h2 id="and-finally-addressing-the-ai-in-the-room">And finally.. addressing the AI in the room</h2>
<p>AI tools were incredibly helpful throughout this project. I started out with Bolt, and switched to VSCode. Throughout the cycle, AI assistance was a game-changer for Next.js and Shadcn specifically. I was never very successful getting clean first versions out with Nuxt in the past, but with React I could certainly iterate much faster.</p>
<ul>
<li>Fast conversion of design ideas into working React components</li>
<li>Query issues during development</li>
<li>Get contextual answers for deployment issues</li>
</ul>
<h2 id="in-conclusion">In Conclusion</h2>
<p>This project taught me that sometimes stepping outside your comfort zone pays off. While I&rsquo;m still not a React convert, I now understand its strengths and can appreciate why it&rsquo;s so popular. The combination of Next.js + PocketBase + Shadcn proved to be incredibly productive.</p>
<p>Looking ahead, I&rsquo;m excited about the potential improvements:</p>
<ul>
<li>Nuxt 4 with Nuxt UI and Shadcn-Vue MCP (that AI-assisted Vue development I keep hearing about)</li>
<li>Laravel with Laravel Boost!</li>
</ul>
<p>My plans for this app? Well, not much - unless I see people really interested.</p>
]]></content:encoded>
    </item>
    
  </channel>
</rss>
