marcusDenslow 9a5fff81bf fix: defer component logger creation past package init
Package-level slog.With() vars are evaluated at init time, before
observability.InitLogger() runs in main. They captured the original default
slog handler and bypassed the countingHandler that increments
log_messages_total — so warn/error calls from these packages weren't being
counted.

Convert to functions so each call resolves slog.Default() at use time and
inherits the active counting handler.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-01 22:26:03 +02:00
2026-04-30 11:35:10 +02:00
2026-04-09 19:05:29 +02:00
2026-04-24 10:07:03 +02:00
2026-04-30 11:35:10 +02:00
2026-04-09 19:05:29 +02:00
2026-04-30 11:35:10 +02:00
2026-04-30 11:35:10 +02:00
2026-04-16 18:00:38 +02:00
2026-04-09 17:39:59 +02:00
2026-04-30 11:35:10 +02:00

Terminal Coffee Shop

ssh sshops.uk

it's a coffee shop but in your terminal. you ssh in, browse the menu, chuck stuff in your cart, put in your address and card, and buy coffee without ever touching a browser. your ssh key is your account so there's no login or signup or any of that.

made it because i thought it would be fun to see if you could build a real e-commerce flow that lives entirely in a terminal. turns out you can. heavily inspired by terminal.shop.

running on Hetzner, behind Cloudflare.

tech: Go, Bubbletea, Wish, Chi, PostgreSQL, Stripe, Shippo, Bring

Description
No description provided
Readme 45 MiB
Languages
Go 95.9%
Shell 3%
JavaScript 0.9%
Makefile 0.2%