We recently launched CardDrop, a Progressive Web App (PWA) that lets creative professionals ditch paper business cards for a customizable digital version. It’s a project that started as a small feature inside a niche SaaS we were developing. During a few demos, people outside that specific industry kept pointing at the digital card and saying, "We’d actually use that."
That was the indicator we needed. We realized the card functionality was being throttled by the niche of its parent app, so we decided to extract it and build it as a standalone product.
The Pivot to SvelteKit
The original version was built in React, but for the standalone launch, we made the deliberate choice to rebuild it using SvelteKit. Since we were working with a self-imposed four-week timeline, we used an LLM to help port the main features over.
However, we didn't just blindly "copy-paste." Following our philosophy of staying close to the metal, we inspected the code at every step. We made sure the AI wasn't over-engineering or hallucinating, and that we were using idiomatic Svelte patterns. This "human-in-the-loop" approach kept the codebase clean and performant while allowing us to focus the bulk of our time on the actual app design and landing page.
Designing the Interaction
The heart of the app is the "Card Flip."
-
Front: Displays your identity, bio, and a QR code for quick scanning.
-
Back: Houses all your social links and contact actions.
We initially wondered if this was leaning too far into skeuomorphism. But after testing it across various devices via BrowserStack and getting feedback from friends and family, it was clear that people loved the tactile feel. It makes the digital exchange feel a bit more real and memorable compared to a static "link-in-bio" list.
The Stack
To keep things fast and "installable" as a PWA, we went with a unified full-stack architecture:
-
SvelteKit: Handling the frontend, API, and SSR.
-
Turso & Drizzle: For a lightweight edge SQLite database.
-
BetterAuth: Managing email and Google OAuth.
-
Cloudflare R2 & Pages: For file storage and global hosting.
Because there were no external stakeholders or "business" consequences, we didn't have to make any major technical trade-offs. We were able to build it exactly how we wanted, focusing on the fundamentals of the Web Platform to ensure offline support and fast load times.
Outcome and Lessons
In about a month, we went from an "aha!" moment during a demo to a fully deployed product with early users. It reminded us that:
-
Rebuilding in a new framework is a great way to deepen expertise if you stay critical of the code being generated.
-
Designing around a single core object (the card) simplifies every architectural decision.
-
User delight (like the card flip) often outweighs the "minimalist" urges we have as devs.
Check it out at card-drop.info or look at the code if you're curious.
The Music
To wrap this one up, here is something from Generación Suicida. They have that raw, fast energy that reminds us of a good four-week sprint.