<?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: Bugra Ergin</title>
    <description>The latest articles on DEV Community by Bugra Ergin (@bicibg).</description>
    <link>https://dev.to/bicibg</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%2F168566%2Fb9d3a850-3370-4197-8068-9e1b60715da2.jpg</url>
      <title>DEV Community: Bugra Ergin</title>
      <link>https://dev.to/bicibg</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bicibg"/>
    <language>en</language>
    <item>
      <title>How do you promote something you have built for fun without paying for ads?</title>
      <dc:creator>Bugra Ergin</dc:creator>
      <pubDate>Wed, 11 Mar 2026 11:28:00 +0000</pubDate>
      <link>https://dev.to/bicibg/how-do-you-promote-something-you-have-built-for-fun-without-paying-for-ads-3i9l</link>
      <guid>https://dev.to/bicibg/how-do-you-promote-something-you-have-built-for-fun-without-paying-for-ads-3i9l</guid>
      <description>&lt;p&gt;I would like to tell developers about something I have built. Every time I write a content that slightly mentions it, it gets flagged and removed immediately. I've tried posting articles on multiple platforms and subreddits. The content does fine on its own but the moment I mention my project it gets killed. As of now, my platform/tool is completely free and I want to keep it that way. I've built it for fun, as a hobby, not as a business so I don't want to have to run paid ads because that means I would have to charge people to cover the costs. So my question is, what do you guys to to get the word out about your projects without spending money on ads?&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>webdev</category>
      <category>sideprojects</category>
      <category>help</category>
    </item>
    <item>
      <title>You've never unit tested a regex and you know it</title>
      <dc:creator>Bugra Ergin</dc:creator>
      <pubDate>Wed, 11 Mar 2026 07:02:07 +0000</pubDate>
      <link>https://dev.to/bicibg/youve-never-unit-tested-a-regex-and-you-know-it-3244</link>
      <guid>https://dev.to/bicibg/youve-never-unit-tested-a-regex-and-you-know-it-3244</guid>
      <description>&lt;p&gt;We all use mailpit or mailtrap in development. Nobody sends real emails locally. That issue has been resolved for a long time.&lt;/p&gt;

&lt;p&gt;But email is the only problem we've solved. What about everything else? We just skip it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Email validation
&lt;/h2&gt;

&lt;p&gt;In production, your signup checks MX records and blocks disposable domains, among other things. In development, you type &lt;a href="mailto:test@test.com"&gt;test@test.com&lt;/a&gt; and move on.&lt;/p&gt;

&lt;p&gt;Here's the issue: someone owns test.com. They receive your test data. That address appears on over 1,500 blacklists because many developers use it.&lt;/p&gt;

&lt;p&gt;MX validation usually can't run correctly in most development setups. The DNS lookups fail when offline, and they fail with fake domains. Symfony has an open issue about turning off checkMX in test environments for this reason. So the one piece of validation that really matters gets shipped completely untested.&lt;/p&gt;

&lt;p&gt;Remember when HBO Max sent "Integration Test Email #1" to all their subscribers?&lt;/p&gt;

&lt;h2&gt;
  
  
  Regex
&lt;/h2&gt;

&lt;p&gt;You know the workflow. You go to regex101, test a few strings, everything looks good, then you paste it into code, commit, and push. No unit tests, ever.&lt;/p&gt;

&lt;p&gt;There's a library on GitHub called regex-tester. The whole message in the README is simple: "Because regular expressions are complex and error prone, and you probably don't unit test them." That's it. That's the main point. And honestly? That makes sense.&lt;/p&gt;

&lt;h2&gt;
  
  
  Character limits
&lt;/h2&gt;

&lt;p&gt;You have a 120-character company_name column in your database, but there's no maxlength on the form. It works fine in development because you always type "Test Company." But it breaks in production when someone pastes their full legal entity name.&lt;/p&gt;

&lt;p&gt;Microsoft added detailed truncation warnings as a key feature in SQL Server 2019 because the old error was so useless that no one could debug it. Emojis cut SMS limits from 160 to 70 characters. X's 280-character limit is really a byte limit that creates issues with multibyte characters. Entity Framework silently truncates without providing an error. This happens everywhere.&lt;/p&gt;

&lt;h2&gt;
  
  
  CORS
