SouredDough — Artisan Bakery Ordering & Farmers-Market Platform
Built the ordering site for a Central Valley sourdough bakery — a React/Vite storefront on a serverless API, supporting both online Stripe checkout and pay-at-pickup, plus a local-delivery flow gated by an address-eligibility check.
SouredDough sells bread at Central Valley farmers markets and by pre-order for pickup — which meant the ordering flow had to support how a small bakery actually gets paid: some customers pay online in advance, others hand over cash or Venmo at the market stall. Forcing everyone through the same card-payment flow would have lost the second group entirely.

The site is a React and Vite frontend (no SSR) that builds and syncs straight to S3 and CloudFront from its own pipeline, deliberately kept separate from the infrastructure repo's CDK stack — a hosting-only deploy there could otherwise prune the live bucket back to an empty build. It talks to a separate Lambda and DynamoDB API for orders, pricing, and payments. One order form validates identically either way, then branches: pay online redirects to Stripe Checkout and is confirmed asynchronously via webhook, with the return page polling order status by session ID; pay-at-pickup posts directly and confirms on the same page, no Stripe involved.
Local delivery reuses that same form with an added address section, but
gates on a delivery-eligibility check before payment — an ineligible
address stops the order with a banner pointing back to pickup instead of
silently accepting an address the bakery can't actually deliver to.
Admin access uses a direct Cognito SRP login (amazon-cognito-identity-js)
rather than pulling in Amplify for what's a single authenticated page —
matching the tool to the one thing it needed to do.
Related work
- PoolCzar — Cue-Sports Tournament, Community & Commerce Platform
Built a Next.js/Python platform for a cue-sports community — real Stripe checkout, moderated forums with event RSVPs, and a rule-composition engine tournament directors use to configure any of 13 games without hand-editing a rulebook per event.
- SMAIL — Serverless Email for goodintechnology.com
Replaced an EC2-hosted mail server with a serverless SES/Lambda/DynamoDB email platform for goodintechnology.com, then had to solve a bigger problem than the architecture itself: the GitLab CI cost of building its Android client.