A developer's toolbelt: fast, privacy-first browser tools. Everything runs client-side, so there is no login, no upload, and no data leaves your tab. Live at tools.codercops.com.
Open the tools · Star the repo · Contribute
- Tools
- Why it exists
- Stack
- Run locally
- Deploy your own
- Add a tool
- Project layout
- Branching and releases
- Contributing
- Security
- License
|
|
|
|
- JSON formatter and validator. Format, minify, validate, collapsible tree view, and JSON to CSV / TypeScript / YAML / XML / query string. Large numbers are preserved losslessly.
- JWT decoder and inspector. Decode header, payload, and claims; verify HS/RS/PS/ES signatures via WebCrypto; security audit; HS256/384/512 encoder.
- Base64 encoder and decoder. Text, images, and files; URL-safe variant; data URIs; magic-byte detection; Base32/58/85 and hashes.
- Invoice generator. Live preview, vector PDF export with Unicode currency support, a reusable sender profile, all saved locally.
CODERCOPS builds production backends and full-stack apps. These are the small utilities we reach for daily, rebuilt so they are genuinely private (nothing is sent anywhere) and pleasant to use. It is open source so you can read exactly what runs, self-host it, or borrow pieces.
- Next.js 14 (App Router) and TypeScript
- Tailwind CSS with a small CSS-variable design system (light and dark themes)
- WebCrypto for JWT signing and verification
- jsPDF (dynamically imported) for invoice PDFs
lossless-jsonso JSON number precision is never dropped- Per-page Open Graph images and schema.org structured data, generated from the tool registry
- Installable PWA via a web manifest, with a nonce-based Content-Security-Policy
nvm use # Node 22 (see .nvmrc)
npm install
npm run dev # http://localhost:3000Scripts:
npm run build # production build
npm run start # serve the production build
npm run lint # eslint
npm run test # vitest unit tests (lib/)The app deploys to any Node host. On Vercel, import the repo and it builds with zero config. There are no required environment variables. If you fork it, update the domain in lib/tools.ts (SITE_URL) and app/robots.ts so the sitemap and canonical URLs point at your host, and update GITHUB_REPO in lib/tools.ts so the star-count link points at your fork.
The tool set is a single typed registry in lib/tools.ts. The home grid, per-tool metadata, JSON-LD (SoftwareApplication, breadcrumb, FAQ), social share images, hero, FAQ, CTA, sitemap, web manifest, and command palette all derive from it. To add a tool:
- Add an entry to the
TOOLSarray inlib/tools.ts. - Create
app/(tools)/<slug>/page.tsx(metadata plus your client component), its<Name>Client.tsx, and anopengraph-image.tsx(a few lines that pass the registry entry to the shared renderer). - Put pure logic in
lib/and cover it with a test inlib/__tests__/.
app/ shell (layout, error/not-found boundaries, metadata routes)
app/(tools)/ one route per tool, sharing a layout and ToolPageLayout
components/shared/ header, theme, toasts, command palette, reusable UI
lib/ pure per-tool logic (parsing, crypto, PDF, conversions), unit-tested
lib/tools.ts the tool registry (single source of truth)
lib/jsonLd.ts schema.org builders derived from the registry
lib/og.tsx the shared Open Graph card renderer
public/fonts/ subset Noto Sans used by the invoice PDF and OG cards (OFL, see OFL.txt)
middleware.ts per-request CSP nonce
developis the default and integration branch;productiondeploys to tools.codercops.com. Thedevelopbranch deploys to a staging domain, and every PR gets a Vercel preview.- Work on
feat/*/fix/*/chore/*/docs/*offdevelop, PR intodevelopand squash-merge. - Release by merging a
develop→productionPR as a merge commit. That tagsvX.Y.Z, publishes a GitHub Release, smoke-tests production, and fast-forwardsdevelop.
See CONTRIBUTING.md for the full flow.
Contributions are welcome. See CONTRIBUTING.md and the Code of Conduct. In short: keep logic in lib/, add a test, and make sure npm run lint && npm run test && npm run build passes. If a tool proves useful, a star helps other developers find it.
Found a vulnerability? Please report it privately per SECURITY.md rather than opening a public issue.
MIT, see LICENSE. The bundled Noto Sans font subsets are under the SIL Open Font License 1.1 (public/fonts/OFL.txt).
The tool social cards in .github/assets/ are generated from lib/og.tsx; regenerate them if a tool's name or copy changes.