&lt;/h2&gt;

&lt;p&gt;Locally, you run the frontend and backend on the same origin. You might throw Access-Control-Allow-Origin: * on everything, use a browser extension, or launch Chrome with --disable-web-security.&lt;/p&gt;

&lt;p&gt;Then you deploy to real subdomains and spend your afternoon searching for CORS errors that didn't exist yesterday. I've seen senior developers waste an entire half-day on this. There's no straightforward way to test real cross-origin behavior locally.&lt;/p&gt;

&lt;h2&gt;
  
  
  SSL
&lt;/h2&gt;

&lt;p&gt;We've all done it: curl -k, NODE_TLS_REJECT_UNAUTHORIZED=0, verify=False, CURLOPT_SSL_VERIFYPEER =&amp;gt; false.&lt;/p&gt;

&lt;p&gt;It always seems "temporary." But then it ends up in the Dockerfile, then staging, and next, someone copies that config to production. Now your app trusts every certificate out there.&lt;/p&gt;

&lt;h2&gt;
  
  
  So what
&lt;/h2&gt;

&lt;p&gt;The Twelve-Factor App mentioned dev/prod parity back in 2011. We're still not following that advice.&lt;/p&gt;

&lt;p&gt;Production has real validation, real security, and real constraints. Development runs on assumptions and &lt;a href="mailto:test@test.com"&gt;test@test.com&lt;/a&gt;. The gap between the two is where your next production bug is hiding.&lt;/p&gt;

&lt;p&gt;The mailpit pattern works for more than email. Use tools that give real results but cost nothing and stay out of your way. I built some free utility APIs for exactly this (&lt;a href="https://apixies.io/playground" rel="noopener noreferrer"&gt;apixies.io&lt;/a&gt;) but honestly it doesn't matter which tool. It matters that you stop skipping the check entirely.&lt;/p&gt;

&lt;p&gt;If it only runs in production, it's not a check. It's a hope.&lt;/p&gt;

&lt;p&gt;What's the dumbest prod bug you've shipped that a simple check in dev would've caught?&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>testing</category>
      <category>discuss</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Your app validates emails in production but not in dev. What else are you skipping?</title>
      <dc:creator>Bugra Ergin</dc:creator>
      <pubDate>Tue, 10 Mar 2026 07:12:59 +0000</pubDate>
      <link>https://dev.to/bicibg/your-app-validates-emails-in-production-but-not-in-dev-what-else-are-you-skipping-kg1</link>
      <guid>https://dev.to/bicibg/your-app-validates-emails-in-production-but-not-in-dev-what-else-are-you-skipping-kg1</guid>
      <description>&lt;p&gt;We all use mailpit or mailtrap in dev. Nobody sends real emails locally. That's been solved forever.&lt;/p&gt;

&lt;p&gt;But email is the only thing we actually solved. Everything else? We just... skip it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Email validation
&lt;/h2&gt;

&lt;p&gt;In production your signup checks MX records, blocks disposable domains, all of it. In dev you type &lt;code&gt;test@test.com&lt;/code&gt; and move on with your life.&lt;/p&gt;

&lt;p&gt;Small problem: someone owns test.com. They receive your test data. That address shows up on 1,500+ blacklists because every developer on earth uses it.&lt;/p&gt;

&lt;p&gt;And MX validation can't even run properly in most dev setups. The DNS lookups fail offline, they fail with fake domains. Symfony has an open issue about disabling &lt;code&gt;checkMX&lt;/code&gt; in test environments for exactly this reason. So the one piece of validation that actually matters ships completely untested.&lt;/p&gt;

&lt;p&gt;Remember when HBO Max sent "Integration Test Email #1" to all their subscribers? Yeah.&lt;/p&gt;

&lt;h2&gt;
  
  
  Regex
&lt;/h2&gt;

&lt;p&gt;You know the workflow. regex101, three test strings, looks good, paste into code, commit, push. No unit test. Ever.&lt;/p&gt;

&lt;p&gt;There's a library on GitHub called regex-tester. The whole pitch in the README is one line: "Because regular expressions are complex and error prone and you probably don't unit test them." That's it. That's the selling point. And honestly? Fair enough.&lt;/p&gt;

&lt;h2&gt;
  
  
  Character limits
&lt;/h2&gt;

