StealThis .dev

Dating — Swipe Deck

A tactile, phone-framed swipe deck where draggable profile cards tilt and reveal LIKE or NOPE stamps as you fling them left or right. Each card stacks a full-bleed gradient photo, name and age, a short bio and interest chips, with the next card peeking behind. Action buttons for rewind, nope, super-like and like mirror the gestures, and a friendly empty state lands when the deck runs dry. Built for pointer and touch with spring-back physics and a live match toast.

Open in Lab
html css vanilla-js
Targets: JS HTML

Code

A mobile-app-style swipe deck rendered inside a centered ~430px phone frame. Each profile card fills the frame with a soft gradient portrait, a gradient scrim at the bottom, the person’s name and age, a one-line bio, a distance badge, and a row of interest chips. Cards are physically draggable: press and drag with a mouse or finger and the top card follows your pointer, rotating slightly and fading in a green LIKE stamp to the right or a coral NOPE stamp to the left. Release past the threshold to fling it off-screen; release short and it springs back with an elastic ease.

Below the deck sits a row of circular action buttons — rewind, nope, super-like, and like — that trigger the same animations programmatically, so the deck is fully usable without gestures and keyboard-friendly. A rewind button restores the last dismissed profile, and a live counter tracks how many people are left. Every like has a chance to surface a celebratory match toast.

When the last card leaves the stack, a warm empty state fades in with a reset button to reshuffle the deck. The whole thing is vanilla JS with a small pointer-events engine, spring-back physics, and no dependencies — drop the three files in and it just runs.