A privacy-focused, client-side vCard QR code generator. Create QR codes that encode contact information in vCard 3.0 format—scan to add a contact on most phones.
This application is designed with privacy as a core principle. Here's exactly what it does and doesn't do:
qrcode npm package is used (runs locally)qrcode librarynpm install
npm run dev
npm run build
npm run preview # to test the build locally
The dist/ folder contains static files ready to deploy anywhere (Netlify, Vercel, GitHub Pages, any static host).
src/
├── App.svelte # Main application, state management
├── main.ts # Entry point
├── app.css # Global styles (Tailwind CSS variables)
├── lib/
│ ├── vcard.ts # vCard 3.0 generation (fully auditable)
│ ├── qr.ts # QR code generation (wraps qrcode lib)
│ └── download.ts # File download utilities
└── components/
├── ContactForm.svelte # Contact input form
├── QrPreview.svelte # QR preview + download actions
├── PhoneInput.svelte # Phone number row component
├── SocialInput.svelte # Social profile row component
└── ui/ # Minimal UI primitives (Button, Card, etc.)
This project was developed using AI coding assistants. The entire codebase—components, styling, documentation, and configuration—was written with AI tools. This is noted for transparency; the code remains fully auditable and the privacy guarantees are verifiable by reading the source.
The app generates vCard 3.0, the most widely compatible format for QR scanners:
BEGIN:VCARD
VERSION:3.0
FN:John Doe
N:Doe;John;;;
TITLE:Software Engineer
ORG:Acme Inc
TEL;TYPE=CELL:+1234567890
EMAIL;TYPE=INTERNET:[email protected]
URL:https://example.com
X-SOCIALPROFILE;type=linkedin:https://linkedin.com/in/johndoe
END:VCARD
MIT - see LICENSE