<?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: Fidel de Jesus</title>
    <description>The latest articles on DEV Community by Fidel de Jesus (@fidel_dejesus_e1c87a543a).</description>
    <link>https://dev.to/fidel_dejesus_e1c87a543a</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4027946%2F771a652d-1df5-4bea-9d1c-482fb8efe068.png</url>
      <title>DEV Community: Fidel de Jesus</title>
      <link>https://dev.to/fidel_dejesus_e1c87a543a</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/fidel_dejesus_e1c87a543a"/>
    <language>en</language>
    <item>
      <title>I Replaced Photoshop With a Single API Call — Here's How</title>
      <dc:creator>Fidel de Jesus</dc:creator>
      <pubDate>Tue, 14 Jul 2026 02:02:07 +0000</pubDate>
      <link>https://dev.to/fidel_dejesus_e1c87a543a/i-replaced-photoshop-with-a-single-api-call-heres-how-460h</link>
      <guid>https://dev.to/fidel_dejesus_e1c87a543a/i-replaced-photoshop-with-a-single-api-call-heres-how-460h</guid>
      <description>&lt;p&gt;&lt;strong&gt;Your images shouldn't take 30 seconds to generate.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I was building a SaaS app and needed to generate branded images dynamically — social posts, certificates, promo banners, event tickets. The obvious approach was to use a design tool or image library.&lt;/p&gt;

&lt;p&gt;But every solution I tried was either:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Too slow (rendering took seconds)&lt;/li&gt;
&lt;li&gt;Too complex (SDK, auth tokens, config files)&lt;/li&gt;
&lt;li&gt;Too ugly (templated outputs that look like 2015)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I built &lt;strong&gt;SnapAssets&lt;/strong&gt; — an API that generates production-ready images in &lt;strong&gt;12 milliseconds&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Idea
&lt;/h2&gt;

&lt;p&gt;One endpoint. Send JSON. Get a PNG back. No auth. No SDK. No setup.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://assets.qbacode.com/api/v1/generate-asset &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "template": "promotional",
    "productName": "Pro Plan",
    "discount": "50% OFF",
    "originalPrice": "$99",
    "salePrice": "$49"
  }'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--output&lt;/span&gt; promo.png
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. You get a 1200x630 PNG in ~12ms.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Templates Are Available
&lt;/h2&gt;

&lt;p&gt;Right now there are &lt;strong&gt;5 templates&lt;/strong&gt;, each designed for a specific use case:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Basic
&lt;/h3&gt;

&lt;p&gt;OG images, social cards, blog headers. Clean, professional, branded.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://assets.qbacode.com/api/v1/generate-asset &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "template": "basic",
    "title": "How to Build Modern Web Applications",
    "description": "A comprehensive guide to fast, scalable apps.",
    "siteName": "blog.example.com",
    "primaryColor": "#0F172A",
    "accentColor": "#06B6D4"
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Promotional
&lt;/h3&gt;

&lt;p&gt;Flash sales, discount banners, product highlights. Strikethrough prices, sale badges, CTAs.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://assets.qbacode.com/api/v1/generate-asset &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "template": "promotional",
    "productName": "Premium Wireless Headphones",
    "discount": "50% OFF",
    "originalPrice": "$199.99",
    "salePrice": "$99.99",
    "primaryColor": "#ff3366",
    "accentColor": "#ffd23f"
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Certificate
&lt;/h3&gt;

&lt;p&gt;Awards, course completions, achievements. Gold seals, recipient names, instructor signatures.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://assets.qbacode.com/api/v1/generate-asset &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "template": "certificate",
    "recipientName": "John Smith",
    "courseName": "Advanced Web Development",
    "description": "For successfully completing the course with distinction",
    "completionDate": "March 7, 2026",
    "instructorName": "Dr. Jane Anderson",
    "primaryColor": "#0F172A",
    "accentColor": "#D4AF37"
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Event
&lt;/h3&gt;

&lt;p&gt;Tickets, conference passes, meetup invites. QR codes, attendee info, venue details.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://assets.qbacode.com/api/v1/generate-asset &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "template": "event",
    "eventName": "Tech Summit 2026",
    "eventDate": "March 15, 2026",
    "eventTime": "9:00 AM - 6:00 PM",
    "venue": "Convention Center - San Francisco",
    "attendeeName": "Alex Johnson",
    "ticketType": "VIP Access",
    "primaryColor": "#7c3aed",
    "accentColor": "#06b6d4"
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5. Summering
&lt;/h3&gt;

&lt;p&gt;Blog headers, news cards, article summaries. Image + title + description in a clean card.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://assets.qbacode.com/api/v1/generate-asset &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "template": "summering",
    "title": "Breaking News: Major Event",
    "description": "A brief summary of the news article.",
    "imageUrl": "https://example.com/image.jpg",
    "primaryColor": "#1982c4",
    "secondaryColor": "#6a4c93",
    "textColor": "#ffffff"
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;&lt;strong&gt;For developers:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No more fighting with image libraries&lt;/li&gt;
&lt;li&gt;No more "the designer is busy" bottleneck&lt;/li&gt;
&lt;li&gt;Generate thousands of unique images programmatically&lt;/li&gt;
&lt;li&gt;12ms response time — faster than your database query&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;For products:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dynamic OG images per user/content&lt;/li&gt;
&lt;li&gt;Auto-generated social cards for blog posts&lt;/li&gt;
&lt;li&gt;Personalized certificates at scale&lt;/li&gt;
&lt;li&gt;Event tickets with unique attendee info&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Tech Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Edge runtime&lt;/strong&gt; — cold starts don't exist&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;React Server Components&lt;/strong&gt; — template rendering&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Fonts&lt;/strong&gt; — loaded per request for proper typography&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No database&lt;/strong&gt; — stateless, infinitely scalable&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try It Right Now
&lt;/h2&gt;

&lt;p&gt;No signup. No API key. Just run this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-o&lt;/span&gt; test.png &lt;span class="s2"&gt;"https://assets.qbacode.com/api/v1/generate-asset?template=basic&amp;amp;title=Hello+World&amp;amp;siteName=test.com"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open &lt;code&gt;test.png&lt;/code&gt;. That's your image.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;More templates (og:image, twitter cards, youtube thumbnails)&lt;/li&gt;
&lt;li&gt;Custom template builder&lt;/li&gt;
&lt;li&gt;Webhook support for async generation&lt;/li&gt;
&lt;li&gt;SVG export&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;Live API:&lt;/strong&gt; assets.qbacode.com&lt;br&gt;
&lt;strong&gt;Video Demo:&lt;/strong&gt; &lt;a href="https://youtu.be/y_9p9eoYXm0" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If this saves you time.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