&lt;p&gt;120-char &lt;code&gt;company_name&lt;/code&gt; column in your database. No maxlength on the form. Works great in dev because you always type "Test Company." Blows up in prod when someone pastes their full legal entity name.&lt;/p&gt;

&lt;p&gt;Microsoft added verbose truncation warnings as a major feature in SQL Server 2019 because the old error was so useless nobody could debug it. Emojis cut SMS limits from 160 to 70 characters. Twitter's 280-char limit turned out to be a byte limit that breaks with multibyte characters. Entity Framework silently truncates without an error. This stuff is everywhere.&lt;/p&gt;

&lt;h2&gt;
  
  
  CORS
&lt;/h2&gt;

&lt;p&gt;Locally you run frontend and backend on the same origin. Or you throw &lt;code&gt;Access-Control-Allow-Origin: *&lt;/code&gt; on everything. Or you install that browser extension. Or you launch Chrome with &lt;code&gt;--disable-web-security&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Then you deploy to real subdomains and spend your afternoon googling CORS errors that didn't exist yesterday. I've seen senior devs lose half a day on this. There's just no clean way to test real cross-origin behavior locally.&lt;/p&gt;

&lt;h2&gt;
  
  
  SSL
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;curl -k&lt;/code&gt;&lt;br&gt;
&lt;code&gt;NODE_TLS_REJECT_UNAUTHORIZED=0&lt;/code&gt;&lt;br&gt;
&lt;code&gt;verify=False&lt;/code&gt;&lt;br&gt;
&lt;code&gt;CURLOPT_SSL_VERIFYPEER =&amp;gt; false&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;We've all done it. "Temporary." Then it's in the Dockerfile. Then staging. Then someone copies that config to prod and now your app trusts every cert on the planet.&lt;/p&gt;

&lt;h2&gt;
  
  
  So what
&lt;/h2&gt;

&lt;p&gt;The Twelve-Factor App told us about dev/prod parity in 2011. We're still not doing it.&lt;/p&gt;

&lt;p&gt;Production runs real validation, real security, real constraints. Dev runs on vibes and &lt;code&gt;test@test.com&lt;/code&gt;. The gap between those two is where your next production bug already lives.&lt;/p&gt;

&lt;p&gt;The mailpit pattern works for more than email. Use tools that give real results but cost nothing and stay out of your way. I built some free utility APIs for exactly this (&lt;a href="https://apixies.io/playground" rel="noopener noreferrer"&gt;apixies.io&lt;/a&gt;) but honestly it doesn't matter which tool. It matters that you stop skipping the check entirely.&lt;/p&gt;

&lt;p&gt;If it only runs in production, it's not a check. It's a hope.&lt;/p&gt;

&lt;p&gt;What's the dumbest prod bug you've shipped that a simple dev check would've caught?&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>discuss</category>
      <category>productivity</category>
      <category>testing</category>
    </item>
    <item>
      <title>I Built an MCP Server with 36 Developer Tools. Now Claude Does My Site Audits.</title>
      <dc:creator>Bugra Ergin</dc:creator>
      <pubDate>Thu, 26 Feb 2026 23:10:08 +0000</pubDate>
      <link>https://dev.to/bicibg/i-built-an-mcp-server-with-36-developer-tools-now-claude-does-my-site-audits-35lf</link>
      <guid>https://dev.to/bicibg/i-built-an-mcp-server-with-36-developer-tools-now-claude-does-my-site-audits-35lf</guid>
      <description>&lt;p&gt;I got tired of juggling browser tabs to check SSL certs, DNS records, security headers, and broken links. So I built an MCP server that lets Claude do it all.&lt;/p&gt;

&lt;p&gt;One config block. 36 tools. Here's what that actually looks like.&lt;/p&gt;

&lt;h2&gt;
  
  
  "Run a security audit on mysite.com"
&lt;/h2&gt;

&lt;p&gt;That's it. That's the prompt. Claude calls three APIs behind the scenes: SSL certificate check, security headers analysis, and email authentication (SPF, DKIM, DMARC). Ten seconds later I get a report with actual findings.&lt;/p&gt;

&lt;p&gt;I didn't build any orchestration logic. I gave Claude atomic tools and it figured out how to chain them together.&lt;/p&gt;

