03ConsumerMedia-heavyGerman/EU Market
Remember Well
An Instagram-style memorial platform serving the German/EU market — tribute pages with stories and galleries, background music, viewer roles, QR 'Soul Star' medallions, and per-tenant white-label branding.
Visit remember-well.com



Overview
Remember Well gives families living memorial pages organized into About, Media, and Tributes — with stories, photo/video galleries, background music, bookmarks, and granular viewer access. Physical Soul Star medallions carry QR codes that activate into pages. Multiple brands run on one platform through a white-label Apps layer.
The problem
Families wanted a social-network-familiar way to remember loved ones publicly or privately, including rich media (video, audio, embedded YouTube/Vimeo), while the business needed to sell physical medallions and run multiple branded storefronts on shared infrastructure.
Context
A German-first product (i18n EN/DE with German defaults and localized transactional templates) that evolved continuously — roughly 40 database migrations between 2024 and 2025 track the platform's growth from MVP to mature multi-brand system.
My role
Full-stack engineer across the React/Vite frontend (~25 page modules), the Express + Prisma/MySQL API (12 routers, ~71 endpoints), and the React admin panel.
- Built the media pipeline: upload → ffmpeg transcode to web-optimized MP4 (≤720p, faststart, fps cap), first-frame thumbnail extraction, sharp JPEG optimization, audio normalization, then storage upload
- Implemented passwordless magic-link login with signed JWT login tokens, 5-digit access codes, and language-resolved SendGrid template fallbacks, alongside Google OAuth
- Engineered the QR tag lifecycle: bulk UUID tag generation to printable CSV, CSV import activation, passcode protection, and scan-time routing
- Developed white-label branding resolution — origin-matched tenant config injecting CSS custom properties for colors/logos per deployment
- Built stories/slideshow playback with background-audio modes, YouTube/Vimeo embed handling with oEmbed thumbnails, and polymorphic comments/likes
- Implemented viewer/admin invitations, access-request approvals, bookmarks, and admin bulk tools including login-as-user
Architecture & technical decisions
- Client/server split
- React 18 + Vite + Redux Toolkit frontend; Node.js/Express API with Prisma on MySQL; separate React admin SPA — all deployed independently.
- Realtime
- Socket.io server with JWT handshake middleware and per-user rooms powering upload progress and notification events.
- Storage & media
- S3-compatible object storage (DigitalOcean Spaces) with gallery/temp key organization; conversions tuned per file for web playback quality versus size.
- Tenancy
- Apps table defines appName, URLs, logos, banner, primary/secondary colors, favicon, and store links; users and tags carry appId scoping so one deployment serves many brands.
Key features
Rich tribute pages
Tabbed memorial view (About / Media / Tributes) with biography, cover/portrait imagery, story highlights, galleries, and moodboard-style bookmarking.
QR medallion fulfillment
Operations generate sheets of unique tags as CSV for physical production; scanned or entered codes walk users through linking a tag to a new or existing profile.
Multilingual communication
Login, verification, and notification emails resolved per user language with template-ID fallback chains and an error-report inbox on send failures.
Access collaboration
Invite viewers or co-managers, approve access requests, revoke at any time — mirrored in the admin panel with impersonation for support.
Challenges & solutions
Challenge 01
Synchronous in-request video transcoding threatened to block the API under concurrent family uploads.
Solution — Tuned ffmpeg presets per input (resolution scaling, CRF, faststart) and designed a sequential conversion queue with realtime Pusher progress events to keep the API responsive and users informed during processing.
Challenge 02
Passwordless login had to feel trustworthy for a grieving, often older audience across languages.
Solution — Combined a signed, expiring login token in the email link with a fallback 5-digit code, rendered through per-language SendGrid dynamic templates selected from the user's locale.
Challenge 03
Multiple customer brands on one deployment required runtime theming without separate builds.
Solution — Origin-matched brand resolution loads the right tenant configuration and injects CSS variables for colors and logos, letting each brand ship its own domain against shared infrastructure.
Outcome & what makes it interesting
Live commercial platform (remember-well.com) operating multi-brand memorial products for the EU market, with sustained feature velocity documented across ~40 migrations.
- Owning an end-to-end media pipeline — transcode, thumbnail, optimize, store — for emotionally significant user content
- Blending physical products (printed medallions) with digital activation flows
- Runtime white-labeling that let sales onboard new brands without engineering involvement