Skip to content

simonvanlierde/6-second-scribbles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

6 Second Scribbles

CI codecov 6ss.duinlab.nl License: MIT

6 Second Scribbles is a real-time, multiplayer drawing-and-guessing game. One player races through a list of prompts while everyone else guesses what's being drawn, and rooms move through lobby, round, and results states over WebSockets.

A live demo is hosted at 6ss.duinlab.nl.

The drawer's view What the guessers see
Drawer working through a themed prompt list Guesser racing to name each doodle

Stack

  • Frontend — Vue 3, TypeScript, Pinia, Vite, vue-i18n
  • Backend — FastAPI, SQLAlchemy, PostgreSQL, Redis
  • Tooling — pnpm, uv, just, Docker Compose, Vitest, Playwright, pytest

It's a monorepo: frontend/, backend/, and contracts/ (committed OpenAPI and WebSocket schemas shared by both sides). See docs/architecture.md for how the pieces fit together and docs/adr/ for design decisions.

Status

Working

  • Real-time multiplayer rooms over WebSockets
  • Full game loop: lobby → drawing → guessing → results
  • Guest and registered-user accounts
  • Locale-aware prompt categories and guess matching
  • Generated client/server contracts
  • Unit, integration, and end-to-end tests

Todo

  • Full mobile support (currently desktop-first)
  • Improved handling mid-game user disconnects

Accessibility

Accessibility is checked three ways, all part of CI:

  • Static a11y linting. Biome's accessibility rules are enabled (linter.rules.a11y: "on" in biome.json) and run with pnpm --dir frontend run lint. This catches markup issues like missing labels, invalid ARIA, and non-interactive elements with click handlers.
  • axe scans. Playwright + @axe-core/playwright scan Home, the Settings panel, and the /__ds component-library page against WCAG 2.1 A/AA rule tags, in both light and dark themes. These run frontend-only (no backend) as the a11y CI job; run them locally with just test-a11y.
  • Accessibility-tree assertions. The broader Playwright e2e suite locates elements by ARIA role and accessible name (getByRole, including getByRole("alert")), so those flows only pass when the underlying roles and labels are present. Run locally with just test-e2e (this suite needs the backend stack).

These check specific WCAG A/AA rules — a passing axe run flags no violations of those rules, but it is not a full manual audit and does not certify WCAG AA conformance.

Running locally

Requires Node 26+, Python 3.14+, pnpm, uv, just, and Docker.

just install                                   # install dependencies
cp backend/.env.example backend/.env.dev
cp frontend/.env.example frontend/.env.local
just dev                                        # Docker services + dev servers

just up runs the full containerized stack; just test, just check, and just format handle testing, linting, and formatting. See the frontend, backend, and contracts docs for more, or CONTRIBUTING.md if you'd like to contribute.

Deployment

The live demo at 6ss.duinlab.nl runs the self-hosted Docker Compose stack in compose.prod.yml, started on the host with just up-prod. Caddy serves the built SPA and proxies /api and /ws to the backend; PostgreSQL and Redis stay on the internal Docker network. The only external ingress is a Cloudflare Tunnel (cloudflared, Compose tunnel profile), so nothing is published directly to the internet. See docs/architecture.md for the full topology.

Attribution

Inspired by Six Second Scribbles by Hazel Reynolds, published by Gamely Games, and the solo web version by Oliver Culley de Lange.

License

Code is released under the MIT License. The original Six Second Scribbles game concept, brand, and card content remain the property of their respective owners.

About

Real-time multiplayer drawing & guessing party game — Vue 3 + FastAPI, WebSockets, Docker.

Topics

Resources

License

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Contributors