&lt;p&gt;Some other things I've been using this for:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bulk SSL monitoring:&lt;/strong&gt;&lt;br&gt;
"Check SSL certificates for stripe.com, github.com, and vercel.com. Flag anything expiring within 30 days."&lt;/p&gt;

&lt;p&gt;Claude loops through the list, calls &lt;code&gt;check_ssl&lt;/code&gt; for each, compares expiry dates, and gives me a summary table.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Screenshot comparison in Claude Code:&lt;/strong&gt;&lt;br&gt;
"Take a screenshot of our staging site and production site. Tell me if anything looks different."&lt;/p&gt;

&lt;p&gt;Claude captures both screenshots, then uses its vision to spot visual differences. No Playwright setup, no test scripts. Just a sentence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Email list cleaning:&lt;/strong&gt;&lt;br&gt;
"Read contacts.csv, validate every email in the 'email' column, create a new file with only the valid ones."&lt;/p&gt;

&lt;p&gt;Claude reads the file, calls &lt;code&gt;validate_email&lt;/code&gt; per row, writes the clean output. Took maybe 15 seconds for 200 rows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DNS migration check:&lt;/strong&gt;&lt;br&gt;
"We moved mysite.com to 203.0.113.50. Has the DNS propagated?"&lt;/p&gt;

&lt;p&gt;Claude calls &lt;code&gt;dns_lookup&lt;/code&gt;, checks the A record, tells me if it matches.&lt;/p&gt;
&lt;h2&gt;
  
  
  Setup takes 30 seconds
&lt;/h2&gt;

&lt;p&gt;Add this to your MCP client config:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"apixies"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"@apixies/mcp-server"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"env"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"APIXIES_API_KEY"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"your-key-here"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Config file locations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Claude Desktop (macOS):&lt;/strong&gt; &lt;code&gt;~/Library/Application Support/Claude/claude_desktop_config.json&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude Desktop (Windows):&lt;/strong&gt; &lt;code&gt;%APPDATA%\Claude\claude_desktop_config.json&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cursor:&lt;/strong&gt; &lt;code&gt;.cursor/mcp.json&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VS Code:&lt;/strong&gt; &lt;code&gt;.vscode/mcp.json&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Restart your client. 36 tools show up. Done.&lt;/p&gt;

&lt;p&gt;Free API key at &lt;a href="https://apixies.io/register" rel="noopener noreferrer"&gt;apixies.io/register&lt;/a&gt;. Works without one too (sandbox mode, 20 requests/day).&lt;/p&gt;

&lt;h2&gt;
  
  
  The full tool list
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Inspectors:&lt;/strong&gt; SSL checker, security headers, DNS lookup, email inspector, WHOIS, link checker, redirect tracer, meta tag extractor, robots.txt parser, favicon fetcher, URL validator, email auth validator, user agent parser, IP geolocation, website performance, JWT decoder.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Converters:&lt;/strong&gt; HTML to PDF, Markdown to HTML, JSON formatter, JSON to CSV, Base64 encode/decode, URL encode/decode, color converter, timestamp converter, phone formatter, JSON schema validator.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Generators:&lt;/strong&gt; QR code, screenshot, password, UUID, hash, lorem ipsum, URL shortener.&lt;/p&gt;

&lt;p&gt;Each one has a description that tells the AI when to use it. You don't pick tools manually. You describe what you want and Claude figures out which ones to call.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prompts worth trying
&lt;/h2&gt;

&lt;p&gt;Start simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Check the SSL certificate for github.com"&lt;/li&gt;
&lt;li&gt;"What DNS records does google.com have?"&lt;/li&gt;
&lt;li&gt;"Generate a 24-character password with symbols"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then try the multi-tool stuff:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Check SSL, headers, and performance for these 5 client sites. Give me a comparison table."&lt;/li&gt;
&lt;li&gt;"Take a screenshot of example.com and check if their OpenGraph meta tags are set up correctly."&lt;/li&gt;
&lt;li&gt;"Decode this JWT and tell me when it expires: eyJhbG..."&lt;/li&gt;
&lt;li&gt;"Scan all markdown files in ./docs/ for URLs and check if any are broken."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last one is my favorite. Claude finds every URL in your docs, calls the link checker for each, and reports which ones are dead. Would've taken me an hour to write as a script.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works (briefly)
&lt;/h2&gt;

