Every route, no collection
Next.js App and Pages Router, Express, Hono and Fastify. TypeScript or JavaScript. Mounted routers get their prefixes.
Open a project folder. Sonar finds every route, sends the login cookie, token and CSRF header your code expects, and when a request fails it shows you the line that sent the error. Free for macOS.
This is how Sonar behaves on a small Next.js project. The routes, the login cookie and the error lines all come from the code.
{{baseUrl}}/api/capsulesNext.js App and Pages Router, Express, Hono and Fastify. TypeScript or JavaScript. Mounted routers get their prefixes.
A sample body built from the zod schema the route parses, plus the query params and headers it reads.
One cookie jar per environment. A login that returns a token fills {{token}} in the Keychain and sends Bearer where it's read.
Double-submit cookies, token endpoints and next-auth. If the token goes stale, Sonar fetches a fresh one and tries once more.
A 401 from requireUser, a 404 from a missing record, a 400 from a typo: Sonar shows the line, the if that led there, and opens it in your editor.
Requests go from your Mac to your server, nowhere else. Saved requests sit in .sonar/ so your team can commit them; secrets stay in the Keychain.
Free, for macOS on Apple Silicon.
Paste it into Terminal. No "unidentified developer" warning, and the same command updates Sonar later.
curl -fsSL https://sonar.parieaw.cloud/install.sh | bashIt downloads the release, checks its sha512 and copies Sonar.app into Applications. Read the script first if you like.
Open it and drag Sonar into Applications. Sonar isn't signed by Apple yet, so macOS blocks the first launch. Run this once, or use System Settings โ Privacy & Security โ Open Anyway:
xattr -dr com.apple.quarantine /Applications/Sonar.app