All projects

Technical Project

identi.

I built a digital business card platform from profile editing through deployment. Teams manage branded contact pages, photos, and engagement analytics in one directory; visitors share profiles by QR code or save contact details directly to their phones. Image conversion, cropping, and contact-file generation run in the browser.

TimelineFeb 2026 – Present
My roleSolo builder · Product, full-stack & deployment
StatusSelf-hosted · Zero Trust

The problem

A digital business card needs to be quick to share and easy to maintain. The platform brings profile editing, photo handling, company branding, and engagement reporting into one admin workflow.

How I approached it

I built the product end to end with Next.js Server Components and type-safe Server Actions over a five-table Drizzle and SQLite schema. Photo editing and contact-file generation run in the browser. The app runs in Docker on private self-hosted infrastructure behind Traefik, utilizing Cloudflare Zero Trust for secure edge ingress without exposing open inbound ports.

Inside the build

  • Built a client-side photo pipeline for HEIC-to-JPEG conversion, circular cropping, and canvas rendering; the 1.3 MB HEIC decoder loads only when needed.
  • Generated vCard 3.0 contact files and QR codes in the browser, with readable profile URLs and collision-checked short links for sharing.
  • Added per-profile, group, and company visit analytics with time-window filters, CSV export, and date-range deletion; admin views are excluded from visit counts.
  • Implemented pointer- and keyboard-operated drag-and-drop ordering for people and profile links, with optimistic updates that preserve hidden rows in filtered views.
  • Built automatic link detection for 19 social platforms, plus company, email, and document links, to assign icons and labels from pasted URLs.
  • Replaced a custom webhook and PM2 deployment with Docker Compose and GitHub Actions, including a dedicated schema migrator, a non-root runtime, and persistent SQLite storage.

The result

Delivered a complete directory-to-contact-sharing workflow with branded profiles, photo editing, and engagement reporting. A one-command developer setup creates credentials and demo data without overwriting existing records, with three tests covering the setup tooling.