<?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: Carl Riedel</title>
    <description>The latest articles on DEV Community by Carl Riedel (@carlstarus).</description>
    <link>https://dev.to/carlstarus</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%2F4079022%2F7c9dcb22-8932-4763-b5ef-c3603f9fc553.png</url>
      <title>DEV Community: Carl Riedel</title>
      <link>https://dev.to/carlstarus</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/carlstarus"/>
    <language>en</language>
    <item>
      <title>I open-sourced a tiny PHP library that turns a photo into a Pinterest pin</title>
      <dc:creator>Carl Riedel</dc:creator>
      <pubDate>Sat, 15 Aug 2026 14:01:03 +0000</pubDate>
      <link>https://dev.to/carlstarus/i-open-sourced-a-tiny-php-library-that-turns-a-photo-into-a-pinterest-pin-3jfk</link>
      <guid>https://dev.to/carlstarus/i-open-sourced-a-tiny-php-library-that-turns-a-photo-into-a-pinterest-pin-3jfk</guid>
      <description>&lt;p&gt;Making Pinterest pins by hand does not scale. If you publish content and want a pin for every post, you want it in code.&lt;/p&gt;

&lt;p&gt;So I pulled the pin renderer out of my project and open-sourced it. It is pure PHP and GD, no dependencies, MIT licensed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="n"&gt;php&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;SyndiKit\Pin\PinImage&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nv"&gt;$pin&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;PinImage&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
    &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;font&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;__DIR__&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="s1"&gt;'/fonts/bold.ttf'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;accent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;88&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;214&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nv"&gt;$pin&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;save&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'photo.jpg'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'How to Grow Tomatoes in Pots'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'pin.webp'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'mysite.com'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Give it a photo and a title, and it renders a clean 1000x1500 pin, plus a 1.91:1 version for Open Graph and Twitter cards. The photo fills the top, an accent bar divides the frame, and the title auto-fits onto a readable panel.&lt;/p&gt;

&lt;p&gt;Install it with &lt;code&gt;composer require carlstarus/syndikit-pin&lt;/code&gt;, or just drop in the single class file.&lt;/p&gt;

&lt;p&gt;Repo: [(&lt;a href="https://github.com/carlstarus/syndikit-pin)" rel="noopener noreferrer"&gt;https://github.com/carlstarus/syndikit-pin)&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;It came out of building &lt;a href="https://getsyndikit.com" rel="noopener noreferrer"&gt;SyndiKit&lt;/a&gt;, which automatically builds and syndicates full content sites to Pinterest. Happy to answer questions about how the rendering works.&lt;/p&gt;

</description>
      <category>php</category>
      <category>opensource</category>
      <category>webdev</category>
      <category>showdev</category>
    </item>
    <item>
      <title>I open-sourced a tiny PHP library that turns a photo into a Pinterest pin.</title>
      <dc:creator>Carl Riedel</dc:creator>
      <pubDate>Sat, 15 Aug 2026 13:43:54 +0000</pubDate>
      <link>https://dev.to/carlstarus/i-open-sourced-a-tiny-php-library-that-turns-a-photo-into-a-pinterest-pin-3982</link>
      <guid>https://dev.to/carlstarus/i-open-sourced-a-tiny-php-library-that-turns-a-photo-into-a-pinterest-pin-3982</guid>
      <description>&lt;p&gt;&lt;strong&gt;SyndiKit Pin&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;SyndiKit Pin is a small, focused PHP library for generating Pinterest pins in code. Give it a photo and a headline, and it renders a clean 1000x1500 pin: the photo fills the top, an accent bar divides the frame, and the title sits on a readable panel with an optional brand line. It also renders a 1.91:1 image for Open Graph and Twitter cards. It uses nothing but PHP and the GD extension, so there is no external API, no monthly fee, and no dependencies to manage. MIT licensed and built by the team behind SyndiKit.&lt;/p&gt;

</description>
      <category>php</category>
      <category>webdev</category>
      <category>opensource</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
