Skip to content

LixFerox/shortener

Repository files navigation

Shortly

Minimal URL shortener with a React dashboard, categories, analytics, and QR codes.

Features

  • Create, edit, and delete short links
  • Categories and basic analytics
  • QR code generation
  • Token-protected API
  • SQLite storage via Drizzle ORM

Tech stack

  • Frontend: Vite + React + Tailwind
  • Backend: Hono + Drizzle + SQLite
  • Tooling: pnpm, Biome

Project structure

backend/   Hono API + SQLite/Drizzle
frontend/  React dashboard (Vite)

Quick start (local)

pnpm install
cp .env.demo .env
pnpm dev

The frontend runs on Vite and the backend on port 3000 by default.

Environment variables

Copy .env.demo to .env and adjust as needed.

Name Description Example
DB_FILE_NAME SQLite database path (libsql format) file:local.db
BACKEND_PORT Backend port 3000
VITE_BACKEND_TOKEN Bearer token for protected routes supersecrettoken
VITE_BACKEND_API_URL Public API base URL https://mydomain.com

Docker

docker compose up -d --build

If you use Traefik, point VITE_BACKEND_API_URL to your API domain and keep VITE_BACKEND_PORT empty so the frontend doesn’t append :3000.

API auth

All protected routes require a Bearer token.

Authorization: Bearer <VITE_BACKEND_TOKEN>

Scripts

pnpm dev          # run frontend + backend
pnpm dev:backend  # backend only
pnpm dev:frontend # frontend only
pnpm db           # generate + push drizzle migrations
pnpm check        # biome check

About

Minimal URL shortener with a React dashboard, categories, analytics, and QR codes.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages