Inspiration

Home espresso is equal parts science and obsession — but most tools treat it like a stopwatch. Baristas jot dose and yield on sticky notes, forget which bag is almost empty, and have no good way to learn from other people pulling the same beans on different machines.

We built BrewCore because we wanted one place to log every variable that matters (beans, grind, ratio, taste), see what the community is dialing in, and get intelligent feedback when a shot runs sour or gushes too fast. Specialty coffee deserves software as thoughtful as the craft itself.


What it does

BrewCore is an espresso tracking and community platform for home baristas.

  • Log shots with dose, yield, time, grind, machine, taste sliders, and flavor notes
  • Manage bean inventory — track grams remaining, low-stock alerts, and reorder suggestions
  • Join the community — public feed, likes, comments, profiles, and follows
  • Get AI coaching — Shot Coach powered by Amazon Bedrock uses your history and profile to suggest dial-in changes
  • Verify the stack live — judges can open Live database in the app to see real DynamoDB reads and writes

Try it: /authInstant Demo Access (no signup required).


How we built it

Frontend: Next.js 15 App Router, React, TypeScript, Tailwind — deployed on Vercel (iad1).

Backend: Next.js Server Actions call a typed DatabaseOperations layer that routes to either:

  • Amazon DynamoDB in production (8 tables, GSIs for user history, public feed, interactions), or
  • A localStorage mock for offline development without AWS credentials

Auth: AWS Cognito via Amplify Auth v6.

AI: Amazon Bedrock (Nova Micro) for shot analysis and conversational Shot Coach.

Infrastructure: Terraform provisions Cognito, DynamoDB, IAM, Secrets Manager, and budget alerts. Architecture is documented in docs/ARCHITECTURE.md with a shareable diagram.

We designed composite keys ({shotId}#{userId}, {userId}#{productId}) for efficient lookups and built a Judge Evaluation Portal so evaluators can demo the full AWS stack in under five minutes.


Challenges we ran into

  • DynamoDB modeling for social + inventory — Balancing single-table patterns with clear domain tables (shots, beans, interactions) and GSIs for both “my shots” and the public feed required several schema iterations.
  • Dual-backend parity — Keeping mock and DynamoDB backends behavior-identical so local dev never diverges from production was non-trivial; we centralized everything behind DatabaseOperations.
  • Serverless + AWS credentials — Wiring Vercel server functions to DynamoDB and Bedrock with least-privilege IAM, plus handling credential rotation and table migrations (e.g. new product_states table).
  • Next.js Server Action caching — After clean rebuilds, stale client bundles caused 404s on server actions until we added landing-page guidance and dev:clean workflow.
  • AI that stays useful — Grounding Bedrock responses in real shot data and barista profile preferences without hallucinating recipe changes took careful prompt design and guardrails.

Accomplishments that we're proud of

  • A production-ready app on Vercel talking to real DynamoDB — not a mock demo for judges
  • 8 Terraform-managed tables with thoughtful GSIs, PITR, and on-demand billing
  • AI Shot Coach that reads your actual shot history, not generic espresso advice
  • Bean inventory + commerce hints — low-stock detection, profile-based bean picks, accessory suggestions with “already have it” / “not needed” stored in DynamoDB
  • Judge-first UX — instant demo login, live database panel, audit activity log
  • Developer ergonomics — full local mode with zero AWS setup for contributors

What we learned

  • Server Actions are a strong fit for CRUD-heavy apps if you invest in a clean server-side data layer and consistent validation (Zod).
  • DynamoDB rewards upfront access-pattern design — every GSI we added mapped directly to a UI feature (feed, profile, comments).
  • Bedrock Nova Micro is cost-effective enough for hackathon-scale coaching if prompts are scoped and responses sanitized.
  • Judges evaluate the journey — documentation (JUDGES.md, architecture diagram, one-click demo) matters as much as feature count.
  • Building mock + cloud backends early saved us days of “works on my machine” pain.

What's next for BrewCore

  • Recipe library — save and share dial-in recipes tied to bean + machine combos
  • Leaderboards & challenges — weekly consistency streaks, community roast-offs
  • Stripe Pro tier — advanced analytics, unlimited AI coaching, premium stats
  • Mobile PWA polish — offline shot logging, push notifications for low bean stock
  • Smarter recommendations — richer bean matching from taste notes and shot outcomes
  • OIDC on Vercel — drop long-lived IAM keys in favor of native AWS federation

Built With

Share this project:

Updates