Bean Journal

00
📊 Stats✨ Find My Bean
Hide ran out
Loading your beans…

How this is built

A personal coffee bean journal

🤖

Built with Claude

This entire app (frontend, backend, database schema, and AI features) was designed and built through conversations with Claude (Anthropic). No boilerplate, no templates; every component and query was written iteratively in response to real feature requests.

🗄️

Database: Supabase

Bean data, drink logs, and user accounts live in PostgreSQL via Supabase. Row-level security keeps each user's collection private. The anon key powers read access in the browser; a service-role key is used server-side for trusted writes.

⚛️

Frontend: Next.js + React

The UI is built with Next.js 16 and React 18. No CSS framework; all styling uses inline styles with a warm editorial design system. Playfair Display for headings, DM Sans for body text, cream-and-terracotta palette throughout.

AI Features: Claude API

Two AI features powered by Anthropic's Claude: "Discover Facts" streams 3 specific facts about any bean covering terroir, genetics, and processing. "Find My Bean" recommends a bean from your collection based on mood and time of day.

📸

Add Bean from Photo

A Claude Code skill lets you photograph any coffee bag and add it directly to the database. Claude's vision extracts the name, origin, variety, process, and tasting notes from the label. You review and confirm before it hits Supabase.

🚀

Deployed on Vercel

The Next.js app is deployed on Vercel and served at beans.setty.in. Every push to the main branch triggers an automatic deployment. Environment variables keep the Supabase service role key secure on the server side.

Stack

Next.js 16React 18SupabasePostgreSQLClaude APIAnthropic SDKVercelPlayfair DisplayDM Sans