$ cat projekty/pivot.md

cutty.dev — fast link shortener

┌─[ status: launch-ready ]─[ v0.8.0 ]─[ premiere: 06.03.2026 · ProductHunt ]─[ languages: 25 ]─[ VC: 0 PLN, thank god ]─┐

cutty.dev — a link shortener I built because every existing one either steals your data or charges you for the fifth link per month. Usually both at the same time.

Short endings (3 characters, not eight random bushes), link passwords, QR codes, statistics with country info. You can shorten your first link without an account — because asking for an email before showing you anything is a crime that should carry a prison sentence. Server in the EU, zero ad-tech, zero "accept 47 trusted advertising partners".

bit.ly gives you 5 links per month and sells the rest. I give you everything and sell nothing. Someone here doesn't understand business, and I'm afraid it's me.

25 languages, seriously

Including Arabic and Hebrew (right-to-left), Japanese, Korean, and Chinese. Translated by a local AI model on my own hardware — because sending text to an API in the US or China just to brag about being "privacy-first" would be slightly ironic. The site automatically detects where you're from and serves your language. From Tokyo you get Japanese, from Tel Aviv Hebrew with correct text direction, from Brzeziny — Polish.

What it can do

  • Branded endings/your-brand instead of /k3n9X. The slug never returns to the pool, so your printed QR code won't suddenly redirect to someone else's page a year from now. // looking at you, other shorteners.
  • Link password — bcrypt, not an Excel spreadsheet.
  • QR codes — PNG and SVG, ready for print, no "upgrade to remove" watermark.
  • Statistics — country, device, referrer. IP hashed, I don't collect people.
  • Expiration + click limit + UTM — for those who plan campaigns instead of improvising.
  • No registration required to start — later you can claim the link to an account, statistics remain.

Stack (for the curious and recruiters)

Astro 5 + SQLite + Drizzle + Tailwind. Docker + Caddy with auto-HTTPS. Custom transactional email box. Local LLM for translations. All on my own server, because “the cloud is someone else’s computer,” and I don’t trust anyone else’s computers. Built solo, after hours, between one and the next “this is really the last feature.”

Status: ready (by a miracle)

v0.8.0, launch-ready. I manually clicked through every path on live production, character by character — because unit tests aren’t enough to sleep peacefully the night before launch:

  • shortening → 3-character slug → redirect ✓
  • QR PNG and SVG ✓   login (Google/LinkedIn/X/email PIN) ✓
  • statistics visible only to the link owner ✓
  • 25 languages, og:image per locale, monitoring + alerts ✓

June 3rd goes public on ProductHunt. // if you’re reading this after launch and haven’t voted — I know where you live. (I don’t. but it sounds scarier.)

Later, maybe

Paid plans (custom domains, higher limits, branding removed) — unlocked when someone actually uses it. “Shorten, share, view stats” stays free forever. Next: public API, smart routing, browser extensions. // the queue is not a roadmap. a roadmap is a declaration. the queue is “maybe.”

Leave a Reply

// markdown in comments: yes.