Assignment#137
Open
Everest-Gowthaman wants to merge 11 commits into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pull Request Summary: Scribble — Multiplayer Drawing Game
Overview
Implementation of a full multiplayer drawing game ("Scribble") across 4 scenarios, transforming a project scaffold into a functional polling-based game with room setup, drawing, guessing, scoring, and result/restart lifecycle.
Tech Stack: Node.js + Express + TypeScript (backend), React 18 + Vite + TypeScript (frontend), Vitest (testing), Zod (validation)
Constraints: No WebSockets (HTTP polling only), no databases (in-memory), no authentication
Key Commits (Implementation Phase)
01c0a436edd0e9c0be7788ca674cSpecs Created
specs/001-room-setup-lobby/specs/002-game-start-drawer-flow/specs/003-gameplay-interaction/specs/004-result-restart-validation/Each spec directory includes:
spec.md,plan.md,tasks.md,data-model.md,research.md,quickstart.md,checklists/, and for S4 additionallycontracts/api.md.Backend Implementation (
backend/src/)API Endpoints
POST/roomsPOST/rooms/:code/joinGET/rooms/:code?participantId=POST/rooms/:code/startPOST/rooms/:code/guessPOST/rooms/:code/canvasPOST/rooms/:code/restartKey Backend Files
src/models/game.tsRoomStatus,Room,RoomSnapshot,Guess,Participantsrc/services/roomStore.tscreateRoom,joinRoom,startGame,submitGuess,updateCanvasState,restartRoom,toRoomSnapshotsrc/api/rooms.tssrc/api/schemas.tssrc/seed/starterData.tssrc/services/roomStore.test.tsAPI Contract (
specs/004-result-restart-validation/contracts/api.md)Documents the complete contract for the final endpoint (
POST /rooms/:code/restart) including 200/403/409 response shapes.Frontend Implementation (
frontend/src/)Pages & Components
pages/StartPage.tsxpages/CreateRoomPage.tsxpages/JoinRoomPage.tsxpages/LobbyPage.tsxpages/GamePage.tsxcomponents/Canvas.tsxcomponents/GuessForm.tsxcomponents/Scoreboard.tsxcomponents/ResultScreen.tsxcomponents/RoomCodeBadge.tsxcomponents/Card.tsxcomponents/PageHeader.tsxState & API Layer
state/roomStore.tsuseSyncExternalStore— actions:createRoom,joinRoom,fetchRoom,startGame,submitGuess,submitCanvasState,restartRoomservices/api.tsservices/api.test.tsState Machine
Commands Used
Development
Build & Test
Spec Kit Workflow (per scenario)
Summary Statistics
Contributor
Email: gowthaman.s@everest.engineering
Role: