How laseronwood/kinky-tcg works
Kinky TCG is a browser-based, offline-capable card-and-riddle game for couples. The game master creates or imports a themed deck; the target player selects a theme, solves password-protected cards, uses progressive hints, and reveals card actions while progress is saved per theme. Separate branches provide a visual card catalog, sound effects, anonymous feedback, and optional Discord notifications. Paths and connections reflect the README and sampled code; some UI wiring and unsampled modules are not shown where call ownership could not be verified.
Main entry points: passemot.js Card and hint play · index.html Game entry · level-builder.js Theme editor · sw.js Offline service worker
Components 25
Game play
- Game entry
index.html - Theme decks
json/cartes.json - Theme selection
js/passemot.js - Theme carousel
js/carousel.js - Card and hint play
js/passemot.js - Password hashing
js/hasheur.js - Saved progress
- Browser storage
- Card illustrations
assets/cartes - Sound effects
js/audio.js - Audio files
assets/audio
Theme authoring
- Level builder
level-builder.html - Theme editor
js/level-builder.js
Visual catalog
- Gallery page
gallery.html - Gallery search and zoom
js/gallery.js - Image inventory
json/gallery.json
Optional services
- Feedback form
js/feedback.js - Feedback endpoint
api/feedback.js - Notification client
js/notification.js - Notification endpoint
api/notification.js
Offline support
- Offline service worker
sw.js - Browser caches
Other components
- Game master
- Target player
- Discord webhooks
Connections 29
- Game master → Level builder: opens editor
- Level builder → Theme editor: loads editor
- Theme editor → Card illustrations: selects images
- Theme editor → Password hashing: hashes answers
- Theme editor → Game master: exports theme
- Game master → Game entry: opens game
- Game entry → Theme decks: loads decks
- Game entry → Theme selection: starts selection
- Theme selection → Theme carousel: renders themes
- Target player → Game entry: plays game
- Target player → Theme selection: chooses theme
- Theme selection → Card and hint play: opens deck
- Card and hint play → Password hashing: checks answer
- Card and hint play → Saved progress: saves unlocks
- Card and hint play → Browser storage: reads and writes
- Card and hint play → Sound effects: plays effects
- Sound effects → Audio files: loads audio
- Card and hint play → Notification client: notifies reveal
- Notification client → Notification endpoint: posts reveal
- Notification endpoint → Discord webhooks: sends embed
- Target player → Feedback form: submits feedback
- Feedback form → Feedback endpoint: posts message
- Feedback endpoint → Discord webhooks: sends feedback
- Game master → Gallery page: browses artwork
- Gallery page → Gallery search and zoom: loads catalog
- Gallery search and zoom → Image inventory: loads inventory
- Offline service worker → Theme decks: reads deck images
- Offline service worker → Browser caches: caches app and media
- Game entry → Offline service worker: registers worker