DEV Community

Taniya Saxena
Taniya Saxena

Posted on

I built a tool that formats messy developer notes into clean GitHub Markdown

The Problem

Every time I write a PR description, I start with raw notes like this:

fixed bug with authService

added JWT validation to middleware

refactored userController to use async await

fixes 287

closes 301
Enter fullscreen mode Exit fullscreen mode

And then I have to manually clean it up to capitalize everything, wrap code identifiers in backticks, format bullets, add # to issue numbers. Every. Single. Time.

So I built a tool that does it automatically.

How It Works

Paste your raw notes. Get back clean GitHub-flavored Markdown instantly.

Input
fixed bug with authService

added JWT validation to middleware

refactored userController to use async await

fixes 287

closes 301

Output

- Fixed bug in `authService`
- Added JWT validation to `middleware`
- Refactored `userController` to use async/await

Fixes #287

Closes #301
Enter fullscreen mode Exit fullscreen mode

The Formatting Pipeline

The tool runs a deterministic rule-based pipeline on every line:

  1. Issue reference detection fixes 123Fixes #123
  2. Code identifier detection wraps snake_case, CamelCase, functions(), and file.ts in backticks automatically
  3. Bullet generation detects action verbs like added, fixed, refactored and converts them to bullet points
  4. Sentence capitalization capitalizes the first letter of every line

No AI required for any of this. It's fast, deterministic, and works offline.

AI Mode

There's also an optional AI enhancement mode powered by Groq's Llama 3.3 70B. Toggle it on and the rule-based output gets passed to the AI for grammar correction and clarity improvements without adding or inventing content.

The rule-based formatter runs first. AI just polishes the result.

What I Learned

I'm a Java developer learning the JavaScript ecosystem. This was my first real Next.js project. A few things I picked up:

  • The difference between server-side and client-side rendering in Next.js (and why hydration errors happen)
  • How to build a custom React hook for localStorage persistence
  • How to proxy API calls through a Next.js API route to keep secrets off the client
  • How Tailwind CSS compares to writing raw CSS

Try It

Live → https://github-markdown-formatter.vercel.app

GitHub → https://github.com/taniy8/github-markdown-formatter

Would love feedback - especially from developers who write a lot of PRs. What formatting rules would you add?

Top comments (0)