← Project index
strictly mark

strictly

A local-first inspector for copied configuration, credentials, and connection strings.

Intent

strictly was built to catch the tiny characters and structural mistakes that make copied configuration fail in ways that are difficult to diagnose.

The problem is invisible

Configuration is often copied from terminals, screenshots, dashboards, and chat messages. A zero-width space, smart quote, Unicode dash, OCR substitution, or unencoded space can look correct while changing the value that reaches an application.

The resulting error is rarely helpful. A space in a password can look like an authentication failure, while a space in a host can look like a DNS outage. A valid connection string can also point to the wrong branch, project, or pooling mode.

Inspection without exposure

strictly is a local-first inspector for connection strings, environment files, credentials, and configuration copied from images. Text stays in memory, the web app has no backend, and after its static assets load it makes no network calls.

Text intake
Inspect URIs, dotenv blocks, ADO.NET strings, JSON-like configuration, and secret-like values.
Screenshot intake
Run OCR locally on PNG, JPEG, or WebP images before reviewing the extracted value.
Character view
Make invisible and ambiguous characters visible at their exact positions.
Explicit fixes
Review a character-level diff and choose a complete proposed value. Nothing is changed automatically.

A small library underneath

The product is split into a zero-runtime-dependency TypeScript library and a static Vite/React web app. A shared parser and rule registry classify the input before provider-specific checks run, while universal character checks apply to every value.

Connection strings receive the deepest semantic checks today, including URI structure, query parameters, Neon direct versus pooler hints, and Supabase session versus transaction pooling observations. Unrecognized plain text is deliberately left alone apart from those universal checks.

Correctness is part of the interface

The hard part was making the tool safe to trust. Original and proposed values remain separate, fixes are never auto-applied, copy actions require an explicit version, and the library has no network calls, environment reads, storage, logging, or time-dependent decisions.

Tradeoff: static inspection can expose suspicious structure and characters, but it cannot prove that a credential is current or that a valid endpoint is the one a user intended. The product makes that boundary visible instead of pretending to validate what it cannot know.

Read the implementation