marcusDenslow 6559c4dd8f fix and feature: made checkout page cleaner, and added card and address modification to account page
the checkout flow was a bit wonky because it would display the same info twice which looked weird and confusing. this is now changed to only show once and update one of the pages independantly.

Now added the possibility to modify card and address list in the account page and not in the checkout flow
2026-04-12 12:11:04 +02:00
2026-04-09 19:06:33 +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 45 MiB
Languages
Go 95.9%
Shell 3%
JavaScript 0.9%
Makefile 0.2%