<?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>Forem: Voiden</title>
    <description>The latest articles on Forem by Voiden (@voiden).</description>
    <link>https://forem.com/voiden</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%2Forganization%2Fprofile_image%2F11591%2F5a1a9b74-4c5d-4c74-b82c-7d3f8d0c8c71.png</url>
      <title>Forem: Voiden</title>
      <link>https://forem.com/voiden</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/voiden"/>
    <language>en</language>
    <item>
      <title>How to Keep API Docs Consistent with Reusable Blocks</title>
      <dc:creator>aldin</dc:creator>
      <pubDate>Thu, 16 Oct 2025 07:59:08 +0000</pubDate>
      <link>https://forem.com/voiden/how-to-keep-api-docs-consistent-with-reusable-blocks-5d74</link>
      <guid>https://forem.com/voiden/how-to-keep-api-docs-consistent-with-reusable-blocks-5d74</guid>
      <description>&lt;p&gt;&lt;em&gt;API docs a mess with endless updates and inconsistent formats? Still copy-pasting headers or error codes across endpoints? Use Voiden's built in reusable blocks feature to write modular components once, import them across the project, save time and avoid the frustration of debugging mismatched specs.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Trying to integrate an API, only to find the docs are a mess. We’ve probably all been there. It doesn't matter if it's a two-month-old startup or an established leader in the space. There's always something (s)lacking.&lt;/p&gt;

&lt;p&gt;One endpoint uses id, another user_id, and the error formats change depending on who wrote the page. It’s beyond frustrating, time-wasting, and leads to bugs. There's no single tool that can address and account for all the human-induced issues, but there are areas where we can start. Reusable blocks in Voiden can help solve parts of this issue. They’re simple, help save your time and keep your docs consistent across projects, and work offline in Git.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Inconsistent Docs Drive Devs Nuts
&lt;/h2&gt;

&lt;p&gt;There are more than a few reasons why API docs go stale quickly. Yet whatever the reasons may be, the effects are the same. Fru-stra-ti-on. On repeat.&lt;/p&gt;

&lt;p&gt;Partially, it has to do with the fact that no one deeply cares about API documentation as long as it works. People just take that it works well for granted. When it causes pain, well, that’s a whole other story.&lt;/p&gt;

&lt;p&gt;Devs have been venting about this for years, just check it out on X, Reddit, HN, anywhere really. If you haven’t experienced it first hand (I doubt it), here’s what it usually looks like:&lt;/p&gt;

&lt;p&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%2F611bjul0i67c9r53a9ud.png" 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%2F611bjul0i67c9r53a9ud.png" alt="rant #1" width="800" height="192"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&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%2Fhcfoo89drj1f4zzwjwbn.png" 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%2Fhcfoo89drj1f4zzwjwbn.png" alt="rant #2" width="800" height="265"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&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%2Fze3rdrsoixxmgt411m6j.png" 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%2Fze3rdrsoixxmgt411m6j.png" alt="rant #3" width="800" height="309"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&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%2Fzwk4rgjkdnyb9837axb4.png" 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%2Fzwk4rgjkdnyb9837axb4.png" alt="rant #4" width="800" height="107"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&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%2Fh7vtase2pwozg7di17sc.png" 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%2Fh7vtase2pwozg7di17sc.png" alt="rant #5" width="800" height="136"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There’s no fun in spending hours doing something that should have taken less than a few minutes. It’s as simple as that.&lt;/p&gt;

&lt;p&gt;These mismatches (different field names, outdated endpoints, version-specific gaps, etc.) force devs to debug docs instead of code. Reusable blocks, however, let you write common bits once and reuse them everywhere across the project, cutting out most of the causes for inconsistency in the first place.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reusable Blocks Remove Duplication and Inconsistencies
&lt;/h2&gt;

&lt;p&gt;Modularity becomes important when there are repetitive components across endpoints, and those are usually headers, query params, response objects, error codes, (environment) variables, etc.&lt;/p&gt;

&lt;p&gt;Let’s create small, modular chunks of API documentation in &lt;code&gt;.void&lt;/code&gt; files for a dummyjson &lt;code&gt;/posts&lt;/code&gt; endpoint. As a starting point, here’s the basic endpoint, with query parameters and documented basics:&lt;/p&gt;

&lt;p&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%2Fjy8cbazgxnjltx99240k.png" 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%2Fjy8cbazgxnjltx99240k.png" alt="Basic API documentation" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, if we were to add another &lt;code&gt;GET /objects&lt;/code&gt; request, we’d notice some of this stuff is already repeating.&lt;/p&gt;

&lt;p&gt;Let’s quickly define &lt;code&gt;BASE_URL&lt;/code&gt; within the &lt;code&gt;.env&lt;/code&gt; file and set its value to &lt;a href="https://dummyjson.com" rel="noopener noreferrer"&gt;https://dummyjson.com&lt;/a&gt;. To use it, just add the variable key in the double curly braces where you’re planning to use it.&lt;/p&gt;

&lt;p&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%2Fz9goyj0ds1d3rg7soee1.png" 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%2Fz9goyj0ds1d3rg7soee1.png" alt="Add environment variable" width="800" height="148"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Btw, make sure you’re using the correct environment for testing. Check below to see how to select it.&lt;/p&gt;

