Perception
3D visualization of how couples see their relationship differently
Overview
Perception grew out of an interest in how people experience relationships differently. Partners take a quiz independently, 32 questions across 8 psychological dimensions (emotional-security, communication, empathic-accuracy, conflict-resolution, intimacy, autonomy, shared-identity, appreciation), then the system scores responses and visualizes gaps between self-image and partner perception. The 3D body map uses React Three Fiber to render 400+ colored particles mapped to body regions, inspired by Nummenmaa et al. (2014) research on bodily maps of emotions. D3.js draws multi-layer radar charts overlaying self, partner, and meta-perception scores. The Fastify backend handles auth (email/password, magic links, Google OAuth), sessions, and partner invites, with Prisma/Postgres storing all quiz data. Built as a 6-package Turborepo (web, server, db, shared, monitor, scaler).
Built With
3D Body Maps
The body map renders 400+ colored particles mapped to body regions via React Thr...
Radar Visualizations
A multi-layer D3.js radar chart overlays self, partner, and meta-perception scor...
Research-Backed
The quiz includes 32 questions derived from ECR-R, Gottman, IOS, Sternberg, and ...
3D Body Maps
The body map renders 400+ colored particles mapped to body regions via...
Radar Visualizations
A multi-layer D3.js radar chart overlays self, partner, and meta-perce...
Research-Backed
The quiz includes 32 questions derived from ECR-R, Gottman, IOS, Stern...
Architecture
Key Highlights
3D Body Maps
The body map renders 400+ colored particles mapped to body regions via React Three Fiber, inspired by Nummenmaa et al. (2014) research.
Radar Visualizations
A multi-layer D3.js radar chart overlays self, partner, and meta-perception scores across 8 dimensions.
Research-Backed
The quiz includes 32 questions derived from ECR-R, Gottman, IOS, Sternberg, and Ickes frameworks across 8 psychological dimensions.
Triple Auth
Users can sign in via email/password, magic link (Resend), or Google OAuth, with all three methods using JWT refresh tokens.
Monorepo
The codebase is organized as a 6-package Turborepo (web, server, db, shared, monitor, scaler) with shared scoring logic and independent deploys.

