DEV Community

Cover image for Why API design is a mess, and how could a git-native tool help?
aldin
aldin

Posted on

8 5 5 5 5

Why API design is a mess, and how could a git-native tool help?

In my dev years and throughout my devrel career, I’ve spent A LOT of time wrangling APIs and devtools (together and separately).

API governance is a pain, been for a while.
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.

Been there, cursed that, got frustrated - a LOT.

It's all the same

The API workflow mess

Well, just recently I got affiliated with Voiden.md. 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.

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.

Most tools don’t help:

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

Naturally, I checked out the landscape to see what's what.
Here’s what I found, in short, straight from using them.

API tools: what works, what doesn’t

Postman

Good: Enterprise-ready and collaborative, CI/CD integration, flows, lots of everything you may eventually need.

Bad: 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.

Best for: Big teams with end-to-end API needs, and stable APIs that don’t change.

Insomnia

Good: OpenAPI focus, cloud or local sync, solid for structured designs.

Bad: No built-in docs, limited reusability, limited extensibility, that cloud-sync thingy all over again.

Best for: Teams all-in on OpenAPI.

Hoppscotch

Good: Fast, free, browser-only testing with unlimited workspaces.

Bad: No Git, no reusable components, no docs, too basic for complex APIs.

Best for: Frontend devs doing quick in-browser checks.

Apidog

Good: Cheaper than Postman, cloud collab, mock servers.

Bad: Free tier limitations. Cloud-only unless you pay for on-prem.

Best for: Enterprise on a budget.

Bruno

Good: Open-source, offline, git-sync, tests for DevOps pipelines.

Bad: No docs, free-tier testing limited.

Best for: Git-loving OSS fans.

Yaak

Good: Open-source, offline, git-sync, dynamic requests for flexible setups.

Bad: No docs, experimental plugins.

Best for: OSS fans, distributed system builders.

Hurl:

Good: CLI testing for minimal setups, great for scripts.

Bad: Only for running APIs, not designing. No UI, no extensibility.

Best for: CLI purists.

Voiden (my thing)

Good: Git-native, offline, markdown for specs/docs/tests. It imports Postman and enables reusable blocks and plugins.

Bad: Early days, small community, features still in development.

Best for: Devs who treat APIs like code, and hate cloud sync.

Why Voiden makes sense

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

Need nothing but a simple GET API call?

Here is what the simplest of calls would look like:

GET request with Voiden

How to reproduce it:

  1. Hit Cmd+N (Mac) or Ctrl+N (Win/Linux) to create a new file.
  2. Type /endpoint to create a new (GET by default) request block.
  3. Type or paste the URL you want to trigger a GET request to.
  4. Hit Cmd+Enter (Mac) or Ctrl+Enter (Win/Linux) to run it.

And now you check the response.

You need something more complex than that?

No problem.

POST request with Voiden

  1. Hit Cmd+N (Mac) or Ctrl+N (Win/Linux) to create a new file.
  2. Type /endpoint to create a new (GET by default) request block.
  3. Replace GET with POST.
  4. Type or paste the URL you want to trigger a request to.
  5. Type /headers to add a API Headers block.
  6. Populate the key-value pairs of the headers block.
  7. Type /json to add a API Body block.
  8. Populate the JSON block with the request body object.
  9. Hit Cmd+Enter (Mac) or Ctrl+Enter (Win/Linux) to run it.

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.

Documented POST request with Voiden

Your API pain points

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:

  • How do you sync specs with code or microservices?
  • What hacks fix governance or reusability?
  • How do you handle specs and docs being split?

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.

Tiugo image

Fast, Lean, and Fully Extensible

CKEditor 5 is built for developers who value flexibility and speed. Pick the features that matter, drop the ones that don’t and enjoy a high-performance WYSIWYG that fits into your workflow

Start now

Top comments (4)

Collapse
 
skeptrune profile image
Nick K

Vacuum openapi linter is also an amazing tool! - quobix.com/vacuum/demo/

Collapse
 
kiselitza profile image
aldin

Huhh, this looks like a good way to keep your OAS in check!

Collapse
 
fernandezbaptiste profile image
Bap

"Been there, cursed that" 😂

Collapse
 
kiselitza profile image
aldin

Charlie Puth vibes
"I don't curse anymore... like I used to dooooo" 😂

Tiger Data image

🐯 🚀 Timescale is now TigerData: Building the Modern PostgreSQL for the Analytical and Agentic Era

We’ve quietly evolved from a time-series database into the modern PostgreSQL for today’s and tomorrow’s computing, built for performance, scale, and the agentic future.

So we’re changing our name: from Timescale to TigerData. Not to change who we are, but to reflect who we’ve become. TigerData is bold, fast, and built to power the next era of software.

Read more

👋 Kindness is contagious

Explore this insightful piece, celebrated by the caring DEV Community. Programmers from all walks of life are invited to contribute and expand our shared wisdom.

A simple "thank you" can make someone’s day—leave your kudos in the comments below!

On DEV, spreading knowledge paves the way and fortifies our camaraderie. Found this helpful? A brief note of appreciation to the author truly matters.

Let’s Go!