Back to projects

Tools

BriefLi

A shortlink manager I built and use every day

React 19TypeScriptViteSupabaseClerkVercelGemini APIZod

Role

Creator & Maintainer

Duration

Ongoing

Date

2025 - Present

Type

Personal Product

By the Numbers

Live

Status

56

Commits

2

SQL Migrations

Overview

BriefLi is my personal link infrastructure, running live at s.ihmorol.cv. It creates and organizes shortlinks with Gemini-suggested slugs, tracks clicks atomically through a Postgres RPC, separates public and personal link spaces behind Clerk authentication, and supports soft delete with trash and restore. Built with React 19 and TypeScript on Vite, a Vercel serverless API, and Supabase Postgres with two documented SQL migrations.

Tech Stack

React 19TypeScriptViteSupabaseClerkVercelGemini APIZod

Inside the Project

What it does, how it works, and what it ships.

warning

The Itch

I share study guides, project trackers, and resources constantly, and long URLs with random slugs are impossible to remember or manage. Existing shorteners don't organize links or suggest meaningful names.

lightbulb

The Product

Every link gets a unique, collision-checked code or an AI-suggested human-readable slug, and the Gemini key stays server-side. Redirects run through Vercel rewrites that serve /:slug from serverless functions; every redirect increments the click counter atomically via a Postgres RPC. Zod validates every payload, and the README documents the full API surface and authorization rules.

  • AI slug suggestions (Gemini, server-side key)
  • Atomic click counting via Postgres RPC
  • Public + Clerk-authenticated personal links
  • Recoverable trash instead of hard deletes
star

Shipped Extras

  • Two SQL migrations with a documented path
  • USER_MANUAL.md for non-technical use
  • Full API-surface table in the README

Outcomes

Small product, real daily utility.

link

Live

at s.ihmorol.cv

smart_toy

AI

Slug Suggestions

storage

SQL

Supabase + Migrations

“Building a product you personally depend on is the fastest feedback loop there is.”
Personal Reflection

Interested in this project?

Reach out for source code walkthroughs or collaboration.