&lt;p&gt;MCP is an open protocol from Anthropic. You define tools with a name, description, and parameter schema. The AI reads the descriptions and calls them when relevant.&lt;/p&gt;

&lt;p&gt;The server is a small TypeScript package. Each of the 36 API endpoints is registered as a tool with a Zod schema for input validation. When Claude calls a tool, the server makes an HTTP request to the Apixies API and returns the JSON response.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;npm:&lt;/strong&gt; &lt;a href="https://www.npmjs.com/package/@apixies/mcp-server" rel="noopener noreferrer"&gt;@apixies/mcp-server&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Setup guide:&lt;/strong&gt; &lt;a href="https://apixies.io/guides/getting-started-mcp-server" rel="noopener noreferrer"&gt;Getting Started&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API platform:&lt;/strong&gt; &lt;a href="https://apixies.io" rel="noopener noreferrer"&gt;apixies.io&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>security</category>
      <category>showdev</category>
    </item>
    <item>
      <title>I shared Apixies.io here a year ago with 5 APIs. It now has 39 endpoints and hit page 1 of Google.</title>
      <dc:creator>Bugra Ergin</dc:creator>
      <pubDate>Mon, 23 Feb 2026 08:40:45 +0000</pubDate>
      <link>https://dev.to/bicibg/i-shared-my-api-side-project-here-a-year-ago-it-now-has-39-endpoints-and-hit-page-1-of-google-4go9</link>
      <guid>https://dev.to/bicibg/i-shared-my-api-side-project-here-a-year-ago-it-now-has-39-endpoints-and-hit-page-1-of-google-4go9</guid>
      <description>&lt;p&gt;A year ago, I &lt;a href="https://dev.to/bicibg/introducing-apixiesio-a-free-toolbox-of-micro-apis-for-developers-4a2j"&gt;wrote about Apixies on Dev.to&lt;/a&gt;. A small collection of micro-APIs I was building because I kept needing the same utilities across projects. A few of you played around with it, left some great comments, and I just kept building.&lt;/p&gt;

&lt;p&gt;Here's what actually happened.&lt;/p&gt;

&lt;h2&gt;
  
  
  From 5 endpoints to 39
&lt;/h2&gt;

&lt;p&gt;The original post had five APIs: SSL checker, security headers, email inspector, user agent parser, and HTML-to-PDF. That was it.&lt;/p&gt;

&lt;p&gt;Since then I've added 34 more:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;DNS Lookup, WHOIS, Domain Availability&lt;/strong&gt; for the networking stuff I kept reaching for&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;QR Code Generator, Screenshot Capture, URL Shortener&lt;/strong&gt; for generating things&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JSON ↔ CSV, Base64, Markdown to HTML, Color Converter&lt;/strong&gt; for format conversion&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Text Analyzer, Word Counter, Hash Generator, Password Generator&lt;/strong&gt; for text and crypto&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IP Geolocation, HTTP Status Checker, Link Checker, Meta Tag Extractor&lt;/strong&gt; for inspection&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Full list at &lt;a href="https://apixies.io/docs/endpoints" rel="noopener noreferrer"&gt;apixies.io/docs/endpoints&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Every endpoint works the same way: one API key, same JSON envelope, predictable error handling. If you've used one Apixies endpoint, you already know how all of them work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Browser tools for everything
&lt;/h2&gt;

&lt;p&gt;This was the biggest change since the original post. Every single API now has a browser tool at &lt;a href="https://apixies.io/tools" rel="noopener noreferrer"&gt;apixies.io/tools&lt;/a&gt;. No signup, no API key, just use it.&lt;/p&gt;

&lt;p&gt;Need to check an SSL certificate? Go to the tool page, type a domain, get your answer. Need to validate an email? Same thing. Need to convert some JSON to CSV? Paste it in.&lt;/p&gt;

&lt;p&gt;I built these because most developers don't want to set up an API integration just to check one thing. The browser tools handle the quick one-off use case, and the API is there when you need to automate it.&lt;/p&gt;

&lt;h2&gt;
  
  
  A sandbox in the docs
&lt;/h2&gt;

&lt;p&gt;The documentation now has a live sandbox where you can test any endpoint with real parameters and see the actual response before writing any code.&lt;/p&gt;

