Back to projects

Case study / Solo product engineer

WishCanvas.

A collaborative birthday keepsake that turns messages, photos, and voice notes into a personal reveal.

Live product · Designed and built end to end

The recipient moment: a public sample reveal pairs a letter, a voice-note player, and a photo memory in one guided presentation. Illustrative demo content, not customer messages.

My contribution

Solo product engineer — design, architecture, application logic, deployment, and ongoing refinement.

Built with

  • React
  • TypeScript
  • PostgreSQL
  • Resend
  • Sentry

Outcome

Live at wishcanvas.app, with the core product complete and ongoing refinement focused on polish. I own the experience from the first creation step through the recipient's birthday reveal. Account access, the organizer dashboard, creation previews, and playback controls were reviewed for this case study; paid checkout and new contributions were not exercised.

Visit live product ↗

The context

WishCanvas brings birthday messages, photos, and voice notes into one shared keepsake. I designed and built the product end to end: interface, architecture, application logic, and deployment. The UI was an intentional part of the product, from the organizer's dashboard through card creation to the birthday view. Each stage needed to make the celebration feel special.

The problem

A group chat can collect birthday wishes, but it does not turn them into a deliberate moment for the person receiving them. WishCanvas gives the organizer a way to gather contributions, shape the presentation, and deliver a keepsake that feels personal rather than like another feed of comments.

Designing for three different moments

The organizer needs clarity: who the canvas is for, how it will look, and what is ready to share. The contributor needs a direct path into the same card. The recipient needs a reveal that rewards the care everyone put in. I treated the dashboard, creation studio, and birthday views as connected parts of that experience. In the studio, a live preview makes theme and layout choices visible before the canvas is created.

Evidence / Product walkthrough

What the current build demonstrates

  1. 01

    Organizer → celebration timeline

    Signed into the creator account and reviewed the dashboard, timeline, and delivered-keepsake navigation.

  2. 02

    Creation → live visual feedback

    Entered sample recipient details and an organizer note, changed the palette, and followed the creation steps through soundtrack and contribution settings without publishing.

  3. 03

    Recipient → guided reveal

    Reviewed the public story demo and an existing birthday playback view with previous, next, play, and pause controls.

  4. 04

    Premium → account-level upgrade

    The current public pricing describes a one-time Pro account upgrade across canvases. Checkout, automated delivery, and authorization enforcement were not exercised in this walkthrough.

A closer look

Tap any image to enlarge and explore the details.

The creator studio makes customization tangible: the selected palette and presentation mode update the keepsake preview alongside the form. Shown with an unsaved sample canvas.
The public sample reveal on mobile. Message hierarchy, playback, and navigation have to work within a small screen while preserving the feeling of a personal gift.
Mobile creation begins with the same live keepsake stage. This sample preview is separate from existing birthday content.
The organizer dashboard connects a birthday timeline to a celebration lifecycle, from planning and collection to delivered keepsakes. Shown from my own creator account.

Key features

  • A creator dashboard for planning and revisiting birthday celebrations
  • Shared canvases for written wishes, photos, and voice-note contributions
  • A step-by-step creation studio with a live preview, palettes, and presentation modes
  • Story, Freeform, and Bento views for different kinds of keepsake
  • Free and Pro account capabilities, with premium customization and contribution features

Where product craft meets engineering

The hard part was keeping a highly customizable interface coherent while supporting multiple contributions to one card. Premium functionality and security added another set of boundaries to own: what contributors can add, what creators can manage, and which capabilities belong to an upgraded account. I handled the design and implementation across those areas. A review of the live interface can demonstrate the workflows, but it does not establish the correctness of server-side permissions or payment enforcement.