Core Products
Clean little interactions carrying the team on their back.
Clean little interactions carrying the team on their back.
A scattered collection of stamp cards that you can fling around a grid board with real momentum, then tap to spring one into the center at 1.5x scale behind a blurred backdrop. A shuffle button re-scatters every card with randomized positions and rotations.
Built with react-native-reanimated v4 (react-native-worklets) and react-native-gesture-handler. Each stamp owns its own shared values for translate, scale and rotation; a Pan gesture drives dragging with withDecay momentum clamped to the screen bounds, while a tap springs the card to center via withSpring. Selection state is broadcast through a shared selectProgress value and synced into every card with useAnimatedReaction, so untouched stamps animate back to their stored positions on deselect. The backdrop is an expo-blur BlurView whose intensity is animated through useAnimatedProps (interpolated 0→30). A shared order array manages z-index so the active card always stacks on top, and shuffle uses positions.modify to randomize layout on the UI thread. No native code beyond the listed libs — runs on Expo SDK 56 (iOS + Android).
A denim zipper that unzips and parts the screen like a curtain. The pull rides down the seam, the teeth split open along a soft rounded V, then both fabric halves slide off-screen to reveal the app underneath. Great as a splash, intro, or screen-transition overlay.
An interactive x-ray effect that reveals a hidden image underneath a base photo through a circular mask the user drags around. Pan to move the lens and long-press to reset, perfect for product showcases, before/after reveals, or playful onboarding screens.
A full-screen animated swimming-pool water effect with drifting caustics, refraction ripples, and a buoyant rubber duck whose shadow wobbles on the tiled floor below. Built as a Skia runtime shader (SkSL) driven by Reanimated, it makes a great living background for splash screens, onboarding, or empty states.