&lt;p&gt;No fake data, no mocked responses. You hit the real API and see exactly what comes back.&lt;/p&gt;

&lt;h2&gt;
  
  
  What happened with traffic
&lt;/h2&gt;

&lt;p&gt;For the first couple of months after rebuilding the site: nothing. Basically zero impressions on Google.&lt;/p&gt;

&lt;p&gt;Then about two weeks ago, something clicked. The Google Search Console graph went vertical. Impressions jumped to over 3,000 a week. Average position dropped to 5.5, sometimes as low as 3. That's page one. The text analysis endpoint alone pulled over 1,500 impressions in a single week.&lt;/p&gt;

&lt;p&gt;Real companies started signing up. Developers from 77 countries have found the site. I even got a registration from a Swiss IT security company, which I definitely didn't expect.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'd tell the version of me who wrote the original post
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Build the free tools.&lt;/strong&gt; The browser tools are what Google indexes and what developers find when they search. They're the front door. The API is the product behind it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Consistency matters more than features.&lt;/strong&gt; Every endpoint returning the same JSON structure, using the same auth, handling errors the same way. That's what makes 39 APIs feel like one product instead of 39 random scripts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don't wait until it's perfect.&lt;/strong&gt; The original post had five endpoints and rough docs. Some of you still found it useful. If I'd waited until I had 39 endpoints to post anything, I'd probably still be building in silence.&lt;/p&gt;

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

&lt;p&gt;More endpoints. I have a backlog of ideas and community suggestions. More guides walking through real use cases. And keeping the free tier generous, because the whole point is that these utilities should just be easy to grab and use.&lt;/p&gt;

&lt;p&gt;If you want to try it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Browser tools&lt;/strong&gt; (no signup): &lt;a href="https://apixies.io/tools" rel="noopener noreferrer"&gt;apixies.io/tools&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Developer guides&lt;/strong&gt;: &lt;a href="https://apixies.io/guides" rel="noopener noreferrer"&gt;apixies.io/guides&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API docs&lt;/strong&gt;: &lt;a href="https://apixies.io/docs" rel="noopener noreferrer"&gt;apixies.io/docs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Free API key&lt;/strong&gt; (no credit card): &lt;a href="https://apixies.io/register" rel="noopener noreferrer"&gt;apixies.io/register&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'd love to hear what you think. And if there's a micro-API you keep wishing existed, tell me. The last batch of endpoints came directly from suggestions like that.&lt;/p&gt;

&lt;p&gt;Thanks for reading. And to those of you who checked it out a year ago, you're the reason I kept going.&lt;/p&gt;

