Persona
A secure, unified, and portable identity platform for creators, built on the edge.
Project Overview
Persona is an all-in-one identity engine designed to replace traditional "link-in-bio" tools with a faster and professionally branded solution. It allows users to consolidate their social presence, professional portfolio, and contact information into a single, high-performance URL. The project focuses on extreme data efficiency and sub-second global latency.
The Problem
Standard link-aggregation tools often result in heavy page loads and bloated data structures. When sharing an identity via URL parameters or storing it in a serverless database like Cloudflare D1, every byte matters to maintain speed and stay within architectural limits.
The Solution
I built Persona using TanStack Start and Cloudflare Workers to ensure sub-second global delivery. To solve the data bloat problem, I developed a custom minification layer that strips unnecessary metadata before passing the payload to LZ-String for URI-safe compression.
Key Features
-
Edge-First Rendering: Utilizing TanStack Start and Cloudflare Workers for near-instantaneous global delivery.
-
Extreme Data Minification: A custom mapping engine that transforms verbose JSON objects into single-character key-value pairs (e.g., name to n, socials to s).
-
URI-Safe Compression: Integration of LZ-String to pack complex persona profiles into short, shareable URL components.
-
Dynamic Theming: A modern UI stack using Tailwind CSS and Lucide icons for a clean, professional aesthetic.
Technical Stack
-
Framework: TanStack Start (React)
-
Runtime: Cloudflare Workers
-
Database: No Database
-
Image Storage: imgbb
-
Compression: LZ-String
-
Styling: Tailwind CSS, Lucide-React
Challenges Overcome: Optimizing the Payload
The primary technical challenge was squeezing a full user profile—including names, bios, and multiple social links—into a compressed format small enough for seamless URL transport.
I implemented a robust Minification/De-minification layer (mapPersonaToMinified) that conditionally includes only populated fields and maps long keys to single characters. I significantly reduced the raw JSON size before it even hits the compression stage. This ensures that even a detailed "Persona" remains a lightweight string that the edge can process instantly.