stickertrade logo

stickertrade

WARNING:
this site is currently a work in progress
if you want an invite, reach out to me!
me@jackharrhy.com

roadmap

this is my own little todo list of things to get done.

  • Port to Remix 3 โš›๏ธ
    • Re-wrote the entire site on Remix 3 beta
    • Replaced Prisma with remix/data-table + node:sqlite
    • Replaced Tailwind with remix/ui css() mixins
    • Dropped the Minio sidecar; sticker uploads go to a local fs volume
  • Production deploy ๐Ÿšข
    • Multi-stage Dockerfile published to ghcr.io
    • node-tsx in-place TS, no separate build step
    • Auto-applied migrations on container boot
    • Bootstrap-admin CLI for first prod login
  • Admin Page ๐Ÿคด
    • Delete users
    • Delete stickers
    • Refined table plumbing (per-row POST actions, no multi-select modal)
  • Testing ๐Ÿงช
    • node --test setup for backend integration testing
    • Tested login (good + bad creds, CSRF rejection)
    • Tested invitations (generate, accept, reject)
    • Tested admin (auth gate, delete sticker)
    • Tested edit profile + change password
    • Tested edit sticker (owner + non-owner)
    • Tested API (bearer auth, public reads, CRUD, ownership)
  • Profile editing ๐Ÿ‘ค
    • Avatar upload (sharp-resized, center-cropped to 512ร—512)
    • Remove avatar
    • Change password (with current-password re-verification)
  • Edit sticker โž•
    • Rename
    • Replace image
    • Owner + admin gate
  • Security hardening ๐Ÿ”’
    • CSRF middleware on every state-changing form
    • Session ID rotation on login / logout / password change
    • PUBLIC_ORIGIN env var for proxies (TLS terminator behind the app)
    • Bcrypt password hashing
  • JSON API ๐Ÿ”Œ
    • REST endpoints for stickers (CRUD)
    • /api/me, /api/users/:username, /api/users/:username/stickers
    • Bearer-token auth, hashed at rest, prefix lookup
    • Per-user token management UI on /account/profile
  • ๐ŸŽฏ Opengraph images ๐Ÿ–ผ๏ธ
    • Per-sticker og:image, og:title, og:description
    • Per-profile og:image (avatar), og:title (username)
    • Site-wide defaults
  • Stickers index polish ๐Ÿ“š
    • Pagination (replace the current load-1000 query)
    • Text search by name
    • Filter by owner
  • Users search ๐Ÿ”Ž
  • Toasts ๐Ÿž
  • Trading ๐Ÿ’ฑ (the actual feature)
    • Propose a 1-for-1 trade
    • Accept / reject / cancel proposals
    • Trade history / provenance per sticker
  • Friends ๐Ÿ‘ช
  • Social associations ๐Ÿ™‹โ€โ™‚๏ธ
    • Discord login (replaces or supplements invite-only signup?)
    • Twitter/X association (display only)
    • Disassociation
  • Users rough location ๐Ÿ“
  • Events ๐Ÿ“…
    • List events
    • Create event
    • Events map
  • Sticker image cropping ๐Ÿ–ผ๏ธ (like avatars)
  • Accessibility audit ๐Ÿง
    • Color contrast review
    • Screen reader review

๐ŸŽฏ means focus

smaller and faded means eventually