<?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: mawmawia</title>
    <description>The latest articles on DEV Community by mawmawia (@mawmawia).</description>
    <link>https://dev.to/mawmawia</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%2F3965092%2F5de57d08-f9c4-45ea-bea6-b8df0bcce606.jpg</url>
      <title>DEV Community: mawmawia</title>
      <link>https://dev.to/mawmawia</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mawmawia"/>
    <language>en</language>
    <item>
      <title>I got tired of jwt.io having no API, so I shipped one [102ms, Zero Auth]</title>
      <dc:creator>mawmawia</dc:creator>
      <pubDate>Wed, 03 Jun 2026 13:09:49 +0000</pubDate>
      <link>https://dev.to/mawmawia/i-got-tired-of-jwtio-having-no-api-so-i-shipped-one-102ms-zero-auth-5e8f</link>
      <guid>https://dev.to/mawmawia/i-got-tired-of-jwtio-having-no-api-so-i-shipped-one-102ms-zero-auth-5e8f</guid>
      <description>&lt;h2&gt;
  
  
  The problem every dev hits
&lt;/h2&gt;

&lt;p&gt;Testing JWT auth in CI/CD sucks. &lt;/p&gt;

&lt;p&gt;jwt.io is perfect but has no API. Auth0's JWT libs need setup. Most online tools rate limit you after 10 requests. You just want to decode or verify a token in a GitHub Action without installing 3 packages.&lt;/p&gt;

&lt;h2&gt;
  
  
  So I built RK JWT API #003
&lt;/h2&gt;

&lt;p&gt;6 actions. 1 endpoint. 102ms average response.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;decode&lt;/strong&gt; - Instantly decode any JWT. Returns header, payload, &lt;code&gt;expires_in_human&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;verify&lt;/strong&gt; - HS256/384/512 signature validation. Pass &lt;code&gt;secret&lt;/code&gt;, get &lt;code&gt;valid: true/false&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;verify_jwks&lt;/strong&gt; - RS256/384/512 via JWKS URL. Works with Auth0, Firebase, Supabase, Okta&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;sign&lt;/strong&gt; - Generate test JWTs. Custom payload, &lt;code&gt;expiresIn&lt;/code&gt;. Perfect for mocking auth&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;inspect&lt;/strong&gt; - Security audit. Detects &lt;code&gt;alg:none&lt;/code&gt;, expired tokens, clock skew. Returns &lt;code&gt;risk_score&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;bulk_decode&lt;/strong&gt; - Send 100 tokens, get results back. Built for log analysis&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Zero friction:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No API keys&lt;/li&gt;
&lt;li&gt;No signup &lt;/li&gt;
&lt;li&gt;CORS enabled&lt;/li&gt;
&lt;li&gt;Stateless - no logging, no tracking&lt;/li&gt;
&lt;li&gt;Every response includes &lt;code&gt;"by": "RK"&lt;/code&gt; so you know it worked&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Stack:&lt;/strong&gt; Vercel Edge Functions + &lt;code&gt;jose&lt;/code&gt;. Handles malformed JWTs and edge cases.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it right now
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Live:&lt;/strong&gt; &lt;a href="https://rapidapi.com/mawmawia/api/rk-jwt-api" rel="noopener noreferrer"&gt;https://rapidapi.com/mawmawia/api/rk-jwt-api&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Free tier:&lt;/strong&gt; 1k requests/month. No credit card.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quick test in cURL:&lt;/strong&gt;&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
bash
curl -X POST https://rk-jwt-api.p.rapidapi.com/api \
  -H "X-RapidAPI-Key: YOUR_RAPIDAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{"action":"decode","token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJSUyJ9.signature"}'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>api</category>
      <category>javascript</category>
      <category>jwt</category>
      <category>showdev</category>
    </item>
    <item>
      <title>I built an API that detects missed cron jobs without heartbeats</title>
      <dc:creator>mawmawia</dc:creator>
      <pubDate>Tue, 02 Jun 2026 19:39:38 +0000</pubDate>
      <link>https://dev.to/mawmawia/i-built-an-api-that-detects-missed-cron-jobs-without-heartbeats-321g</link>
      <guid>https://dev.to/mawmawia/i-built-an-api-that-detects-missed-cron-jobs-without-heartbeats-321g</guid>
      <description>&lt;h2&gt;
  
  
  The problem with heartbeat cron monitors
&lt;/h2&gt;

&lt;p&gt;Traditional tools like Healthchecks.io work like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Your cron job runs&lt;/li&gt;
&lt;li&gt;At the end, it pings a URL: &lt;code&gt;curl https://hc-ping.com/uuid&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;If the ping doesn't arrive, you get alerted&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;But what happens if your server crashes at step 1? Or the job OOMs before the curl command?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You get silence. And silence looks like success.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I lost client data when a backup cron failed silently for 6 days. The job never started, so it never pinged. No alert.&lt;/p&gt;

&lt;h3&gt;
  
  
  My solution: Schedule validation instead of heartbeats
&lt;/h3&gt;

&lt;p&gt;I built RK Cron Monitor. Instead of asking "did the job phone home?", it asks "should the job have run by now?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it works:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;At the end of your cron script, POST your &lt;code&gt;last_run_timestamp&lt;/code&gt; + cron expression&lt;/li&gt;
&lt;/ol&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
bash
curl -X POST https://api.rkcron.com/check \
  -H "Content-Type: application/json" \
  -d '{"cron": "0 2 * * *", "last_run": "2026-06-02T02:00:00Z"}'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>devops</category>
      <category>api</category>
      <category>javascript</category>
      <category>monitoring</category>
    </item>
    <item>
      <title>I built a free JSON repair API because ChatGPT keeps giving me broken JSON</title>
      <dc:creator>mawmawia</dc:creator>
      <pubDate>Tue, 02 Jun 2026 17:32:40 +0000</pubDate>
      <link>https://dev.to/mawmawia/i-built-a-free-json-repair-api-because-chatgpt-keeps-giving-me-broken-json-4o1i</link>
      <guid>https://dev.to/mawmawia/i-built-a-free-json-repair-api-because-chatgpt-keeps-giving-me-broken-json-4o1i</guid>
      <description>&lt;p&gt;I got tired of ChatGPT and Claude giving me this:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
json
{
  name: 'test', 
  active: true,
  tags: [a, b,] // comment
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>javascript</category>
      <category>api</category>
      <category>webdev</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
