James Hendershott

Case study

Where’s My App? (Home Storage Tracker)

Full‑stack home inventory system with QR codes, interactive rack maps, photo uploads, and complete movement history.

Next.jsTypeScriptPostgreSQLPrismaAuth.jsZodQRPWA

Overview

Where’s My App? tracks physical storage in your home: racks, containers (totes), and the items inside. Scan QR labels, see an interactive rack grid, check items in/out with photos, and maintain a full movement history.

Role & Tech Stack

Solo developer

  • App: Next.js (App Router) + TypeScript, Tailwind, shadcn/ui
  • Data: PostgreSQL + Prisma ORM
  • Auth: Auth.js (NextAuth v5)
  • Validation/Forms: Zod + React Hook Form
  • QR: ZXing (scan) + qrcode (generate)
  • Storage: S3‑compatible (MinIO/R2) for item photos
  • PWA: installable, offline‑ready via next‑pwa
  • Tests/CI: Vitest + Playwright, GitHub Actions

Problem

Household storage grows complex across garages, basements, closets, and sheds. You forget which tote holds an item, where the tote sits on the rack, and when items moved. Spreadsheets or notes fall out of date.

Solution

  • Visual rack maps: SVG grid showing container positions (row/column)
  • QR code system: print labels; scan to deep‑link to container/item pages
  • Item management: photos to S3, tags, quantities, check‑in/out workflows
  • Movement history: complete audit trail for containers and items
  • PWA: mobile‑friendly, add to home screen, camera access for scanning
// Example: Prisma models excerpt
model Container {
  id        String   @id @default(cuid())
  code      String   @unique
  name      String
  location  Location @relation(fields: [locationId], references: [id])
  locationId String
  items     Item[]
}

Results

  • Easy retrieval: scan a tote to instantly see contents and last moves
  • Accurate inventory: photos + tags reduce guesswork
  • Confidence: rack maps and history make storage auditable

What I Learned

  • Designing data models for spatial storage (locations → racks → slots → containers → items)
  • Building QR features end‑to‑end (generation, scanning, deep‑links)
  • Balancing PWA offline needs with secure auth and S3 uploads