GoLinks

Type: Software Status: In Progress Deadline: TBD (side project, no rush) Created: 2026-03-25

What is this?

A personal go link shortener — type go/docs in your browser and get redirected to the real URL. Three components: a Chrome extension for interception + quick-create, a Go backend API with SQLite, and a simple web UI for browsing/searching all links.

Motivation

Go links are high-leverage productivity tools common inside top tech companies (Google, Stripe, etc.), but there’s no clean, lightweight, self-hosted option that’s easy to run personally AND enterprise-approvable. This fills that gap — start personal, grow to team/org use without re-architecting.

What does success look like?

A working system that I use daily, packaged well enough that someone else could set it up from the README in under 10 minutes. No security footguns, no external dependencies beyond the single binary + Chrome extension.

Technical

  • Stack: Go backend (net/http + go-sqlite3), Chrome extension (Manifest V3), vanilla HTML/JS web UI
  • Repo: ~/projects/golinks
  • Deploy target: Local binary to start; designed for easy Docker/VM deployment later
  • Intended users: Me first, then shareable with friends/coworkers; designed for eventual enterprise approval

Architecture

┌─────────────────┐     ┌──────────────────────┐
│ Chrome Extension │────▶│  Go Backend (:80)     │
│ (Manifest V3)   │     │  ┌──────────────────┐ │
└─────────────────┘     │  │   SQLite DB       │ │
                        │  └──────────────────┘ │
┌─────────────────┐     │  ┌──────────────────┐ │
│ Browser (Web UI)│────▶│  │ Static HTML/JS    │ │
└─────────────────┘     │  └──────────────────┘ │
                        └──────────────────────┘

Design principles

  • Single binary — no runtime deps, no managed DB
  • Auth middleware slot — noop locally, plug in SSO/OIDC later
  • Audit log — every create/update/delete logged with timestamp + user
  • No external calls — fully self-contained, nothing phones home

Roadmap

Phase 1 — Core (done) M-1 through M-7. Backend, web UI, Chrome extension, Docker, launchd, Render config, tests + CI. The tool works end-to-end on a single machine.

Phase 2 — Personal polish (done) M-8: Single make setup command, dashboard UX (inline edit, sort, favicons), import/export, extension badge + omnibox, aliases.

Phase 3 — Multi-device M-9: Deploy a real Render instance. Extension falls back to remote when local is unavailable. API key auth for remote access. HTTPS. Decide sync model (remote-primary vs bidirectional).

Phase 4 — Open source M-10: License, cleanup, Chrome Web Store listing, public repo, launch post. Goal: someone can go from zero to working go links in under 10 minutes.

Phase 5 — Enterprise M-11: Fork to Georgian GitHub. SSO/OIDC auth, corporate DNS, enterprise Chrome extension distribution, admin UI, security review, IT runbook. This is a separate fork — the open source version stays clean and personal-first.