&lt;p&gt;— Buğra&lt;br&gt;
&lt;a href="https://apixies.io" rel="noopener noreferrer"&gt;apixies.io&lt;/a&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>api</category>
      <category>webdev</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Programming is the Definition of ADHD</title>
      <dc:creator>Bugra Ergin</dc:creator>
      <pubDate>Tue, 27 May 2025 08:49:58 +0000</pubDate>
      <link>https://dev.to/bicibg/programming-is-the-definition-of-adhd-39f7</link>
      <guid>https://dev.to/bicibg/programming-is-the-definition-of-adhd-39f7</guid>
      <description>&lt;p&gt;So I was working on my daily job yesterday. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;I decided our PDF Generation code needs refactoring (a single Laravel service class)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Half way through the refactoring I realized we are using a deprecated library so I decided to upgrade the whole system to start using s more modern pdf Generation system&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Half an hour of coding later I realized it's probably better, before I do all the work, pdf Generation should probably be handled by a microservice&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can't do all that without the existing pdf templates. They need to move to the Microservice too. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I might as well refactor these to make things easier &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;PDF templates with blade files is so tedious to work with. I can't test what I am doing. We need a preview function but you can't have that in an API. Let's move this to the CMS &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I might as develop a PDF management tool in CMS with preview function &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I need seeders, factories, migrations &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Templates need to be translated into 4 languages but user might not know what language keys exist&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I need a template editor with variables and language keys auto fill.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can't be a good programmer and claim you don't have ADHD...&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>laravel</category>
    </item>
    <item>
      <title>Built Apixies.io as a hobby project to help devs with quick, focused APIs. Would love feedback or ideas on what to add next!</title>
      <dc:creator>Bugra Ergin</dc:creator>
      <pubDate>Tue, 20 May 2025 09:10:01 +0000</pubDate>
      <link>https://dev.to/bicibg/built-apixiesio-as-a-hobby-project-to-help-devs-with-quick-focused-apis-would-love-feedback-or-3ne7</link>
      <guid>https://dev.to/bicibg/built-apixiesio-as-a-hobby-project-to-help-devs-with-quick-focused-apis-would-love-feedback-or-3ne7</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/bicibg/introducing-apixiesio-a-free-toolbox-of-micro-apis-for-developers-4a2j" class="crayons-story__hidden-navigation-link"&gt;Introducing Apixies.io – A Free Toolbox of Micro APIs for Developers&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/bicibg" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F168566%2Fb9d3a850-3370-4197-8068-9e1b60715da2.jpg" alt="bicibg profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/bicibg" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Bugra Ergin
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Bugra Ergin
                
              
              &lt;div id="story-author-preview-content-2498925" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/bicibg" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F168566%2Fb9d3a850-3370-4197-8068-9e1b60715da2.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Bugra Ergin&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/bicibg/introducing-apixiesio-a-free-toolbox-of-micro-apis-for-developers-4a2j" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;May 18 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/bicibg/introducing-apixiesio-a-free-toolbox-of-micro-apis-for-developers-4a2j" id="article-link-2498925"&gt;
          Introducing Apixies.io – A Free Toolbox of Micro APIs for Developers
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/showdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;showdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/api"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;api&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/laravel"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;laravel&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/bicibg/introducing-apixiesio-a-free-toolbox-of-micro-apis-for-developers-4a2j" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;18&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/bicibg/introducing-apixiesio-a-free-toolbox-of-micro-apis-for-developers-4a2j#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              16&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            1 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>showdev</category>
      <category>api</category>
      <category>webdev</category>
      <category>laravel</category>
    </item>
    <item>
      <title>Introducing Apixies.io – A Free Toolbox of Micro APIs for Developers</title>
      <dc:creator>Bugra Ergin</dc:creator>
      <pubDate>Sun, 18 May 2025 11:10:49 +0000</pubDate>
      <link>https://dev.to/bicibg/introducing-apixiesio-a-free-toolbox-of-micro-apis-for-developers-4a2j</link>
      <guid>https://dev.to/bicibg/introducing-apixiesio-a-free-toolbox-of-micro-apis-for-developers-4a2j</guid>
      <description>&lt;p&gt;Hey devs! 👋&lt;/p&gt;

&lt;p&gt;I'm Buğra, a full-stack developer and CTO, and I've been working on a side project called Apixies.io. It's a collection of small, focused APIs designed to solve specific problems without unnecessary complexity.&lt;/p&gt;

&lt;p&gt;Currently, Apixies.io offers endpoints like:&lt;/p&gt;

&lt;p&gt;SSL Health Inspector: Check the SSL certificate status of any domain.&lt;/p&gt;

&lt;p&gt;Security Headers Inspector: Analyze HTTP security headers for best practices.&lt;/p&gt;

&lt;p&gt;Email Inspector: Validate and inspect email addresses for proper formatting and domain checks.&lt;/p&gt;

&lt;p&gt;User Agent Inspector: Parse and identify details from user agent strings.&lt;/p&gt;

&lt;p&gt;HTML to PDF Converter: Convert HTML content into PDF documents.&lt;/p&gt;

&lt;p&gt;All APIs are free to use, require no authentication for testing, and come with generous rate limits during the beta period. You can explore the full documentation and try them out here: &lt;a href="https://apixies.io" rel="noopener noreferrer"&gt;https://apixies.io&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm looking to expand this toolbox and would love your input:&lt;/p&gt;

&lt;p&gt;What micro APIs would be helpful in your projects?&lt;/p&gt;

&lt;p&gt;How's the user experience? Any suggestions for improvement?&lt;/p&gt;

&lt;p&gt;Would you be interested in collaborating to develop new APIs?&lt;/p&gt;

&lt;p&gt;Feel free to share your thoughts or suggest new endpoints directly on the site. Let's build something useful together!&lt;/p&gt;

&lt;p&gt;Thanks for checking it out!&lt;br&gt;
Buğra&lt;/p&gt;

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