02

Chicknz

AI / Multi-tenant SaaS

RoleFounder / Full-Stack Engineer
TimelineFeb 2026 — Ongoing
ClientPersonal Product
Chicknz screenshot

Overview

Chicknz is a multi-tenant family management app built around an age-adaptive UI — one codebase that serves four distinct complexity tiers (little, kid, tween, teen) so a four-year-old and a fourteen-year-old get experiences tuned to their reading level, motor skills, and motivation patterns.

The stack is Next.js 15, Prisma + PostgreSQL, Better Auth for parent/kid auth (OAuth + PIN), Vercel AI SDK with Anthropic Claude for background intelligence (chore rotation, summaries, NL task creation), Ably for realtime, and a Vercel Blob layer for media.

Challenge

Family-management apps either ship a single generic UI that doesn't fit any age group, or shard into multiple apps and lose the shared family state. The goal was to keep one shared multi-tenant data model — every query scoped by `familyId` — while presenting four parallel UI tiers driven by CSS custom properties and CVA variants.

Tech Stack

Next.jsTypeScriptPrismaBetter AuthAI SDKBunAbly

Architecture

One Next.js codebase, four UI tiers. CSS custom properties (`--tap-target`, `--icon-size`, `--text-density`) and CVA variants drive age-adaptive components — no per-age fork. Prisma schema is multi-tenant by `familyId`; every query is scoped at the data layer, never relying on client filtering. AI lives behind a service boundary (`packages/ai`) that takes structured intent ("create chore", "summarize week") rather than free chat — the AI is background intelligence, not a chatbot.

Key Features

01

Age-Adaptive UI

Four UI tiers (little / kid / tween / teen) driven by CSS custom properties and CVA variants. Tap targets, icon size, density, and reading level all flex per age group from a single component library.

02

AI Background Intelligence

Anthropic Claude (Haiku for fast paths, Sonnet for generation) powers natural-language chore creation, fair-rotation scheduling, and weekly family summaries — embedded in the workflow, not bolted on as a chatbot.

03

Multi-Tenant by familyId

Every database query and AI call is scoped to a familyId. Better Auth handles parent OAuth and kid PIN flows; Ably broadcasts realtime updates inside a family without crossing tenant boundaries.

What I Learned

  • Age-adaptive UI works as engineering, not just design. CSS tokens + CVA variants made it cheap to ship four tiers from one component library — the alternative (forking) would have killed velocity.
  • Multi-tenancy at the query layer beats middleware checks. Scoping by `familyId` in Prisma extension code means a missed scope is a type error, not a security incident.
  • AI-as-orchestrator vs AI-as-chatbot. Wiring Claude into chore rotation, scheduling, and weekly summaries makes the product feel intelligent without ever exposing a chat surface to a child.
Next ProjectCantrip