<?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: Joaquín Di Toma</title>
    <description>The latest articles on DEV Community by Joaquín Di Toma (@jditoma).</description>
    <link>https://dev.to/jditoma</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%2F3906370%2F280b066b-feeb-4dba-87bf-46d17b3a7a11.png</url>
      <title>DEV Community: Joaquín Di Toma</title>
      <link>https://dev.to/jditoma</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jditoma"/>
    <language>en</language>
    <item>
      <title>I built an overengineered micro-application with an MCP: an ephemeral link generator.</title>
      <dc:creator>Joaquín Di Toma</dc:creator>
      <pubDate>Thu, 30 Apr 2026 15:41:33 +0000</pubDate>
      <link>https://dev.to/jditoma/i-built-an-overengineered-micro-application-with-an-mcp-an-ephemeral-link-generator-1gl</link>
      <guid>https://dev.to/jditoma/i-built-an-overengineered-micro-application-with-an-mcp-an-ephemeral-link-generator-1gl</guid>
      <description>&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%2Fonetap.sh%2F_next%2Fimage%3Furl%3D%252Fadelante.png%26w%3D256%26q%3D75" 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%2Fonetap.sh%2F_next%2Fimage%3Furl%3D%252Fadelante.png%26w%3D256%26q%3D75" alt=" " width="256" height="258"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As a CTO, I code less and less every day.&lt;/p&gt;

&lt;p&gt;That’s just how it goes.&lt;/p&gt;

&lt;p&gt;But the itch to build? Still there. Strong as ever.&lt;/p&gt;

&lt;p&gt;We’re living in a weirdly beautiful moment where you can take almost any idea and push it to production in no time. And for now—just for now—those of us who’ve been doing this for a while still have an edge. We move faster. We know where things break.&lt;/p&gt;

&lt;p&gt;So I set myself a challenge:&lt;/p&gt;

&lt;p&gt;Build a series of micro SaaS products.&lt;br&gt;
Ship multiple times per quarter.&lt;br&gt;
Give them a shared aesthetic universe.&lt;/p&gt;

&lt;p&gt;Something playful. Slightly absurd.&lt;br&gt;
Somewhere between Bluey and &lt;a href="https://www.youtube.com/watch?v=ZD37ZPMTjPw" rel="noopener noreferrer"&gt;“Nice Guys Love You - Vol. 4&lt;/a&gt;” on YouTube.&lt;/p&gt;

&lt;p&gt;The first one (that I won’t talk about)&lt;/p&gt;

&lt;p&gt;The first product is already live.&lt;/p&gt;

&lt;p&gt;It’s a SaaS. It’s working.&lt;br&gt;
It’s even generating a pretty interesting liability.&lt;/p&gt;

&lt;p&gt;And it’s completely boring.&lt;/p&gt;

&lt;p&gt;So let’s skip it.&lt;/p&gt;

&lt;p&gt;The real problem&lt;/p&gt;

&lt;p&gt;We recently got ISO 27001 certified at my company.&lt;/p&gt;

&lt;p&gt;That meant:&lt;/p&gt;

&lt;p&gt;endless documentation&lt;br&gt;
process improvements&lt;br&gt;
security everywhere&lt;/p&gt;

&lt;p&gt;And also a very practical problem:&lt;/p&gt;

&lt;p&gt;How do you share sensitive information internally?&lt;/p&gt;

&lt;p&gt;a credit card&lt;br&gt;
an API key&lt;br&gt;
a private note&lt;br&gt;
or just a stupid meme you don’t want lingering forever&lt;br&gt;
Enter onetap.sh&lt;/p&gt;

&lt;p&gt;So I built onetap.sh.&lt;/p&gt;

&lt;p&gt;A dead-simple ephemeral link generator.&lt;/p&gt;

&lt;p&gt;Paste text or an image&lt;br&gt;
Get a link&lt;br&gt;
It can be opened once&lt;br&gt;
Then it’s gone&lt;/p&gt;

&lt;p&gt;No ads.&lt;br&gt;
No extra buttons.&lt;br&gt;
No friction.&lt;/p&gt;

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

&lt;p&gt;Pretty straightforward stack:&lt;/p&gt;

&lt;p&gt;Redis → stores the message&lt;br&gt;
Messages are encrypted (even I can’t read them)&lt;br&gt;
When the link is opened:&lt;br&gt;
the message is deleted from memory first&lt;br&gt;
then rendered in the DOM&lt;br&gt;
PostgreSQL → user management&lt;br&gt;
Vercel → everything else&lt;/p&gt;

&lt;p&gt;The important detail:&lt;br&gt;
the data is gone before you even see it.&lt;/p&gt;

&lt;p&gt;Why does this even have an MCP?&lt;/p&gt;

&lt;p&gt;Honestly?&lt;/p&gt;

&lt;p&gt;It probably doesn’t need one.&lt;/p&gt;

&lt;p&gt;I just wanted to build it.&lt;/p&gt;

&lt;p&gt;Maybe there’s a future where vibe coders are building apps and the AI goes:&lt;/p&gt;

&lt;p&gt;“You need ephemeral links? Use onetap.”&lt;/p&gt;

&lt;p&gt;Good enough for me.&lt;/p&gt;

</description>
      <category>product</category>
      <category>mcp</category>
      <category>iso</category>
      <category>27001</category>
    </item>
  </channel>
</rss>
