Skip to main content
← All Projects
tooling2025–2026active

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

Next.js
TypeScript
Three.js
D3.js
Fastify
Prisma
PostgreSQL
Zod
Turborepo
Google OAuth

Architecture

Next.js AppFrontend
React Three Fiber3D Body Map
D3.js RadarVisualization
Fastify APIBackend
Scoring EngineShared Package
localStorageSession Cache
Prisma ORMData Layer
PostgreSQLDatabase

Key Highlights

01

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.

02

Radar Visualizations

A multi-layer D3.js radar chart overlays self, partner, and meta-perception scores across 8 dimensions.

03

Research-Backed

The quiz includes 32 questions derived from ECR-R, Gottman, IOS, Sternberg, and Ickes frameworks across 8 psychological dimensions.

04

Triple Auth

Users can sign in via email/password, magic link (Resend), or Google OAuth, with all three methods using JWT refresh tokens.

05

Monorepo

The codebase is organized as a 6-package Turborepo (web, server, db, shared, monitor, scaler) with shared scoring logic and independent deploys.

Perception screenshot
Perception screenshot

Get in Touch

Want to work together?

Whether you have a project in mind, want to collaborate, or just want to say hi, I'd love to hear from you. Drop me a message and I'll get back to you as soon as I can.