In-house product · Marketing and link management

URLNOW.ME

Secure short links, tracked QR codes, profile pages and branded domains, with click analytics and team workspaces.

Region
Online, any country
Status
Live
Framework
Laravel 12
Background jobs
Laravel Horizon on Redis
Sign-in security
Two-factor (TOTP)
Accounts
Personal and team workspaces
https://urlnow.me/
URLNOW.ME home page

The problem

A link on a poster, a product label or a social profile has to keep working long after it is printed. Teams that share links and QR codes also want to know which ones are used, want the links to carry their own domain, and want more than one person to manage them without passing a single login around.

A bare link shortener covers the first step and little else. Once links are printed, a team needs to be able to trust the service behind them: that the link is safe, that it still resolves, and that someone can change where it points without reprinting.

What we built

URLNOW.ME is a web platform for short links and what grows around them:

  • Secure short links, with custom aliases so a link can say what it is.
  • Tracked QR codes, so a printed code reports how often it is scanned.
  • Profile pages for a person or an organization, with their links in one place.
  • Branded domains, so links use the customer’s own domain.
  • Click analytics for links and QR codes.
  • Team and organization workspaces, so several people manage links under one account.
  • APIs, so links can be created and managed from other software.
  • Two-factor sign-in using authenticator apps (TOTP).

How it runs

URLNOW.ME is a Laravel 12 application on MariaDB. Work that does not need to happen inside a web request runs as background jobs on queues. Those queues use Redis and are managed by Laravel Horizon, which shows queue load, failed jobs and retries in one place.

The APIs are authenticated with Laravel Passport and Laravel Sanctum, which issue and check tokens for API clients. Accounts can require a second factor at sign-in. Errors in the application and in background jobs are reported to Sentry, so problems show up with their context instead of waiting for a user to describe them.

Like our other products, URLNOW.ME runs in Docker on a Linux server we manage, behind Caddy, with HTTPS certificates from Let’s Encrypt issued and renewed automatically. Branded domains make HTTPS part of the product, not only part of the hosting: each customer domain needs a valid certificate before its links can be served safely.

What it taught us

Running a link service in production shaped habits we apply to client web applications:

  • Keep slow work out of the request. Anything that can wait goes to a queue, so pages and redirects stay fast when traffic rises. We plan which work belongs in background jobs early in a client build.
  • Make queues visible. A queue is only reliable if someone can see what is waiting, what failed and why. We set up queue monitoring with the queues, not after the first problem.
  • Report errors with context. Error monitoring from the first release means problems arrive with the request, the user and the stack trace attached.
  • Build team accounts in from the start. Workspaces, roles and shared ownership are much harder to add later. When a client product might be used by teams, we design for it in the first data model.
  • Offer two-factor sign-in. It is a small feature for the user and a large reduction in risk for an account that controls public links.
  • Design the API alongside the interface. When other software needs the same actions as the web app, both should go through the same rules.

Where it’s going

URLNOW.ME is live and maintained by GoProgs. Its scope is the one described here: short links, QR codes, profile pages, branded domains, analytics and team workspaces, with work continuing inside that scope.

Next step

Want software built with the same care?

Share the goal, rough budget and timing. We reply with questions, a next step, or an invitation to a short call. NDA on request.

Start a similar project