About Yorbo
Updated 2026-07-29
Yorbo is a modern URL shortener built with Next.js App Router. It creates clean short links, generates QR codes, records click analytics, and provides a localized dashboard for managing and reviewing link performance.
Features
- Create short links on a dedicated shortener page with generated or custom short codes.
- Redirect root-level short links such as
/abc123to the original destination. - Generate QR codes for every short link.
- Generate free static or trackable QR codes with colors, sizing, margins, error correction, center logos, and custom finder pattern styles.
- Copy, share, and download QR assets from the link detail page.
- Offer an optional safety preview page before visitors continue to the final destination.
- Manage link history with search, filtering, sorting, pagination, refresh, and delete actions.
- View analytics with date-range filters, quick ranges, KPI cards, charts, device/channel breakdowns, and recent click events.
- Cache analytics aggregation through a dedicated API route using Cloudflare-friendly
Cache-Controlheaders. - Support English and Thai locales through
next-intl. - Provide policy, terms, and support pages with the same design system.
Tech stack
- Next.js 16 with App Router
- React 19 and TypeScript
- Tailwind CSS
- shadcn/ui and Radix UI primitives
- Drizzle ORM with an SQLite-compatible schema
- next-intl for internationalization
- Recharts for analytics charts
- vinext (Vite-based Next.js) with Wrangler for Cloudflare Workers deployment
App routes
/[locale]— landing page for short links and QR code generation/[locale]/shorten— dedicated short link builder/[locale]/history— link management and history table/[locale]/qr— free standalone QR code generator/[locale]/analytic— analytics dashboard/[locale]/link/[shortCode]— short link details, QR code, copy, and share actions/[locale]/preview/[shortCode]— optional safety preview before continuing to the destination/[locale]/policy— privacy policy/[locale]/terms— terms of service/[locale]/supporting-me— support/donation page/r/[shortCode]— internal redirect target for root-level short links
Root short links are handled by middleware, which rewrites eligible single-segment paths to /r/[shortCode] while keeping application and locale routes reserved.
API routes
POST /api/links— create a short linkGET /api/links— list links with pagination, search, filtering, and sortingGET /api/links/[shortCode]— fetch one linkDELETE /api/links/[shortCode]— delete a link and its analytics eventsGET /api/links/[shortCode]/qr— generate a QR code imageGET /api/links/[shortCode]/analytics— fetch analytics for one linkGET /api/analytics— fetch dashboard analytics with CDN cache headers
The analytics dashboard API uses:
Cache-Control: public, s-maxage=60, stale-while-revalidate=300
This allows Cloudflare to serve repeated analytics requests from shared cache for a short period and reduce repeated database aggregation work.
Data model
- links — short codes, destination URLs, click totals, and timestamps
- analytics — click events, request metadata, device/browser/country fields, acquisition fields, and timestamps
Analytics records are linked to links and indexed for link/date, country, device, channel, and created-at queries.
Deployment
Yorbo deploys as a Cloudflare Worker with D1 bindings. Use the project’s preview command before deploying, then deploy with Wrangler after updating bindings and regenerating types when needed.
Support our work
If these apps help you, you can buy us a coffee.
Buy me a coffeeOpens in a new tab