<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Open Source on Frontier.sh</title><link>https://frontier.sh/open-source/</link><description>Recent content in Open Source on Frontier.sh</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="https://frontier.sh/open-source/index.xml" rel="self" type="application/rss+xml"/><item><title>Sinkhole</title><link>https://frontier.sh/open-source/sinkhole/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://frontier.sh/open-source/sinkhole/</guid><description>&lt;div class="oss-intro">
&lt;img src="https://frontier.sh/images/sinkhole-logo.png" alt="Sinkhole" class="oss-intro__logo" />
&lt;p>Sinkhole is a zero-infrastructure email trap for staging environments. It runs as a Cloudflare Worker with D1 storage and a built-in web UI. Emails are POSTed over HTTP with no SMTP server needed.&lt;/p>
&lt;/div></description><content>&lt;div class="oss-intro">
&lt;img src="https://frontier.sh/images/sinkhole-logo.png" alt="Sinkhole" class="oss-intro__logo" />
&lt;p>Sinkhole is a zero-infrastructure email trap for staging environments. It runs as a Cloudflare Worker with D1 storage and a built-in web UI. Emails are POSTed over HTTP with no SMTP server needed.&lt;/p>
&lt;/div>
&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>When you&amp;rsquo;re building and testing applications, you don&amp;rsquo;t want real emails going out to real people. Sinkhole captures all outgoing mail from your app and stores it in a simple web UI where you can inspect and verify everything without it leaving your environment.&lt;/p>
&lt;p>It&amp;rsquo;s designed to run entirely on Cloudflare&amp;rsquo;s free tier. There are no servers, no SMTP, no Docker containers. Fork the repo, create your GitHub OAuth app to authenticate your team, deploy the Worker, and you&amp;rsquo;re all set.&lt;/p>
&lt;div class="hatched-frame">
&lt;img src="https://frontier.sh/open-source/20260331-sinkhole.jpeg" alt="Sinkhole in action" />
&lt;/div>
&lt;h2 id="features">Features&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>No SMTP required&lt;/strong> - Emails are sent via a simple HTTP POST, so there&amp;rsquo;s no mail server to configure or maintain&lt;/li>
&lt;li>&lt;strong>Built-in web UI&lt;/strong> - Browse, search, and inspect captured emails directly in your browser&lt;/li>
&lt;li>&lt;strong>Cloudflare Worker&lt;/strong> - Runs on the edge with D1 for storage and R2 for attachments, all within the free tier&lt;/li>
&lt;li>&lt;strong>GitHub OAuth&lt;/strong> - Restrict access to your GitHub org or a specific team&lt;/li>
&lt;li>&lt;strong>Channels&lt;/strong> - Separate captured emails by environment, project, or team&lt;/li>
&lt;li>&lt;strong>Attachment support&lt;/strong> - Attachments are stored in R2 and viewable from the UI&lt;/li>
&lt;li>&lt;strong>Laravel integration&lt;/strong> - A companion &lt;a href="https://github.com/frontier-sh/sinkhole-laravel">sinkhole-laravel&lt;/a> package makes it a tiny config change to capture all outgoing mail from any Laravel app&lt;/li>
&lt;/ul></content></item><item><title>Screenshooter</title><link>https://frontier.sh/open-source/screenshooter/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://frontier.sh/open-source/screenshooter/</guid><description>&lt;div class="oss-intro">
&lt;img src="https://frontier.sh/images/screenshooter-logo.png" alt="Screenshooter logo" class="oss-intro__logo" />
&lt;p>Screenshooter is a client-side tool for creating consistent, beautiful social media images. Upload a screenshot, pick a canvas size, tweak the effects, add text, and download a PNG, without leaving the browser.&lt;/p>
&lt;/div></description><content>&lt;div class="oss-intro">
&lt;img src="https://frontier.sh/images/screenshooter-logo.png" alt="Screenshooter logo" class="oss-intro__logo" />
&lt;p>Screenshooter is a client-side tool for creating consistent, beautiful social media images. Upload a screenshot, pick a canvas size, tweak the effects, add text, and download a PNG, without leaving the browser.&lt;/p>
&lt;/div>
&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>Creating good-looking OpenGraph images, Twitter banners, and other social graphics usually means opening a design tool, fiddling with templates, and exporting manually. Screenshooter strips that down to a single HTML page with no build step, no server, and no dependencies. Everything runs in the browser using HTML5 Canvas.&lt;/p>
&lt;p>Built entirely by Claude - initially with Sonnet 4, later improved with Opus 4.6.&lt;/p>
&lt;div class="hatched-frame">
&lt;img src="https://frontier.sh/open-source/20260331-screenshooter.jpeg" alt="Screenshooter in action" />
&lt;/div>
&lt;h2 id="features">Features&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Preset canvas sizes&lt;/strong> - Twitter Banner, Twitter Timeline, OpenGraph, 16:9, Email, or define your own custom dimensions&lt;/li>
&lt;li>&lt;strong>Image effects&lt;/strong> - Skew, grayscale, zoom, opacity, grain, and depth of field&lt;/li>
&lt;li>&lt;strong>Text overlays&lt;/strong> - Title and body text with customizable color, size, and alignment&lt;/li>
&lt;li>&lt;strong>PNG export&lt;/strong> - One-click download of the final image&lt;/li>
&lt;/ul></content></item></channel></rss>