Skip to content

Repository files navigation

Kindred

A compatibility app for the people already in your life. You fill out a questionnaire about yourself, connect your friends, and reveal how compatible you are with each of them across the dimensions that actually predict a good relationship. Built for adults in their 30s and 40s who want depth over volume: close friendships first, dating where it fits.

Status: working prototype. Every surface renders end to end over a typed oRPC layer. Username-only sign-in and profile editing persist to Postgres, with an in-memory fallback so the app runs without Docker. Compatibility scores are still authored seed data (the matching model in docs/prd/06-matching.md is designed, not yet computed). Kindred is a working name.

The compatibility and questionnaire interaction patterns are modeled on 222.place; the color language and product direction are our own.

Surfaces

Route Surface What it does
/ Home The premise, plus username-only sign-in
/profile Profile The self-questionnaire; every question edits and saves in a dialog
/friends Compatibility Your friends, with pairwise scores that animate on reveal
/friends/[id] Detail One pair: the score, the breakdown, and shared quirks
/friends/add Add friends Search, requests, and suggestions

Tech stack

Layer Choice
Package manager pnpm 11, Node >= 24
Framework Next.js 16, App Router, TypeScript strict
Data layer oRPC (typed procedures at /rpc) with zod input validation
Auth Username-only (no passwords), httpOnly cookie session
Persistence Postgres 16 via Docker Compose, postgres.js; in-memory fallback when unset
Styling Tailwind v4 (@theme), CVA with cn(), an editorial serif over Geist
Testing Vitest

The authoritative stack, data-layer, and seed-to-Postgres notes are docs/prd/07-architecture.md.

Getting started

pnpm install      # install deps
pnpm dev          # local dev server
pnpm build        # production build
pnpm lint:check   # eslint
pnpm type:check   # typescript
pnpm test         # vitest

docker compose up -d   # Postgres on :5433 for persistence, then set DATABASE_URL (.env.example)

Without DATABASE_URL set (or if the database is unreachable) the app runs against an in-process store, so pnpm dev works out of the box; bring up Docker for real persistence.

Repo structure

.
├── CLAUDE.md               # agent orientation (CLAUDE.md symlinks here)
├── docker-compose.yml      # Postgres 16 for the persistence target
├── .claude/skills/         # vendored house-standard skills (symlink)
├── .agents/skills/         # same skills, agent-agnostic path (symlink)
├── docs/
│   └── prd/                # the numbered product docs, read in order
└── src/
    ├── app/                # routes: /, /profile, /friends, /friends/[id], /friends/add, /rpc
    ├── components/         # atoms · molecules · organisms · templates
    ├── server/             # oRPC routers, auth, db client + schema, stores
    ├── constants/          # seed data + site config
    ├── types/              # domain types (profile, friends, user)
    ├── themes/             # Tailwind v4 token files
    └── utils/              # cn/cva, dates, browser oRPC client

Docs

House standards (component shape, data discipline, Next.js conventions, accessibility, performance, testing, seo, git, writing, process) are vendored as skills, symlinked at .claude/skills/ and .agents/skills/. The PRD (docs/prd/) is the product pipeline:

Doc Owns
01-brief What Kindred is, the audience, the aesthetic
02-design-system Color, type, and the component inventory
03-profile The self-questionnaire surface
04-compatibility The friends list and reveal
05-add-friends The add-friends surface (our own, not in the source)
06-matching Preliminary compatibility-scoring model
07-architecture Stack, oRPC data layer, seed-to-Postgres path

For AI-agent orientation see CLAUDE.md; CLAUDE.md symlinks to it.

About

A compatibility app for the people already in your life — questionnaire, friends, and pairwise compatibility scores. Next.js 16, oRPC, Postgres.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages