DEV Community

Cover image for I built a zero-account, local-first notepad — and why I think most note apps are solving the wrong problem
twtwa
twtwa

Posted on

I built a zero-account, local-first notepad — and why I think most note apps are solving the wrong problem

The itch

Every time I needed to jot something down quickly — a snippet, a URL, a half-formed idea at 1am — I'd open a new browser tab and start searching for a notepad tool.

The results were always the same: sign up to save your notes. Connect your Google account. Install our desktop app. Enable cloud sync.

For a notepad.

I just wanted to type. So I built one.


What DarkNotepad actually is

DarkNotepad is a minimal online notepad with three hard constraints I set for myself:

  1. No account required — ever. Not even optional.
  2. Nothing leaves your browser — notes live in localStorage, full stop.
  3. Dark mode by default — because most people who need a quick scratchpad are developers, and developers live in dark mode.

That's it. No backend, no user table, no analytics that track what you type.


The stack (it's boring, intentionally)

I kept it simple on purpose:

  • React + react-router-dom for SPA routing
  • react-helmet-async for per-route meta tags (SEO without SSR)
  • vercel.json rewrites to avoid 404s on page refresh for internal routes like /about and /blog
  • JSON-LD (SoftwareApplication schema) in index.html for rich snippets
  • Deployed on Vercel — free tier, zero config

No database. No auth library. No backend whatsoever.

The most interesting technical decision was actually the vercel.json config. SPAs break hard on direct URL access because the server doesn't know about client-side routes. This one-liner fixes it:

{
  "rewrites": [{ "source": "/(.*)", "destination": "/index.html" }]
}
Enter fullscreen mode Exit fullscreen mode

Why local-first for a notepad?

I think most tools default to server-side storage because that's what we're trained to build. But for ephemeral, personal notes — the kind you write and delete the same day — there's no good reason your data needs to leave your machine.

localStorage gives you:

  • Instant persistence with zero latency
  • Works offline by default
  • No GDPR surface — you literally don't have the data
  • Zero infrastructure cost

The tradeoff: notes don't sync across devices. For my use case (quick scratchpad, not a PKM system), that's fine. If you need cross-device sync, use Notion. DarkNotepad is for the 30-second use case.


What I learned shipping this

SEO for tools is different from SEO for content. The homepage competes on transactional keywords ("online notepad dark mode") where established players dominate. The real opportunity is long-tail informational content — articles about eye strain, privacy, local-first architecture. That's where a new domain can actually rank.

Ship the privacy policy before anything else. Not just for legal reasons — it's a trust signal that affects Google AdSense approval, user perception, and how seriously people take your tool.

Product Hunt and communities matter more than organic SEO at launch. Google takes months. Humans take seconds.


What's next

  • More blog content targeting long-tail keywords
  • Keyboard shortcuts
  • Export to .txt / .md
  • Maybe a word count — people keep asking

If you want to take a look: darknotepad.com

And if you're building something similar or have opinions on the local-first approach, I'd genuinely love to hear them in the comments.

Top comments (0)