&lt;p&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%2F1340s7kr9tfurhdtvkzv.png" 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%2F1340s7kr9tfurhdtvkzv.png" alt="Select the environment" width="800" height="203"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, let’s create and import a reusable block named `query.void that holds query parameters.&lt;/p&gt;

&lt;p&gt;To create a query parameter table, type &lt;code&gt;/query&lt;/code&gt; and hit &lt;code&gt;Enter&lt;/code&gt;.&lt;/p&gt;

&lt;p&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%2F85gu1d0gbdvlx7jpt6gm.png" 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%2F85gu1d0gbdvlx7jpt6gm.png" alt="Create reusable API block" width="800" height="271"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Populate the key-value pairs and add some documentation, if need be.&lt;/p&gt;

&lt;p&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%2F9t8hl6sohud8u9aeng25.png" 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%2F9t8hl6sohud8u9aeng25.png" alt="Import reusable API block" width="800" height="351"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To reuse it, go to where you need the query params, type &lt;code&gt;@&lt;/code&gt;, select &lt;code&gt;Blocks&lt;/code&gt;, then pick the query params block, and hit &lt;code&gt;Enter&lt;/code&gt;.&lt;/p&gt;

&lt;p&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%2Fhjlg7z6fvak55tswvklo.png" 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%2Fhjlg7z6fvak55tswvklo.png" alt="Preview changes and custom blocks" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you ever need to edit it, just edit the reusable block, and the changes automatically apply wherever the block is imported.&lt;/p&gt;

&lt;p&gt;Oh, and if you need a custom query param for an endpoint, alongside the ones used across the board, just add a new query param table to the endpoint you’re testing. The same goes for headers and other reusable fields.&lt;/p&gt;

&lt;p&gt;That’s it. The same approach can be used for other reusable types of API request blocks, saving you tons of time on copy-pasting/typing, but also on applying the changes to these fields in the future and editing once instead of N times (N being the number of endpoints using any given field/object), making your API docs much more consistent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Let’s Look at the Pros
&lt;/h2&gt;

&lt;p&gt;Reusable blocks are like DRY for API documentation. Write an error format once, use it everywhere. If it changes, update one file, push to Git, and all docs stay consistent. It solves the pain of “reverse engineering JSON responses” by giving devs clear, predictable docs.&lt;/p&gt;

&lt;p&gt;Stripe’s docs show how it’s done. Endpoints use the same error and auth formats, no matter the service. You can tell they are at least trying to make it uniform across the platform, if not even reuse certain components to keep things tight.&lt;/p&gt;

&lt;p&gt;That is the goal: docs that feel like one voice, not a patchwork of team/mood styles.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It Out
&lt;/h2&gt;

&lt;p&gt;Install Voiden: &lt;a href="https://voiden.md/download" rel="noopener noreferrer"&gt;Download&lt;/a&gt; the offline app and set up an API repo.&lt;/p&gt;

&lt;p&gt;Document your first API endpoint: Start with a single API spec.&lt;/p&gt;

&lt;p&gt;Collaborate via Git: Use the in-app terminal to commit your changes, open a PR, and let your team review it using your existing Git tools.&lt;/p&gt;

&lt;p&gt;Join our &lt;a href="https://github.com/voidenhq/feedback" rel="noopener noreferrer"&gt;GitHub Discussions&lt;/a&gt; to share feedback and shape Voiden's future.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://voiden.md/download" rel="noopener noreferrer"&gt;Download&lt;/a&gt; Voiden and start building APIs the right way.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>api</category>
      <category>documentation</category>
      <category>programming</category>
    </item>
    <item>
      <title>API Documentation That Actually Helps Developers: Focus on Their Needs, Not Just the Checklist</title>
      <dc:creator>aldin</dc:creator>
      <pubDate>Thu, 02 Oct 2025 08:21:15 +0000</pubDate>
      <link>https://forem.com/voiden/api-documentation-that-actually-helps-developers-focus-on-their-needs-not-just-the-checklist-23b9</link>
      <guid>https://forem.com/voiden/api-documentation-that-actually-helps-developers-focus-on-their-needs-not-just-the-checklist-23b9</guid>
      <description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;APIs are meant to help solve business challenges, and docs are meant to help solve developers integrate them. This piece shares tips to craft API documentation that helps and supports developers.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Your API could be the best there is, but if the documentation doesn’t help developers, they’ll struggle and, likely, move on. Too often, teams rush documentation to meet deadlines or satisfy product managers, producing a bare-minimum guide that confuses users. Even when the intention is to write it properly, internal biases and assumptions kick in.&lt;/p&gt;

&lt;p&gt;Great documentation, on the other hand, puts users first. It’s designed around how users think, work, and solve problems. By understanding your userbase and looking your API through their eyes, you can create a guide that makes integration easy, boosts adoption, and cuts down on support questions saving everyone involved time and money.&lt;/p&gt;

&lt;p&gt;This article shares tips to craft API documentation that supports developers, focuses on their common tasks and workflows, and not on whatever the internal priorities may be.&lt;/p&gt;

&lt;h2&gt;
  
  
  Know Your Developers and Write for Them
&lt;/h2&gt;

&lt;p&gt;Great API documentation starts with knowing who’s using it. Developers have different needs: frontend folks might need examples for building user interfaces, backend engineers want detailed data structures, and QA teams care primarily about error handling.&lt;/p&gt;

&lt;p&gt;Spend time understanding what your developers need. Are they building mobile apps? Automating workflows? Testing integrations? Talk to developers, run surveys, and review support tickets. Their insights shape every word you write, even the format. Keep terminology and formatting consistent, like using the same style for endpoint descriptions, so developers can navigate without effort. And just avoid jargon.&lt;/p&gt;

&lt;p&gt;Don’t just write to satisfy a deadline or a PM’s checklist. Instead, make your opening section answer, “Why should developers care?” Show how your API solves their specific problems, whether it’s streamlining payments or fetching data faster. A simple and to-the-point overview grabs their attention and sets the tone.&lt;/p&gt;

&lt;p&gt;To make documentation truly useful, avoid standalone developer portals or hidden tabs that feel detached from coding. Rather, integrate API docs into developer workflows. Store them in a Git-based setup, alongside the codebase, so devs (yes, the users) can access and tailor docs locally for their needs in the same workflow they use for development. This lets them add examples of their own, track versions, spot outdated endpoint details, and keep docs in sync with their code changes.&lt;/p&gt;

&lt;p&gt;Let developers contribute to the docs to reflect their real-world use. This makes documentation a living resource, driven by how developers actually use the API, not just internal assumptions. By enabling easy updates and (local or actual) contributions, you give developers control, keeping docs accurate and relevant for their needs.&lt;/p&gt;

&lt;p&gt;By putting users’ needs first, you create documentation that feels like a trusted guide, not a mandatory deliverable that might likely already be outdated on day 2.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build a Structure Around How Developers Work
&lt;/h2&gt;

&lt;p&gt;Your documentation should match how developers approach your API, guiding them from their first glance to full integration.&lt;/p&gt;

&lt;p&gt;Start with a quickstart guide that gets them making a call in 3 minutes or less. Cover basics like getting an API key and sending a simple request, so even beginners can jump in. For the main reference, detail each endpoint with its method, path, purpose, parameters, types, limits, responses, and error codes.&lt;/p&gt;

&lt;p&gt;This gives developers a clear map, but it’s not enough to just list facts.&lt;/p&gt;

&lt;p&gt;Think about their workflow: what tasks do they tackle first? What problems do they need to solve?&lt;/p&gt;

&lt;h2&gt;
  
  
  Show the API in Action with Practical Examples
&lt;/h2&gt;

&lt;p&gt;Developers need to see your API solving their challenges. Create guides for tasks they do often, like paginating user lists, building a checkout flow, or integrating with a CRM - whichever it is.&lt;/p&gt;

&lt;p&gt;An error-handling section with common issues and fixes, like correcting a 401 error by checking the API key, helps them troubleshoot independently.&lt;/p&gt;

&lt;p&gt;Provide example apps/demos in public repositories. These ready-to-run apps, needing only a key swap, show real uses, like fetching user profiles or automating notifications. They let developers test-drive your API in a practical context, making adoption easier. By focusing on tasks developers care about, your documentation becomes a tool that brings the API to life.&lt;/p&gt;

&lt;p&gt;Write clearly, using short paragraphs and consistent formatting, and choose language that works for global audiences, keeping translation in mind.&lt;/p&gt;

&lt;p&gt;By making documentation easy to read, you help developers focus on building, not deciphering.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Here are a couple of pieces of advice when it comes to treating API docs:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Make API docs a core part of your APIs and revisit them regularly to keep the docs useful.&lt;/li&gt;
&lt;li&gt;Use versioning, as with your APIs, to support users on older versions while adding and documenting new features.&lt;/li&gt;
&lt;li&gt;Check content after API updates to keep it accurate and remove outdated details.&lt;/li&gt;
&lt;li&gt;Assign someone on your team to oversee documentation, ensuring it stays clear and consistent, even if it’s not their only job.&lt;/li&gt;
&lt;li&gt;Make documentation part of a broader API governance plan, where team-wide standards keep everything aligned.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Wrap-Up: Documentation That Works for Developers
&lt;/h2&gt;

&lt;p&gt;Great API documentation isn’t about meeting requirements or impressing managers. By understanding developer needs, focusing on their tasks and workflows, and listening to their feedback, organizations create guides that make their APIs easy to use and adopt.&lt;/p&gt;

&lt;p&gt;In order to get there, use clear language, practical examples, and a structure that matches how developers work. As you write or update your documentation, keep developers’ needs at the heart of every choice, ensuring your API becomes their go-to solution.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
      <category>documentation</category>
      <category>api</category>
    </item>
    <item>
      <title>Streamline API Testing with Reusable Building Blocks</title>
      <dc:creator>aldin</dc:creator>
      <pubDate>Wed, 17 Sep 2025 12:59:57 +0000</pubDate>
      <link>https://forem.com/voiden/streamline-api-testing-with-reusable-building-blocks-23ao</link>
      <guid>https://forem.com/voiden/streamline-api-testing-with-reusable-building-blocks-23ao</guid>
      <description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;Create reusable API request blocks in Voiden to eliminate repetition, streamline testing, and run locally for instant feedback.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Repetition, a time-churning enemy of developers. Remember the time when copy-pasting code was a universal problem in software engineering? Then abstractions came and solved it (functions, libraries, frameworks, etc).&lt;/p&gt;

&lt;p&gt;API tooling, however, still grapples with a similar problem: redefining the same authentication tokens, headers, or parameters for every endpoint test. This manual repetition wastes time and invites errors. Copying and pasting all across the collections is somehow considered a way to get things done faster?! Tabs keep the truth across the tools, along with half a dozen other tooling “necessary” to wrap it all up.&lt;/p&gt;

&lt;p&gt;Well, Voiden has now removed the duplication from API tooling, applying the DRY (Don’t Repeat Yourself) principle, streamlining workflows, and giving developers control over their API testing process.&lt;/p&gt;

&lt;h2&gt;
  
  
  From Code to APIs: The Repetition Problem
&lt;/h2&gt;

&lt;p&gt;In the (relatively) early days of software engineering, developers routinely copied and pasted code for common tasks like string manipulation, file handling, sorting algorithms - you name it. A single change that introduces a change in logic meant updating every instance manually. A paradigm change helped build reusable structures, sharing them across the project (or across different projects, even).&lt;/p&gt;

&lt;p&gt;In today’s API tooling, testing an API means creating collections where each request often requires redefining the same authentication tokens, headers, or query parameters.&lt;/p&gt;

&lt;p&gt;Need to test 50 endpoints?&lt;/p&gt;

&lt;p&gt;You’re either manually setting up OAuth2 tokens or rate-limit headers for each one, or copying and pasting across requests. Collections and environments do help, but they still require manual duplication across workspaces or teams.&lt;/p&gt;

&lt;p&gt;Voiden.md solves this by bringing software engineering’s modular philosophy to API testing. Its reusable API blocks let you define common elements such as headers, query parameters, etc., and reuse them across your projects, just like you would do in the codebase. Voiden centralizes your workflow in a single, offline, Git-tracked workspace, giving you control and eliminating the repetitive chaos.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Voiden’s Reusable Blocks Work
&lt;/h2&gt;

&lt;p&gt;Voiden lets you define common repetitive API elements, like authentication tokens or query parameters, in its .void files, and you can import these blocks into other .void files. These files are simple Markdown files, simplifying documentation of the APIs, just adjusted for Voiden execution.&lt;/p&gt;

&lt;p&gt;This approach eliminates the repetitive setup needed (at the moment of writing this blog post) in every alternative API tool out there.&lt;/p&gt;

&lt;p&gt;Let’s say you’re testing the DummyJSON API’s endpoints (e.g., a &lt;a href="https://dummyjson.com/docs/posts" rel="noopener noreferrer"&gt;https://dummyjson.com/docs/posts&lt;/a&gt; ), which enables filtering results by using query parameters.&lt;/p&gt;

&lt;p&gt;Here’s how to create a reusable block in Voiden:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Hit the &lt;code&gt;Ctrl/Cmd+Enter&lt;/code&gt; to create a new project file

&lt;ol&gt;
&lt;li&gt;You can name it &lt;code&gt;query.void&lt;/code&gt; and save it with &lt;code&gt;Ctrl/Cmd + S&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;

&lt;li&gt;Add a markdown title to describe the file

&lt;ol&gt;
&lt;li&gt;Type &lt;code&gt;##&lt;/code&gt; for &lt;code&gt;H2&lt;/code&gt; styling and add &lt;em&gt;Reusable Query Params Block&lt;/em&gt;, for example&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;

&lt;li&gt;Type &lt;code&gt;/query&lt;/code&gt; and hit &lt;code&gt;Enter&lt;/code&gt;

&lt;ol&gt;
&lt;li&gt;That will create an &lt;code&gt;HTTP&lt;/code&gt; query params key-value table&lt;/li&gt;
&lt;li&gt;Now populate the table with limit and skip fields along with their values&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;

&lt;li&gt;Optionally, document the fields from the query params table&lt;/li&gt;

&lt;/ol&gt;

&lt;p&gt;You should see something like this:&lt;/p&gt;

&lt;p&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%2Fvlkrics4l2pu16trfdmv.png" 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%2Fvlkrics4l2pu16trfdmv.png" alt="Query params block in Voiden" width="512" height="168"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now you’re ready to use this without having to type it all over again across the project by simply importing it.&lt;/p&gt;

&lt;p&gt;Let’s say we already created a flow for triggering the &lt;code&gt;/posts&lt;/code&gt; endpoint, but we want to add the query parameters on top of it. (If not, you can learn &lt;a href="https://voiden.md/blog/collaborate-on-apis-with-git-not-saas" rel="noopener noreferrer"&gt;here&lt;/a&gt; how to do that)&lt;/p&gt;

&lt;p&gt;You should already see something like this:&lt;/p&gt;

&lt;p&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%2Furq62nb1hofczn8tx8cb.png" 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%2Furq62nb1hofczn8tx8cb.png" alt="Voiden API endpoint definition" width="512" height="222"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To import query params block type &lt;code&gt;@&lt;/code&gt;, select &lt;code&gt;Blocks&lt;/code&gt;, select the name of the block file (in this case, &lt;code&gt;query.void&lt;/code&gt;), and finally select the block you want to import from that file. In this case, the &lt;code&gt;query-table&lt;/code&gt;.&lt;/p&gt;

&lt;p&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%2F2alo6ma3ncn46o2mkiw0.png" 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%2F2alo6ma3ncn46o2mkiw0.png" alt="Imported query param to endpoint definition" width="512" height="220"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That’s it. You can repeat the same for any endpoint that uses these query params without having to define them ever again. Just import and run. No more redundancy.&lt;/p&gt;

&lt;p&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%2Fc37iwkg5nowvbxflwns2.gif" 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%2Fc37iwkg5nowvbxflwns2.gif" alt="The flow of importing a reusable block in Voiden" width="480" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;Want to test and document APIs without the repetition mess?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://voiden.md/download" rel="noopener noreferrer"&gt;Download&lt;/a&gt; the offline app from voiden.md and set up an API repo.&lt;/li&gt;
&lt;li&gt;Create a couple of &lt;code&gt;.void&lt;/code&gt; files, one per endpoint you’re testing.

&lt;ul&gt;
&lt;li&gt;Alternatively, import your existing Postman collection.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Detect the bits that can be reused, and extract them by following the steps provided above.&lt;/li&gt;

&lt;li&gt;Execute endpoints in Voiden and validate responses.&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Sounds like a good step towards simplifying API tooling workflows? Join our &lt;a href="https://github.com/voidenhq/feedback" rel="noopener noreferrer"&gt;GitHub Discussions&lt;/a&gt; to share feedback and shape Voiden.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
      <category>api</category>
      <category>testing</category>
    </item>
    <item>
      <title>Why API tooling needs a reset (and what we're doing about it)</title>
      <dc:creator>aldin</dc:creator>
      <pubDate>Wed, 03 Sep 2025 07:40:30 +0000</pubDate>
      <link>https://forem.com/voiden/why-api-tooling-needs-a-reset-and-what-were-doing-about-it-3dn6</link>
      <guid>https://forem.com/voiden/why-api-tooling-needs-a-reset-and-what-were-doing-about-it-3dn6</guid>
      <description>&lt;p&gt;&lt;strong&gt;Building and testing APIs feels all over the place nowadays. It's a pain, it wastes time, causes errors, and frustrates everyone involved. This post dives into why API tooling is such a headache, why the industry keeps making it worse, and how Voiden makes life easier for developers.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s Going Wrong
&lt;/h2&gt;

&lt;p&gt;Well, a lot of things, really.&lt;/p&gt;

&lt;p&gt;Let’s talk real-life examples: A retail app team was rushing to launch a new feature for real-time order tracking. The backend team updated the API specs in one tool, but the frontend team was working off outdated docs stored in another platform. The frontend built the UI expecting a different response format, say, a nested JSON object, but the backend team switched to a flat structure. When they integrated, the order tracking broke, showing wrong delivery statuses to customers. Integration testing caught it, but not before the team lost hours debugging, with frontend and backend pointing fingers over whose spec was right.&lt;/p&gt;

&lt;p&gt;This isn’t a one-off. When teams rely on 5-6 apps for designing, testing, and documenting APIs, workflows get clunky and confusing. Specs, tests, and docs live in separate places, so they fall out of sync, leading to outdated info and integration failures. Frontend developers build to a spec that’s no longer valid, backend developers push updates that don’t make it to the docs, and QA teams are left guessing what’s supposed to work. On top of that, online platforms charge per-user fees, track your data, and force you into their cloud-based setups, leaving you stuck with their bugs and downtime.&lt;/p&gt;

&lt;p&gt;This mess slows down entire projects. Teams miss deadlines, clients lose trust, and developers burn out from endless context-switching between tools. Or at the very least, you’ve got plenty of frustrated developers. Imagine spending half your day flipping between apps, double-checking specs, or arguing over which version of the docs is current. It’s death by a thousand cuts for developers, tech leads, QAs, and DevOps trying to ship reliable software.&lt;/p&gt;

&lt;p&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%2F04vzzjzp1m1cmkxz6260.png" 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%2F04vzzjzp1m1cmkxz6260.png" alt="Homer Simpson trying to keep it together with API tooling" width="623" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Why is it happening? Tooling companies aren’t building for developers. They’re building for their own bottom line. They churn out platforms with shiny features like AI dashboards or enterprise integrations, chasing subscriptions instead of solving real problems. That results in platforms that lock teams in, collect data, and add complexity.&lt;/p&gt;

&lt;p&gt;If we want API development to be less of a headache, we need tools that actually understand how developers work, tools that keep teams aligned, cut the noise, and let code do the talking.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are we doing about it?
&lt;/h2&gt;

&lt;p&gt;You can read the &lt;a href="https://voiden.md/blog/why-we-rebuilt-bloated-api-tooling" rel="noopener noreferrer"&gt;story&lt;/a&gt; behind the frustration that resulted in Voiden being built. The idea was straightforward: stop forcing developers to adapt to tools and start building a tool that adapts to developers, a single tool for the API workflow.&lt;/p&gt;

&lt;p&gt;Voiden, while still early-stage, is free, VC-independent, lightweight, and offline. You don’t need an account, and no data gets sent to a cloud server. An in-app terminal is there, and a fully markdown-based editor for you to document everything about your APIs.&lt;/p&gt;

&lt;p&gt;Something that isn’t available in alternative tools is the DRY principle. In Voiden, you can define elements you want to reuse across APIs and simply import them where you need them. For example, headers, query parameters, or anything else that makes sense to be reused. Just define, import, and save hours on not repeating yourself.&lt;/p&gt;

&lt;p&gt;When you’re happy with the state of the API, use Git commands in the terminal to version it or collaborate with teammates. None of that pay-per-seat nonsense.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Voiden Works: Simpler, Code-Based, Team-Friendly
&lt;/h2&gt;

&lt;p&gt;Voiden takes the mess out of API development by letting you design, test, and document APIs in one place, right next to your codebase. It’s built for developers who live in editors and Git repos, ensuring frontend, backend, QA, and DevOps all work from the same source of truth.&lt;/p&gt;

&lt;h3&gt;
  
  
  What API workflows should look like:
&lt;/h3&gt;

&lt;p&gt;Code-like workflow: Write APIs in &lt;code&gt;.void&lt;/code&gt; Markdown files, stored in your Git repo alongside your code, so specs, tests, and docs are always in sync.&lt;/p&gt;

&lt;p&gt;No tool-hopping: Create specs, run tests, and generate docs without leaving your editor, keeping frontend and backend teams aligned.&lt;/p&gt;

&lt;p&gt;DRY by design: Define reusable elements like headers or error codes once, then import them across APIs to save time and avoid mistakes.&lt;/p&gt;

&lt;p&gt;Extensible: Install (or build yourself) plugins for any additional features you may need.&lt;/p&gt;

&lt;p&gt;Offline and free: No cloud subscriptions, no data tracking, just your machine and your code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here’s an example of how API workflows look like in Voiden.&lt;/strong&gt;&lt;/p&gt;

&lt;p&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%2Fdpa625xmh1qhalq84xa2.gif" 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%2Fdpa625xmh1qhalq84xa2.gif" alt="Voiden API workflow" width="200" height="112"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can define common headers or query params once, and import them across the project to avoid repetition. Docs are built within the same file, so everyone’s working off the same info. Push it to your Git repo using the in-app terminal, and it’s ready for your CI/CD pipeline. No extra apps, no outdated docs, no frontend-backend arguments.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters?
&lt;/h2&gt;

&lt;p&gt;The API tooling world is a mess because it’s built to serve vendors, not developers. Companies keep pushing platforms that trap teams in pricey subscriptions, snoop on your data, and force you to juggle multiple apps just to keep specs aligned.&lt;/p&gt;

&lt;p&gt;The fallout? All over the place. It’s a cycle of frustration that slows down projects and burns everyone out.&lt;/p&gt;

&lt;p&gt;By keeping specs, tests, and docs together in a simple, code-based workflow, Voiden cuts the noise and lets teams focus on what they do best: writing code and shipping features.&lt;/p&gt;

&lt;p&gt;Next step? Take five minutes to try Voiden with one API. You’ll get to feel firsthand how it keeps your APIs aligned and cuts through the noise of traditional tooling. &lt;a href="http://voiden.md/download" rel="noopener noreferrer"&gt;Download here&lt;/a&gt; and rethink how APIs should be built.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>api</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How to test and document an API without ever leaving the editor</title>
      <dc:creator>aldin</dc:creator>
      <pubDate>Tue, 26 Aug 2025 06:50:36 +0000</pubDate>
      <link>https://forem.com/voiden/how-to-test-and-document-an-api-without-ever-leaving-the-editor-58mj</link>
      <guid>https://forem.com/voiden/how-to-test-and-document-an-api-without-ever-leaving-the-editor-58mj</guid>
      <description>&lt;p&gt;Tabbing between browser pages, Postman, and doc platforms for API testing and documentation creates stale docs and kills productivity. Voiden's markdown-style files let you spec, test, and document APIs offline in one place, using a Git-based workflow you already know, without ever having to leave the editor.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem: Tool-Switching Wrecks API Workflows
&lt;/h2&gt;

&lt;p&gt;Managing APIs across multiple tools is a productivity killer. You’re stuck juggling Postman (or any of its lookalike clones) for tests, a browser for endpoint checks, and a platform like Confluence or Notion for docs. The result? A fragmented, frustrating workflow:&lt;/p&gt;

&lt;p&gt;Here’s a scenario: Mid-sprint, you’re debugging an API. Postman shows a 200, but the docs aren’t really up to date; they list an old endpoint version. You go to the codebase, find a new response schema, and now that everything is sorted out, the Postman cloud hangs, forcing you to re-run tests. Time wasted chasing inconsistencies and retyping docs. Mouse clicking, tabbing, jumping between tools, and figuring out why things aren’t the same across the board - all checked. A remotely optimal dev experience, nowhere to be found.&lt;/p&gt;

&lt;p&gt;This fragmented approach doesn’t just waste time. It introduces errors as well.&lt;/p&gt;

&lt;p&gt;Disconnected tools mean manual updates, leading to outdated documentation that confuses teams and stakeholders. Postman’s cloud-based collections, for instance, live outside your codebase, forcing you to export and sync manually, which disrupts your workflow. Tools used for general documentation usually lack the native integration with your repo needed for seamless API development. The constant context-switching between tools slows down collaboration and makes it harder (impossible, really) to maintain a single source of truth for your APIs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Voiden’s Approach: Markdown-Powered API Workflow
&lt;/h2&gt;

&lt;p&gt;Voiden eliminates these pain points by allowing you to define, test, and document APIs in Markdown-style &lt;code&gt;.void&lt;/code&gt; files, all in its offline editor. Specs live in your repo, versioned with Git, with live API responses for docs that stay accurate. No tool-switching or cloud syncs. Teams using Voiden report are halving their API documentation time, keeping specs in sync with code which saves even more time in the future.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;.void&lt;/code&gt; files are designed to be lightweight and intuitive, combining API specifications, tests, and documentation in a single, human-readable format. Using Markdown’s simplicity, you can define endpoints, write test cases, and embed live response data directly in the editor.&lt;/p&gt;

&lt;p&gt;For example, a &lt;code&gt;.void&lt;/code&gt; file might include a &lt;code&gt;POST&lt;/code&gt; request definition, a test to validate the response status, and inline documentation, imported headers for element reusability and following the DRY principle, all sitting together. Because these files are stored in your filebase, they are Git-friendly, every change is easily versioned, trackable, and reviewable through pull requests, just like your code. This approach ensures your API specs and docs are always in sync with your codebase, reducing errors and eliminating the need for external platforms. Plus, Voiden’s offline-first design means you can work anywhere, even without an internet connection (well, for docs and localhost testing), with no safety issues, or an account.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here’s an example of Voiden usage:&lt;/strong&gt;&lt;/p&gt;

&lt;p&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%2Fzydxrpbz7f3rh0wgykbh.gif" 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%2Fzydxrpbz7f3rh0wgykbh.gif" alt="Live coding API test and docs in Voiden" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;Want to test and document APIs without the tool-switching grind? &lt;/p&gt;

&lt;p&gt;Start with Voiden:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Download the offline app from &lt;a href="https://voiden.md" rel="noopener noreferrer"&gt;voiden.md&lt;/a&gt; and set up an API repo.&lt;/li&gt;
&lt;li&gt;Create your &lt;code&gt;.void&lt;/code&gt; file.&lt;/li&gt;
&lt;li&gt;Run tests in Voiden’s editor, validate responses, and add docs with live results.&lt;/li&gt;
&lt;li&gt;Document one API endpoint and commit it to Git for a PR review.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To make the transition even smoother, Voiden supports importing existing Postman collections with a single click, converting them into &lt;code&gt;.void&lt;/code&gt; files that integrate seamlessly into your repo. This eliminates the hassle of rewriting specs from scratch. Read more about migrating your Postman collections here. Join our GitHub Discussions to share feedback and shape Voiden.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
      <category>api</category>
    </item>
    <item>
      <title>Keep API Work Local: Why Offline-First Beats Cloud-Based Tools?</title>
      <dc:creator>aldin</dc:creator>
      <pubDate>Fri, 08 Aug 2025 16:44:17 +0000</pubDate>
      <link>https://forem.com/voiden/keep-api-work-local-why-offline-first-beats-cloud-based-tools-50l6</link>
      <guid>https://forem.com/voiden/keep-api-work-local-why-offline-first-beats-cloud-based-tools-50l6</guid>
      <description>&lt;p&gt;Cloud-based API tools like Postman can expose your data, and leave you stuck when servers fail or docs lag. Offline-first API workflows offer better security, efficiency, and developer control.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Trouble with Cloud-Based API Tools
&lt;/h2&gt;

&lt;p&gt;You’re in the middle of debugging an API, and your cloud-based tool (say, Postman) freezes because the servers are down. Or the API docs you’re relying on are outdated, sending you on a wild goose chase. Are these just glitches, or are they symptoms of a workflow that’s too dependent on the cloud even if it doesn’t belong to it?&lt;/p&gt;

&lt;p&gt;Where it falls apart:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Data risks&lt;/strong&gt;: Storing API specs and keys on third-party servers invites trouble. Not once have people pointed to &lt;a href="https://treblle.com/blog/apis-exposed-postman-data-breach-lessons" rel="noopener noreferrer"&gt;breaches&lt;/a&gt; or &lt;a href="https://x.com/isdownapp/status/1952719632910991769" rel="noopener noreferrer"&gt;outages&lt;/a&gt; where cloud tools left sensitive data vulnerable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tied to the internet&lt;/strong&gt;: No connection, no work. Even on localhost?! Coding at a remote site or during a server outage? You’re out of luck.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fragmented flow&lt;/strong&gt;: Switching between the editor, a testing app, and a docs platform breaks the rhythm and risks stale specs. And what’s with all the tabs and mouse commands.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vendor lock&lt;/strong&gt;: Proprietary formats and per-seat fees ties teams to a tool’s ecosystem, limiting options and budget.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Real scenario&lt;/strong&gt;: You’re racing to meet a deadline, but the cloud-hosted API docs don’t match the live endpoint. You lose an hour (that’s me being an optimist) verifying changes, momentum gone.&lt;/p&gt;

&lt;h2&gt;
  
  
  Offline-First: The only logical API workflow
&lt;/h2&gt;

&lt;p&gt;Offline-first API workflows put you in control. Using local files you define, test, and document APIs right in your editor, synced with Git. It’s a setup that fits how developers actually work. You know, type, hotkey, enter, tab (not that tab), terminal… the usual dev flow.&lt;/p&gt;

&lt;p&gt;Why it’s better:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Secure by nature&lt;/strong&gt;: Keep your API specs and credentials local, away from third-party servers that could be breached.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Work anywhere&lt;/strong&gt;: Test and document APIs offline or on localhost. No Wi-Fi? Unless it’s a prod thing and you need THAT environment specifically, you keep going.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stay focused&lt;/strong&gt;: Write specs, run tests, and create docs in one place - your editor. No more app-hopping.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dev-first&lt;/strong&gt;: Version control tracks changes, simplifies collaboration, and lets you roll back without a fuss. Hotkeys and reusable components keep it DRY, like your code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No hidden costs&lt;/strong&gt;: Your offline app and Git are free, scaling with your team without extra fees.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example: Imagine an executable markdown file (say, an example.void in your Voiden project). It defines your endpoint, explains whatever you need it to, lets you select the localhost environment, and you run an API test. It’s all on your machine, is not hosted, works with no internet, introduces 0 additional safety issues, and you can still version control it and collaborate with the team via Git. Try doing that when Postman’s servers are napping.&lt;/p&gt;

&lt;p&gt;Hint:&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%2F7n97na9t96fv0dyt2y58.png" 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%2F7n97na9t96fv0dyt2y58.png" alt="Postmans' something went wrong page" width="800" height="580"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why We Had to Rethink API Work
&lt;/h2&gt;

&lt;p&gt;This whole mess with cloud-based API tools shows we’ve been too quick to trade control for shiny dashboards (and some data gathering, per-seat fees, lock in, oh my…). But do developers really need another subscription or clunky UI, or an API tool that feels like an extension of their code. Offline-first workflows are a wake-up call: your API work can be as lean and flexible as your development process.&lt;/p&gt;

&lt;p&gt;This isn’t about swearing off the cloud. You’ll still hit live endpoints for real requests. It’s rather about keeping the core of your API work (specs, tests, docs) secure, local, and under your control.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to Go from Here
&lt;/h2&gt;

&lt;p&gt;The shift to offline-first isn’t just about dodging cloud pitfalls. The shift to offline is about building a workflow that mirrors how you work as a developer. Imagine API specs that live alongside your code, evolving with every commit, always in sync. Picture a process where your docs aren’t a separate chore but a natural output of your work, as easy as writing a README. The offline-first approach turns API development into something that feels like coding: deliberate, iterative, and yours.&lt;/p&gt;

&lt;p&gt;Voiden is on that path. You can help shape it by joining its &lt;a href="https://github.com/voidenhq/feedback" rel="noopener noreferrer"&gt;GitHub Discussions&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
      <category>tooling</category>
      <category>api</category>
    </item>
    <item>
      <title>Rethinking DevTools: Escaping the Cloud and SaaS Trap</title>
      <dc:creator>aldin</dc:creator>
      <pubDate>Wed, 06 Aug 2025 06:09:44 +0000</pubDate>
      <link>https://forem.com/voiden/rethinking-devtools-escaping-the-cloud-and-saas-trap-poe</link>
      <guid>https://forem.com/voiden/rethinking-devtools-escaping-the-cloud-and-saas-trap-poe</guid>
      <description>&lt;p&gt;If not for a gazillion other reasons, a recent outage from Postman should remind us again why proper design decisions matter in devtools.&lt;/p&gt;

&lt;p&gt;API workflows shouldn’t live in the cloud.&lt;br&gt;
A LOT of devtools shouldn’t live in the cloud.&lt;br&gt;
Some tools can’t work without it, all good.&lt;br&gt;
But a whole lot of them are there just because of some poor design choices.&lt;/p&gt;

&lt;p&gt;Yet…&lt;br&gt;
No cloud? No outage.&lt;br&gt;
No cloud? No sync issues.&lt;br&gt;
No cloud? No data security gaps.&lt;br&gt;
So why keep forcing it where it doesn’t belong?&lt;/p&gt;

&lt;p&gt;And it’s not even just the cloud. Cloud is awesome for some stuff. &lt;br&gt;
SaaS-like designs are dragging devtools into the same trap.&lt;/p&gt;

&lt;p&gt;As a matter of fact, devtools in general shouldn’t feel like SaaS platforms. Unless we’re going through app usage dashboards - tabs, and mouse actions are not built for devs.&lt;/p&gt;

&lt;p&gt;Devtools should prioritize developer control, not just pay-per-seat subscriptions.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>Goodbye Postman collections, hello Markdown specs</title>
      <dc:creator>aldin</dc:creator>
      <pubDate>Tue, 22 Jul 2025 04:26:22 +0000</pubDate>
      <link>https://forem.com/voiden/goodbye-postman-collections-hello-markdown-specs-51c8</link>
      <guid>https://forem.com/voiden/goodbye-postman-collections-hello-markdown-specs-51c8</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;Postman’s collections are bloated, paywalled, and siloed from your codebase. Voiden is an offline, lightweight Postman alternative. It uses Markdown-style files to enable you to spec, test, and document your APIs in a single place, leveraging a code-like workflow that you already know and understand.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem: Postman Collections Create Friction
&lt;/h2&gt;

&lt;p&gt;Postman's collection-based approach using JSON or YAML files, cloud dashboards, and a complex UI promises seamless API workflows, but it often slows developers down with unnecessary hurdles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Paywall barriers&lt;/em&gt;&lt;/strong&gt;: The free plan caps you at 25 collection runs, 3 collaborators, and one private API. Need more? Pay $14–$49 per user per month. Scaling the team is a budget burden.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;&lt;strong&gt;Siloed specs&lt;/strong&gt;&lt;/em&gt;: Collections live in Postman’s cloud, detached from your repo. Syncing them to Git requires manual exports, breaking your workflow’s rhythm.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Cluttered and rigid&lt;/em&gt;&lt;/strong&gt;: The UI buries simple tasks in menus, and collections don’t support reusable components. Docs are separate, leaving you without a single source of truth.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Think of this scenario: You’re debugging an API mid-sprint, but Postman’s free tier stops you at 25 runs. Your teammate’s changes are stuck in the cloud, and syncing them to your repo means tedious copy-pasting. And needing an internet connection to test the localhost endpoint… that’s a bottleneck, not a workflow.&lt;/p&gt;




&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Aspect&lt;/th&gt;
&lt;th&gt;Postman&lt;/th&gt;
&lt;th&gt;Voiden&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Monetization&lt;/td&gt;
&lt;td&gt;Free tier + paid plans ($14–$49/user/month).&lt;/td&gt;
&lt;td&gt;Free. Plugins can be monetized, but none are mandatory.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Free plan limitations&lt;/td&gt;
&lt;td&gt;25 collection runs, 3 collaborators, 1 private API, unlimited public APIs.&lt;/td&gt;
&lt;td&gt;None. Unlimited use.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;How API calls are made&lt;/td&gt;
&lt;td&gt;Through a proxy server.&lt;/td&gt;
&lt;td&gt;From your computer.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Where does it work&lt;/td&gt;
&lt;td&gt;Online, logged in.&lt;/td&gt;
&lt;td&gt;Local desktop application. No login. No account.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Collaboration&lt;/td&gt;
&lt;td&gt;Cloud pay-per-seat paywall.&lt;/td&gt;
&lt;td&gt;Git.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Strengths&lt;/td&gt;
&lt;td&gt;Widely adopted. Mature. Feature-rich.&lt;/td&gt;
&lt;td&gt;Lightweight. Offline.  Reusable building blocks. Specs in Markdown-based repos. Feels like coding.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Weaknesses&lt;/td&gt;
&lt;td&gt;Paywalled features. Cloud-dependent. Siloed specs. Complex UI. No reusability.&lt;/td&gt;
&lt;td&gt;Early-stage. Small community. Fewer features shipped.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;p&gt;Postman’s enterprise focus and heavy UI frustrate indie hackers and small teams. Voiden’s markdown-based, Git-native workspace keeps APIs simple, code-adjacent, and free of SaaS constraints.&lt;/p&gt;

&lt;h2&gt;
  
  
  Workflow: How do I switch from Postman to Voiden?
&lt;/h2&gt;

&lt;p&gt;Voiden lets you trade Postman’s collections for markdown-style &lt;code&gt;.void&lt;/code&gt; files in your repo, using a workflow that feels like coding. Here’s how to make the switch:&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Import a Postman Collection
&lt;/h3&gt;

&lt;p&gt;Export your Postman collection and add it to a Voiden project.&lt;/p&gt;

&lt;p&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%2Foytcjdm101ak3ho3q10a.png" 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%2Foytcjdm101ak3ho3q10a.png" alt="Importing postman collection" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Generate Voiden files
&lt;/h3&gt;

&lt;p&gt;In the top right corner of the imported Postman collection, there should be a &lt;code&gt;Generate Voiden files&lt;/code&gt; button. Click it.&lt;/p&gt;

&lt;p&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%2Flqkhw6m6jade3733m3fo.png" 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%2Flqkhw6m6jade3733m3fo.png" alt="Generate Voiden files" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The result is a newly generated Directory holding all of the collection’s API specs.&lt;/p&gt;

&lt;p&gt;Note that I also created a &lt;code&gt;.env&lt;/code&gt; file, which holds a token needed for running this endpoint successfully.&lt;/p&gt;

&lt;p&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%2Fbetspwvt9u4lf1l38zsy.png" 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%2Fbetspwvt9u4lf1l38zsy.png" alt="Marked generated files" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Edit, Test, Document, and Commit
&lt;/h3&gt;

&lt;p&gt;Now you can edit generated &lt;code&gt;.void&lt;/code&gt; files, adding docs, tests, changing the payload, etc.&lt;/p&gt;

&lt;p&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%2F383uvqoqtn3q2b0dji2f.png" 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%2F383uvqoqtn3q2b0dji2f.png" alt="Document the API" width="800" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hit the &lt;code&gt;Ctrl/Cmd + Enter&lt;/code&gt; to run it.&lt;/p&gt;

&lt;p&gt;The right-hand side opens a panel with response (and request) details.&lt;/p&gt;

&lt;p&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%2F2cqopp25202tmltrvm3m.png" 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%2F2cqopp25202tmltrvm3m.png" alt="API call results preview" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When happy with the state of the API, head over to the in-app terminal, commit the changes, and collaborate as developers do. Via Git.&lt;/p&gt;

&lt;p&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%2Fmo7wlf56734ihbnqsmaa.png" 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%2Fmo7wlf56734ihbnqsmaa.png" alt="Voiden terminal preview" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That’s it.&lt;br&gt;
This approach skips Postman’s cloud dependency and UI clutter, keeping your APIs in your repo, where they belong.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Wins
&lt;/h2&gt;

&lt;p&gt;Voiden’s markdown-based workflow fixes Postman’s pain points for those among you who value code over dashboards:&lt;/p&gt;

&lt;p&gt;No paywalls: Free, no limits, no per-user fees. Postman’s $14–$49/month plans are a burden.&lt;br&gt;
Fast migration: One click converts Postman collections to &lt;code&gt;.void&lt;/code&gt; files, no hassle.&lt;br&gt;
Code-like simplicity: Markdown is clean, reusable, and editor-friendly. Git tracks every change, unlike Postman’s siloed setup.&lt;br&gt;
Offline control: Specs stay in your repo, not a random cloud. And you can work anywhere, with no sync issues.&lt;br&gt;
Postman’s costs and complexity slow you down. Voiden’s lean, Git-integrated approach keeps you moving.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;Ready to drop Postman? Try Voiden:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install Voiden: Download the offline app from voiden.md and set up an API repo.&lt;/li&gt;
&lt;li&gt;Migrate your first Postman collection: Start with a single API spec.&lt;/li&gt;
&lt;li&gt;Collaborate via Git: Commit your spec, open a PR, and let your team review it using your existing Git tools.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Join our &lt;a href="https://github.com/voidenhq/feedback" rel="noopener noreferrer"&gt;GitHub Discussions&lt;/a&gt; to share feedback and shape Voiden's future. &lt;a href="https://voiden.md/download" rel="noopener noreferrer"&gt;Download&lt;/a&gt; Voiden and start building APIs the right way.&lt;/p&gt;

</description>
      <category>api</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
    <item>
      <title>Why does Voiden not have "Teams"?</title>
      <dc:creator>aldin</dc:creator>
      <pubDate>Wed, 02 Jul 2025 11:24:30 +0000</pubDate>
      <link>https://forem.com/voiden/why-does-voiden-not-have-teams-2f98</link>
      <guid>https://forem.com/voiden/why-does-voiden-not-have-teams-2f98</guid>
      <description>&lt;p&gt;Instead of building roles, we built around Git - your team structure and collaboration is already there.&lt;/p&gt;

&lt;p&gt;Voiden, a &lt;a href="https://voiden.md/" rel="noopener noreferrer"&gt;free, offline API workspace&lt;/a&gt;, says no to SaaS "Teams" features because they're bloated, expensive, and break developer workflows. Git is the real collaboration engine. It's free, familiar, and tied to your codebase.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem: SaaS "Teams" Features == Overhead and Lock-In
&lt;/h2&gt;

&lt;p&gt;Devtools in general, but also API tools, still push "Teams" features as the answer to collaboration. Shared workspaces, real-time edits, cloud-synced dashboards… Sounds great, right? Wrong.&lt;/p&gt;

&lt;p&gt;For devs, SaaS solutions around devtools create more problems than they solve.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Per-seat greed&lt;/em&gt;: Adding a teammate means another license fee. Scaling from five to fifty devs? Your budget's toast, and managing access becomes a part-time job.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Codebase silos&lt;/em&gt;: These tools trap your API specs in their cloud platforms, disconnected from your repo. Syncing them feels like duct-taping mismatched systems.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Version chaos&lt;/em&gt;: "Real-time" collaboration invites chaos. Multiple devs editing a spec can cause overwrites or conflicts, with no clear version history to fall back on.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not convinced? Well, picture this:&lt;br&gt;
&lt;em&gt;For the sake of example, let's imagine that there is an API platform named SaaSman.&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Your team's rushing to update an API spec before a sprint deadline, and SaaSman locks out a dev due to a forgotten license tier, and another's changes get lost in a sync error. Hours vanish on fixing permissions and recovering work. That's not collaboration. That's a nightmare. SaaSman's greed could have just cost you a release.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Voiden's Approach: Git as the Collaboration Backbone
&lt;/h2&gt;

&lt;p&gt;Instead of mimicking SaaS tooling, Voiden leans on Git for collaboration.&lt;/p&gt;

&lt;p&gt;Why introduce charts nobody asked for, to account for a feature nobody needs, when Git, your trusted and battle-tested tooling, is fully able to handle collaboration without the overhead?&lt;/p&gt;

&lt;p&gt;SaaS features add overhead. Git cuts through it.&lt;/p&gt;

&lt;p&gt;Here's why:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Free and scalable&lt;/em&gt;: Git is free and scales without restriction. "Add" teammates without worrying about license fees or access tiers.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Repo-integrated&lt;/em&gt;: API specs live as .void Markdown files in your repo, versioned alongside your code. No external platforms or manual syncs required.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Traceable changes&lt;/em&gt;: Git's commits and PRs log every edit to your API specs, preventing overwrites.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You already collaborate on your codebase with the help of some version control systems. Voiden extends that workflow to APIs, letting you define, review, and merge specs using the same tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  Workflow: Collaborative APIs with Git
&lt;/h2&gt;

&lt;p&gt;Voiden's choice to skip teams and go for the simple solution is neither ideological nor philosophical. It's just practical.&lt;/p&gt;

&lt;p&gt;By building on Git, collaboration on APIs becomes a natural extension of your existing workflow, giving you full control over it.&lt;/p&gt;

&lt;p&gt;Here's how it works:&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Define APIs in Markdown
&lt;/h3&gt;

&lt;p&gt;Create API specs in &lt;code&gt;.void&lt;/code&gt; Markdown files, stored in your repo (e.g., &lt;code&gt;apis/users/spec.void&lt;/code&gt;). These files are lightweight, human-readable, and Git-friendly.&lt;/p&gt;

&lt;p&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%2F57v7zmtds5li5zjzx9ei.png" 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%2F57v7zmtds5li5zjzx9ei.png" alt="Voiden workspace documented API" width="800" height="598"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&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%2Frkc0g2o8jngu3maydfqx.gif" 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%2Frkc0g2o8jngu3maydfqx.gif" alt="Voiden workspace documented API GIF" width="200" height="125"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Collaborate via Git PRs
&lt;/h3&gt;

&lt;p&gt;Commit your &lt;code&gt;.void&lt;/code&gt; files and open a pull request. Teammates review changes using GitHub, GitLab, or Bitbucket, just like they review code. No proprietary "Teams" interface. Just familiar PR comments and diffs tracking every change.&lt;/p&gt;

&lt;p&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%2F9m1kgugtbtvpk6t4dzhr.gif" 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%2F9m1kgugtbtvpk6t4dzhr.gif" alt="Voiden workspace terminal usage GIF" width="480" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Merge and Publish
&lt;/h3&gt;

&lt;p&gt;Once approved, merge the PR to update the API spec. Git's history ensures every change is traceable, and the spec stays in sync with your codebase. Deploy without SaaS sync errors in sight.&lt;/p&gt;

&lt;p&gt;This workflow skips the chaos of tools like SaaSman, where "Teams" features force you into their ecosystem. Git keeps it simple, free, and developer-first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Wins?
&lt;/h2&gt;

&lt;p&gt;The Git approach isn't a workaround. It's a better way (arguably THE BEST way) to collaborate on all things dev, APIs included.&lt;/p&gt;

&lt;h3&gt;
  
  
  What sets it apart:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Zero cost&lt;/em&gt;: Git scales to any team size, free of charge. No budget fights, no license tiers, no per-seat charges, just code-like collaboration.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Offline and secure&lt;/em&gt;: Keep sensitive API specs in your repo, not a third-party cloud. Work anywhere, anytime, without sync dependencies.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Code-synced precision&lt;/em&gt;: Git's versioning ties your API specs to your codebase, with every change tracked and reversible.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;No learning curve&lt;/em&gt;: Use Git, Markdown, (in-app) system terminal, and skills you already have. No learning curve for yet another SaaS dashboard.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;SaaS tools like SaaSman lock you into their world. There are paywalls, silos, and sync errors included. Voiden frees you to spec, test, and document APIs in the same way you deal with your codebase, with Git as the backbone.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;Ready to ditch SaaS "Teams" chaos? Here's how to start with Voiden:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install Voiden: Download the offline app from &lt;a href="https://voiden.md/download" rel="noopener noreferrer"&gt;voiden.md&lt;/a&gt; and set up an API repo.&lt;/li&gt;
&lt;li&gt;Create your first &lt;code&gt;.void&lt;/code&gt; file: Start with a single API spec.&lt;/li&gt;
&lt;li&gt;Collaborate via Git: Commit your spec, open a PR, and let your team review it using your existing Git tools.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Join our &lt;a href="https://github.com/voidenhq/feedback" rel="noopener noreferrer"&gt;GitHub Discussions&lt;/a&gt; to share feedback and shape Voiden's future.&lt;br&gt;
&lt;a href="https://voiden.md/download" rel="noopener noreferrer"&gt;Download Voiden&lt;/a&gt; and start building APIs the right way.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>api</category>
      <category>productivity</category>
      <category>git</category>
    </item>
    <item>
      <title>Why API design is a mess, and how could a git-native tool help?</title>
      <dc:creator>aldin</dc:creator>
      <pubDate>Tue, 20 May 2025 12:59:30 +0000</pubDate>
      <link>https://forem.com/voiden/why-api-design-is-a-mess-and-how-could-a-git-native-tool-help-39ii</link>
      <guid>https://forem.com/voiden/why-api-design-is-a-mess-and-how-could-a-git-native-tool-help-39ii</guid>
      <description>&lt;p&gt;In my dev years and throughout my devrel career, I’ve spent A LOT of time wrangling APIs and devtools (together and separately). &lt;/p&gt;

&lt;p&gt;API governance is a pain, been for a while.&lt;br&gt;
Cloud-sync which you don't feel comfortable with, scattered or non-existent docs, rewriting the same stuff all over again, and don’t even get me started on the tools that feel like a full-on enterprise bloat.&lt;/p&gt;

&lt;p&gt;Been there, cursed that, got frustrated - a LOT.&lt;/p&gt;

&lt;p&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%2Fj8964djjjtvh04wrhl4l.jpeg" 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%2Fj8964djjjtvh04wrhl4l.jpeg" alt="It's all the same" width="704" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The API workflow mess
&lt;/h2&gt;

&lt;p&gt;Well, just recently I got affiliated with &lt;a href="https://voiden.md" rel="noopener noreferrer"&gt;Voiden.md&lt;/a&gt;. Given this recent affiliation, I’ve been digging into API tools again. You know, checking what works, what is painful, etc. And I want your take as well.&lt;/p&gt;

&lt;p&gt;API specs and docs are critical for public-facing microservices, and some internal ones may need them even more. They’re a mess to manage. Currently, we have sources of truth scattered everywhere, specs drifting from code, docs living in another tool, you have some dashboards that nobody checks, and overall, governance is pure chaos.&lt;/p&gt;

&lt;p&gt;Most tools don’t help:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cloud sync feels like a data leak waiting to happen.&lt;/li&gt;
&lt;li&gt;Bloated UIs waste time when you just need a quick endpoint test.&lt;/li&gt;
&lt;li&gt;Specs and docs in separate places kill your flow.&lt;/li&gt;
&lt;li&gt;And wth is real-time collaboration? Make. Your. Own. Branch.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Naturally, I checked out the landscape to see what's what.&lt;br&gt;
Here’s what I found, in short, straight from using them.&lt;/p&gt;

&lt;h2&gt;
  
  
  API tools: what works, what doesn’t
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.postman.com/" rel="noopener noreferrer"&gt;Postman&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Good:&lt;/strong&gt; Enterprise-ready and collaborative, CI/CD integration, flows, lots of everything you &lt;em&gt;may eventually&lt;/em&gt; need.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bad:&lt;/strong&gt; UI feels cluttered for small projects, free tier caps at 25 collection runs, cloud sync is not for privacy nerds. One change starts a chain reaction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Big teams with end-to-end API needs, and stable APIs that don’t change.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://insomnia.rest/" rel="noopener noreferrer"&gt;Insomnia&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Good:&lt;/strong&gt; OpenAPI focus, cloud or local sync, solid for structured designs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bad:&lt;/strong&gt; No built-in docs, limited reusability, limited extensibility, that cloud-sync thingy all over again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Teams all-in on OpenAPI.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://hoppscotch.io/" rel="noopener noreferrer"&gt;Hoppscotch&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Good:&lt;/strong&gt; Fast, free, browser-only testing with unlimited workspaces.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bad:&lt;/strong&gt; No Git, no reusable components, no docs, too basic for complex APIs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Frontend devs doing quick in-browser checks.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://apidog.com/" rel="noopener noreferrer"&gt;Apidog&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Good:&lt;/strong&gt; Cheaper than Postman, cloud collab, mock servers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bad:&lt;/strong&gt; Free tier limitations. Cloud-only unless you pay for on-prem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Enterprise on a budget.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.usebruno.com/" rel="noopener noreferrer"&gt;Bruno&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Good:&lt;/strong&gt; Open-source, offline, git-sync, tests for DevOps pipelines.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bad:&lt;/strong&gt; No docs, free-tier testing limited.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Git-loving OSS fans.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://yaak.app/" rel="noopener noreferrer"&gt;Yaak&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Good:&lt;/strong&gt; Open-source, offline, git-sync, dynamic requests for flexible setups.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bad:&lt;/strong&gt; No docs, experimental plugins.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; OSS fans, distributed system builders.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://hurl.dev/" rel="noopener noreferrer"&gt;Hurl&lt;/a&gt;:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Good:&lt;/strong&gt; CLI testing for minimal setups, great for scripts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bad:&lt;/strong&gt; Only for running APIs, not designing. No UI, no extensibility.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; CLI purists.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://voiden.md/" rel="noopener noreferrer"&gt;Voiden&lt;/a&gt; (my thing)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Good:&lt;/strong&gt; Git-native, offline, markdown for specs/docs/tests. It imports Postman and enables reusable blocks and plugins.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bad:&lt;/strong&gt; Early days, small community, features still in development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Devs who treat APIs like code, and hate cloud sync.&lt;/p&gt;

&lt;h1&gt;
  
  
  Why Voiden makes sense
&lt;/h1&gt;

&lt;p&gt;Voiden is built like software.&lt;br&gt;
Specs are markdown, versioned in Git, and offline-first.&lt;br&gt;
Specs and docs kept together, blocks reusable across the project.&lt;br&gt;
In-app terminal with git gives you branches, diffs, and governance without real-time sync clutter.&lt;/p&gt;

&lt;h2&gt;
  
  
  Need nothing but a simple GET API call?
&lt;/h2&gt;

&lt;p&gt;Here is what the simplest of calls would look like:&lt;/p&gt;

&lt;p&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%2Fhr6vp28slixmaxqd23ds.gif" 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%2Fhr6vp28slixmaxqd23ds.gif" alt="GET request with Voiden" width="760" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;How to reproduce it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Hit &lt;code&gt;Cmd+N&lt;/code&gt; (Mac) or &lt;code&gt;Ctrl+N&lt;/code&gt; (Win/Linux) to create a new file.&lt;/li&gt;
&lt;li&gt;Type &lt;code&gt;/endpoint&lt;/code&gt; to create a new (GET by default) request block.&lt;/li&gt;
&lt;li&gt;Type or paste the URL you want to trigger a &lt;code&gt;GET&lt;/code&gt; request to.&lt;/li&gt;
&lt;li&gt;Hit &lt;code&gt;Cmd+Enter&lt;/code&gt; (Mac) or &lt;code&gt;Ctrl+Enter&lt;/code&gt; (Win/Linux) to run it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;And now you check the response.&lt;/p&gt;

&lt;h2&gt;
  
  
  You need something more complex than that?
&lt;/h2&gt;

&lt;p&gt;No problem.&lt;/p&gt;

&lt;p&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%2F5yig6qz9j9sweqojl3en.png" 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%2F5yig6qz9j9sweqojl3en.png" alt="POST request with Voiden" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Hit &lt;code&gt;Cmd+N&lt;/code&gt; (Mac) or &lt;code&gt;Ctrl+N&lt;/code&gt; (Win/Linux) to create a new file.&lt;/li&gt;
&lt;li&gt;Type &lt;code&gt;/endpoint&lt;/code&gt; to create a new (GET by default) request block.&lt;/li&gt;
&lt;li&gt;Replace &lt;code&gt;GET&lt;/code&gt; with &lt;code&gt;POST&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Type or paste the URL you want to trigger a request to.&lt;/li&gt;
&lt;li&gt;Type &lt;code&gt;/headers&lt;/code&gt; to add a API Headers block.&lt;/li&gt;
&lt;li&gt;Populate the key-value pairs of the headers block.&lt;/li&gt;
&lt;li&gt;Type &lt;code&gt;/json&lt;/code&gt; to add a API Body block.&lt;/li&gt;
&lt;li&gt;Populate the &lt;code&gt;JSON&lt;/code&gt; block with the request body object.&lt;/li&gt;
&lt;li&gt;Hit &lt;code&gt;Cmd+Enter&lt;/code&gt; (Mac) or &lt;code&gt;Ctrl+Enter&lt;/code&gt; (Win/Linux) to run it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can run requests with a keystroke and see responses instantly in the panel. Document your endpoints naturally using plain Markdown: descriptions, examples, even error cases. No switching tabs, no sync delays, just specs that live where they should: with your code.&lt;/p&gt;

&lt;p&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%2F09vs8fn9xog8mjalfotg.png" 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%2F09vs8fn9xog8mjalfotg.png" alt="Documented POST request with Voiden" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Your API pain points
&lt;/h2&gt;

&lt;p&gt;We’ve all got scars: specs out of sync, cloud sync crashing, tools promising the world and delivering bugs. I’ve raged at Postman’s UI lag. What’s your deal? How do you keep API specs and docs in check? Specifically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How do you sync specs with code or microservices?&lt;/li&gt;
&lt;li&gt;What hacks fix governance or reusability?&lt;/li&gt;
&lt;li&gt;How do you handle specs and docs being split?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hit the comments with your pain points, workflows, or tools I missed. I may be with Voiden, but I’m here to learn what devs like you need. Let’s sort this API mess out, once and for all.&lt;/p&gt;

</description>
      <category>api</category>
      <category>webdev</category>
      <category>programming</category>
      <category>markdown</category>
    </item>
  </channel>
</rss>
