<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: oahmadov</title><link>https://news.ycombinator.com/user?id=oahmadov</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 09 May 2026 03:17:55 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=oahmadov" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by oahmadov in "Show HN: I built an open-source email builder, alternative to Beefree/Unlayer"]]></title><description><![CDATA[
<p>Thank you!</p>
]]></description><pubDate>Fri, 08 May 2026 10:24:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=48061134</link><dc:creator>oahmadov</dc:creator><comments>https://news.ycombinator.com/item?id=48061134</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48061134</guid></item><item><title><![CDATA[New comment by oahmadov in "Show HN: I built an open-source email builder, alternative to Beefree/Unlayer"]]></title><description><![CDATA[
<p>Thanks for the star!</p>
]]></description><pubDate>Fri, 08 May 2026 08:52:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=48060457</link><dc:creator>oahmadov</dc:creator><comments>https://news.ycombinator.com/item?id=48060457</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48060457</guid></item><item><title><![CDATA[New comment by oahmadov in "Show HN: I built an open-source email builder, alternative to Beefree/Unlayer"]]></title><description><![CDATA[
<p>Thanks :)<p>I know each framework has its pros/cons, opinionated in a certain way. Vue is my favorite.<p>TipTap was the easy half. It's basically the go-to option when a good WYSIWYG editor is needed.</p>
]]></description><pubDate>Fri, 08 May 2026 08:51:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=48060455</link><dc:creator>oahmadov</dc:creator><comments>https://news.ycombinator.com/item?id=48060455</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48060455</guid></item><item><title><![CDATA[New comment by oahmadov in "Show HN: I built an open-source email builder, alternative to Beefree/Unlayer"]]></title><description><![CDATA[
<p>Holy shit, it's you! Thank you, that genuinely means a lot coming from you!<p>GrapesJS is the forever OG that proved this whole space could be an embeddable SDK rather than a paywalled SaaS. It also standardized the palette/canvas/inspector layout that every serious visual builder now ships by default — including Templatical. I took direct inspiration from a few other patterns too: the block-as-first-class-citizen model, and the trait system, which maps almost 1:1 to how Templatical's custom blocks expose typed fields into the inspector.<p>And yeah — agreed on MJML. Building email layouts that work for most clients is notoriously hard. I think the people who built MJML absorbed an enormous amount of pain so the rest of us don't have to.<p>Huge respect for what you built.</p>
]]></description><pubDate>Thu, 07 May 2026 18:26:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=48052951</link><dc:creator>oahmadov</dc:creator><comments>https://news.ycombinator.com/item?id=48052951</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48052951</guid></item><item><title><![CDATA[New comment by oahmadov in "Show HN: I built an open-source email builder, alternative to Beefree/Unlayer"]]></title><description><![CDATA[
<p>Happy to hear you found it useful. :)<p>I'd love to hear your feedback on what worked and what didn't. Feel free to open an issue or start a discussion on GitHub.</p>
]]></description><pubDate>Thu, 07 May 2026 09:59:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=48047497</link><dc:creator>oahmadov</dc:creator><comments>https://news.ycombinator.com/item?id=48047497</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48047497</guid></item><item><title><![CDATA[New comment by oahmadov in "Show HN: I built an open-source email builder, alternative to Beefree/Unlayer"]]></title><description><![CDATA[
<p>Thanks for the star :)<p>And yeah — at this stage every star is statistically significant, so anyone reading: appreciated.</p>
]]></description><pubDate>Thu, 07 May 2026 03:58:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=48045240</link><dc:creator>oahmadov</dc:creator><comments>https://news.ycombinator.com/item?id=48045240</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48045240</guid></item><item><title><![CDATA[New comment by oahmadov in "Show HN: I built an open-source email builder, alternative to Beefree/Unlayer"]]></title><description><![CDATA[
<p>People who know how painful email HTML is are the exact audience here. I believe MJML is the best thing that happened to emails — eliminates almost all the cross-client compatibility quirks.<p>If your team gives it a spin, I'd genuinely love their feedback.</p>
]]></description><pubDate>Thu, 07 May 2026 03:54:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=48045225</link><dc:creator>oahmadov</dc:creator><comments>https://news.ycombinator.com/item?id=48045225</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48045225</guid></item><item><title><![CDATA[New comment by oahmadov in "Show HN: I built an open-source email builder, alternative to Beefree/Unlayer"]]></title><description><![CDATA[
<p>Yes! If you attempt the migration, I'd love to hear your feedback on what worked and what didn't. GitHub Issues / Discussions both open.</p>
]]></description><pubDate>Thu, 07 May 2026 03:22:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=48045074</link><dc:creator>oahmadov</dc:creator><comments>https://news.ycombinator.com/item?id=48045074</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48045074</guid></item><item><title><![CDATA[New comment by oahmadov in "Show HN: I built an open-source email builder, alternative to Beefree/Unlayer"]]></title><description><![CDATA[
<p>Amazing to hear :)<p>If you ship your app with it, send a link — happy to feature it on the showcase page. Also, if you have existing HTML-based templates, try the @templatical/import-html package to convert them to Templatical JSON true — should get you a reasonably close starting point.</p>
]]></description><pubDate>Wed, 06 May 2026 22:58:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=48042996</link><dc:creator>oahmadov</dc:creator><comments>https://news.ycombinator.com/item?id=48042996</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48042996</guid></item><item><title><![CDATA[New comment by oahmadov in "Show HN: I built an open-source email builder, alternative to Beefree/Unlayer"]]></title><description><![CDATA[
<p>Thanks.<p>No — built from scratch on Vue 3 + TipTap, no React anywhere. Output is MJML, not the React-component-to-HTML approach React Email takes.<p>Adjacent category but no shared foundation: React Mail is a code-first library for devs to write emails as components; Templatical is an embedded visual editor for marketers to build them without touching code.</p>
]]></description><pubDate>Wed, 06 May 2026 20:58:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=48041739</link><dc:creator>oahmadov</dc:creator><comments>https://news.ycombinator.com/item?id=48041739</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48041739</guid></item><item><title><![CDATA[New comment by oahmadov in "Show HN: I built an open-source email builder, alternative to Beefree/Unlayer"]]></title><description><![CDATA[
<p>Thanks — yes on both, and both already exist today.<p>1. Custom block extensibility: full. You define a custom block as a schema — typed fields displayed in the editor (text, textarea, image, color, number, select, boolean, repeatable that contains basic fields) plus a Liquid template that emits HTML using those field values. The editor auto-renders the form for marketers to fill in, then runs the Liquid against those values to show a live preview on the canvas — so consumers don't write a Vue component themselves. The renderer wraps that HTML in <mj-text>, so it still goes through MJML's table layer for cross-client rendering. Optional dataSource.onFetch lets the block hit your API at render time, so use user can fetch custom block contents from existing data source — instead of having to manually type values into every field. Check out the docs and playground for custom blocks usage.<p>2. Headless render path: that's exactly what @templatical/renderer is. Separate package, zero UI dependency, pure JSON -> MJML conversion. You store the JSON tree in your storage; on the backend you pass it to renderToMjml() and get MJML back. Since MJML has compiler libraries in almost every language, you compile MJML to HTML yourself whenever. Currently the renderer is TypeScript-only (browser + Node.js); porting to other languages as first-party packages is on the roadmap.<p>The whole shape — store JSON in your DB, render at send time on your server, send via your own provider — is the transactional flow you described.</p>
]]></description><pubDate>Wed, 06 May 2026 20:03:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=48041022</link><dc:creator>oahmadov</dc:creator><comments>https://news.ycombinator.com/item?id=48041022</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48041022</guid></item><item><title><![CDATA[New comment by oahmadov in "Show HN: I built an open-source email builder, alternative to Beefree/Unlayer"]]></title><description><![CDATA[
<p>Thanks — this is exactly the audience I built it for.<p>The cross-client rendering thing is why Templatical outputs MJML instead of raw HTML. MJML was built to abstract all the
table-based, Outlook-2007-quirks, Gmail-strips-style nonsense — you write semantic blocks, MJML compiles to table HTML
that works across every major email client. So when your marketing person moves a block or changes a button color, it
doesn't silently break in Outlook two weeks later.<p>On sustainability — same concern. Even while I was building it, multiple times I caught myself asking "is this even worth theeffort? Maybe not with all the functionalities I've built, but someone could vibe-code a lightweight version of it in a day." But at the same time, I see and personally used SaaS products with the same or fewer features selling for $2,500/mo, which seems ridiculous.<p>I'm currently working on a subscription-based Cloud version, but only for things that actually need an infrastructure and backend: AI chat/rewrite, image-to-template conversion, MCP integration, hosted media gallery, saved modules, commenting, real-time collab, email testing, version history, etc. Sending stays your own provider — no per-contact, per-email, or per-delivery charges.</p>
]]></description><pubDate>Wed, 06 May 2026 19:34:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=48040642</link><dc:creator>oahmadov</dc:creator><comments>https://news.ycombinator.com/item?id=48040642</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48040642</guid></item><item><title><![CDATA[New comment by oahmadov in "Show HN: I built an open-source email builder, alternative to Beefree/Unlayer"]]></title><description><![CDATA[
<p>Yeah, I get what you mean about UI. But honestly that similarity is also a selling point — people are used to how visual editors look and work. Shipping a drastically different UI is a hard sell.<p>GrapesJS — the OG embeddable visual builder. Yes, I like it. I haven't used it recently, but I built production landing-page builders on top of it a while back.<p>I saw they also have an email builder now and checked it just now. Looks and works fine, but you can tell it's a retrofitted approach from a landing-page builder. With Templatical I wanted to build something from the ground up, email-only.</p>
]]></description><pubDate>Wed, 06 May 2026 18:30:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=48039816</link><dc:creator>oahmadov</dc:creator><comments>https://news.ycombinator.com/item?id=48039816</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48039816</guid></item><item><title><![CDATA[New comment by oahmadov in "Show HN: I built an open-source email builder, alternative to Beefree/Unlayer"]]></title><description><![CDATA[
<p>Hand-rolled in Vue 3 using Claude Code :)<p>I was considering IntroJS, but Claude Code generated a simpler version in ~120 lines — just @vueuse/core helpers (useLocalStorage, useIntervalFn) and focus-trap, no tour library.</p>
]]></description><pubDate>Wed, 06 May 2026 18:06:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=48039468</link><dc:creator>oahmadov</dc:creator><comments>https://news.ycombinator.com/item?id=48039468</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48039468</guid></item><item><title><![CDATA[New comment by oahmadov in "Show HN: I built an open-source email builder, alternative to Beefree/Unlayer"]]></title><description><![CDATA[
<p>No — built from scratch on Vue 3 + TipTap. Different data model entirely: Templatical stores templates as a typed JSON tree of blocks and renders them as MJML; GrapesJS is a generic HTML/CSS page-builder retrofitted for email via an MJML plugin.</p>
]]></description><pubDate>Wed, 06 May 2026 17:59:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=48039360</link><dc:creator>oahmadov</dc:creator><comments>https://news.ycombinator.com/item?id=48039360</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48039360</guid></item><item><title><![CDATA[New comment by oahmadov in "Show HN: I built an open-source email builder, alternative to Beefree/Unlayer"]]></title><description><![CDATA[
<p>No — and this is actually one of the real architectural differences from the closed-source competitors like Beefree and Unlayer.<p>The SDK is fully client-side — it runs in your app, the JSON templates go wherever you decide to store them (your DB, S3, anything). Nothing touches my infrastructure. SDK also has zero telemetry.<p>The Cloud tier on the roadmap (AI rewrite, real-time collab, MCP, saved modules, media library, comments) is opt-in — you only hit it if you actively sign up.</p>
]]></description><pubDate>Wed, 06 May 2026 17:55:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=48039306</link><dc:creator>oahmadov</dc:creator><comments>https://news.ycombinator.com/item?id=48039306</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48039306</guid></item><item><title><![CDATA[New comment by oahmadov in "Show HN: I built an open-source email builder, alternative to Beefree/Unlayer"]]></title><description><![CDATA[
<p>Thanks. Honestly, I hadn't heard of Maily until your comment :) Just spent a few minutes with it. Looks like a clean React-first editor.<p>I can't directly compare it with Maily, but what I see from first glance is that it is a minimalist email template editor that gets the job done. Please correct me if I'm wrong.<p>Beefree and Unlayer are paid services that offer powerful features like custom blocks, merge tags, display conditions, theming. The catch is most of those features sit behind enterprise tiers, and you're tied to their cloud render API to get HTML out.<p>Templatical aims for that same feature set, open-sourced and self-hostable. No vendor render API — output is MJML, which is battle-tested across the major email clients.<p>Check out the playground — it has
templates showcasing different features. See if it suits your use case.</p>
]]></description><pubDate>Wed, 06 May 2026 17:49:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=48039214</link><dc:creator>oahmadov</dc:creator><comments>https://news.ycombinator.com/item?id=48039214</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48039214</guid></item><item><title><![CDATA[Show HN: I built an open-source email builder, alternative to Beefree/Unlayer]]></title><description><![CDATA[
<p>Article URL: <a href="https://play.templatical.com">https://play.templatical.com</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48038019">https://news.ycombinator.com/item?id=48038019</a></p>
<p>Points: 157</p>
<p># Comments: 44</p>
]]></description><pubDate>Wed, 06 May 2026 16:20:00 +0000</pubDate><link>https://play.templatical.com</link><dc:creator>oahmadov</dc:creator><comments>https://news.ycombinator.com/item?id=48038019</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48038019</guid></item></channel></rss>