A family-friendly word game website built with Next.js.
This project uses Docker for development. No local Node.js installation required.
# Start the development server
docker compose up
# Open in browser
open http://localhost:3000A hangman-style word puzzle where players decode what a dog is trying to communicate through barks.
How it works:
- The dog "barks" a clue where each word is encoded as dog sounds (bark, woof, arf, grr, ruff, yip, howl)
- The bark length matches the word length (e.g., "Please" becomes "Barrrrk")
- Players guess what category the dog wants: Walk, Food, Pets/Cuddles, Go Outside, Play Fetch, Water, or Treats
- Wrong guesses let players reveal a letter from the clue
- The game ends when the correct category is guessed
- Score = number of wrong guesses (lower is better)
A punctuation game where a bouncing comma moves through a sentence and players must stop it in the right spot.
How it works:
- A sentence is displayed with its comma(s) removed
- A comma bounces back and forth between each word boundary
- Players click or press Space to place the comma at the current position
- Some sentences have multiple commas — players must find all of them to win
- Wrong guesses are counted (lower is better)
# Start dev server (with debugger enabled)
docker compose up
# Run tests
docker compose run --rm app npm run test:run
# Run linting
docker compose run --rm app npm run lint
# Run linting and tests together
docker compose run --rm app npm run check
# Build for production
docker compose run --rm app npm run build
# Stop containers
docker compose downAll interactive game logic runs as client components in the browser. Use your IDE's browser debugging support to hit breakpoints in components, hooks, and game logic.
- Run
docker compose upin your terminal and wait for the dev server to be ready. - Go to Run → Edit Configurations → Add (+) → JavaScript Debug.
- Set the URL to
http://localhost:3000. - Click OK, then select the new configuration and click Debug (the bug icon).
- WebStorm launches a browser and connects to its DevTools protocol — breakpoints set in your source files will be hit.
- Run
docker compose upin your terminal. - Add a launch configuration in
.vscode/launch.json:{ "type": "chrome", "request": "launch", "name": "Debug in Chrome", "url": "http://localhost:3000", "webRoot": "${workspaceFolder}" } - Press F5 to launch the browser and start debugging.
Open http://localhost:3000 in Chrome or Edge, press F12, and use the Sources tab. Your source files appear with full source map support.
The dev server also starts with the Node.js inspector enabled on ports 9229 and 9230 for debugging the Next.js server process itself (e.g., next.config.ts, middleware). This is rarely needed for a static export app. To use it, create an Attach to Node.js configuration targeting port 9230 and add a path mapping from /app (the Docker container path) to your local project root.
- Next.js 16 with App Router
- React 19
- Tailwind CSS 4
- TypeScript 5
- Vitest for testing
- Node.js 24 LTS
- Docker Compose for development
src/
├── app/ # Next.js pages and layouts
├── components/ # React components
├── lib/ # Core game logic
├── hooks/ # Custom React hooks
├── data/ # Game data
└── __tests__/ # Tests
The project uses GitHub Actions for continuous integration and deployment:
Runs on all pull requests and includes:
- Build and test job (linting, tests, build)
- Preview deployment to Netlify (skipped for Dependabot PRs)
Note: Dependabot PRs and fork PRs skip the Netlify deployment step since GitHub doesn't provide secrets to Dependabot or fork PRs for security reasons. The workflow checks the PR author and verifies secrets are available before attempting deployment.
Runs on version tags (v*) or manual workflow dispatch and deploys to Netlify production. Does not run on every merge to main.
Run the script to generate or update CHANGELOG.md from GitHub releases:
./scripts/generate-changelog.sh # Writes to CHANGELOG.md
./scripts/generate-changelog.sh docs/CHANGES.md # Custom output pathRequirements: GitHub CLI (gh) installed and authenticated.
This script was generated by the smp-github Claude Code plugin.
- User authentication and score tracking
- Leaderboard
- More word games
- Daily challenge mode
- Difficulty levels