marcusDenslow de9120d1eb fix: Caddyfile domain and Stripe webhook API version mismatch
- Update Caddyfile from placeholder api.yourdomain.com to api.sshops.uk
- Use ConstructEventWithOptions with IgnoreAPIVersionMismatch to handle
  Stripe account API version (2026-01-28.clover) vs stripe-go v78 (2024-04-10)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-11 19:10:06 +02:00
2026-04-09 19:06:33 +02:00
2026-04-11 11:37:11 +02:00
2026-03-25 15:11:33 +01:00
2026-04-09 19:05:29 +02:00
2026-04-11 11:10:37 +02:00
2026-04-09 19:05:29 +02:00
2026-04-09 19:06:33 +02:00
2026-04-09 17:39:59 +02:00
2026-04-09 17:39:59 +02:00
2026-02-23 19:51:13 +01:00

Terminal Coffee Shop

A terminal-based coffee shop, accessible over SSH. Built with Go, Bubbletea, Wish, Chi, PostgreSQL, Stripe, and Shippo.

ssh localhost -p 23456

Running locally

# Copy and fill in env vars
cp .env.example .env

# Start the API server
go run api/main.go

# Start the SSH server
go run main.go

Stack

Layer Tech
TUI Bubbletea + Wish (SSH)
HTTP API Chi router
Database PostgreSQL + GORM
Auth SSH key fingerprint + JWT
Payments Stripe
Shipping Shippo

What's working

  • SSH server — key-based auth, auto user creation
  • Shop page — browse products with live detail panel
  • Cart — add/remove items, synced to API
  • Checkout flow — shipping address → payment → confirmation
  • Saved addresses and cards
  • Order history in account view
  • FAQ page
  • Responsive layout (small/medium/large terminal sizes)
  • Token refresh

TODO

Features missing vs reference (terminal.shop):

  • Splash/loading screen on connect
  • Animated logo with blinking cursor
  • API token management page
  • OAuth app management page
  • About page
  • Theme system — currently 40+ hardcoded hex colors scattered across files
  • Viewport-based scrolling — currently manual scroll math with hardcoded heights

Known bugs:

  • Address delete slice bug in shipping_form.go:386 — [m.AddressCursor+1:]... missing
  • Account page has a placeholder "something" menu item in models/coffee.go

Code quality:

  • Nested state structs (reference uses state.shop, state.cart, etc. vs flat Model)
  • Centralized styles file
Description
No description provided
Readme 46 MiB
Languages
Go 94.7%
Shell 3.8%
JavaScript 1.2%
Makefile 0.3%