<?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: Joseadrian Ochoa</title>
    <description>The latest articles on DEV Community by Joseadrian Ochoa (@joseadrian).</description>
    <link>https://dev.to/joseadrian</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%2F442907%2F0f45224a-6291-4c61-8a06-e0f9ee69fb6e.jpeg</url>
      <title>DEV Community: Joseadrian Ochoa</title>
      <link>https://dev.to/joseadrian</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/joseadrian"/>
    <language>en</language>
    <item>
      <title>pIRC: A minimalist IRC-style chat through email</title>
      <dc:creator>Joseadrian Ochoa</dc:creator>
      <pubDate>Sun, 08 Jun 2025 03:05:58 +0000</pubDate>
      <link>https://dev.to/joseadrian/pirc-a-minimalist-irc-style-chat-through-email-146b</link>
      <guid>https://dev.to/joseadrian/pirc-a-minimalist-irc-style-chat-through-email-146b</guid>
      <description>&lt;p&gt;This is a submission for the &lt;a href="https://dev.to/challenges/postmark"&gt;Postmark Challenge: Inbox Innovators&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built pIRC, an IRC (&lt;del&gt;Internet&lt;/del&gt;Inbox Relay Chat) client. &lt;/p&gt;

&lt;p&gt;A chat system that works over email. One can join and leave rooms, send messages to rooms and direct messages, &lt;del&gt;give likes to messages&lt;/del&gt;, update their account, etc. All anonymously to the participants in the rooms.  &lt;/p&gt;

&lt;p&gt;When I was younger I used to join chat rooms and it was fun. The nostalgia made me do it. &lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;There is no link because all is based on email. No test credentials.&lt;/p&gt;

&lt;p&gt;You can start using by sending an email to any username to @pirc.lat but to make things easier, send an email to &lt;a href="mailto:welcome@pirc.lat"&gt;welcome@pirc.lat&lt;/a&gt;. You will get a welcome email with the commands you can use. &lt;/p&gt;

&lt;h2&gt;
  
  
  Code Repository
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/joseadrian/pirc" rel="noopener noreferrer"&gt;https://github.com/joseadrian/pirc&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;I wanted to explore how much I could push what Postmark can do. Postmark handles the emails by processing them with their inbound streams. Once a message is sent to a room, all participants get an email using transactional emails and the bcc option instead of each one in separate emails, using the mustacho template. &lt;/p&gt;

&lt;p&gt;Tech used&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Backend: Cloudflare's Workers. Worker, worfklow and schedule&lt;/li&gt;
&lt;li&gt;Email Webhook: Postmark Inbound Stream&lt;/li&gt;
&lt;li&gt;Email delivery: Postmark Transactional Stream &lt;/li&gt;
&lt;li&gt;Database: SQLite (Cloudflare's D1)&lt;/li&gt;
&lt;li&gt;Email Template Engine: Postmark Template (Mustacho?)&lt;/li&gt;
&lt;li&gt;Domain &amp;amp; DNS: Namecheap &amp;amp; Cloudflare&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;First time using Cloudflare's workflow and schedule features.&lt;/p&gt;

&lt;p&gt;&lt;small&gt;I have no idea what I am doing&lt;/small&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjw97g3n5bllb4dvhhtva.jpg" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjw97g3n5bllb4dvhhtva.jpg" alt="Programmadog" width="800" height="509"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Postmark experience: &lt;br&gt;
This was a first with Postmark using their inbound parsing and message stream. I was really impressed. I didn't think my idea of using the plus addressing and subdomain addressing would work. That's was my first thing to test before putting the pieces together. The webhook setup was painless, and delivery was fast. I loved how reliable it was for both transactional and bulk emails. &lt;/p&gt;

&lt;p&gt;One minor problem though, it is likely due to email clients I used, Some don't seem to use the same separator that Postmark uses for the StrippedTextReply property from the payload, because it doesn't return something. Zoho and iOS tested so far. &lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>postmarkchallenge</category>
      <category>webdev</category>
      <category>api</category>
    </item>
  </channel>
</rss>
