Overview
A word puzzle game combining crossword mechanics with Katla-style color feedback.
A word puzzle game combining crossword mechanics with Katla-style color feedback. Built as a monorepo with client-server RPC-like architecture for rapid prototyping.
The game challenges players to solve interconnected crossword grids where solving one word reveals hints for others.
The problem
Crossword puzzles need interconnected logic and daily lock mechanics.
Crossword puzzles need interconnected logic where solving one word reveals hints for others, plus daily lock mechanics to prevent replay.
- Interconnected grids require complex validation logic that spans multiple words.
- Daily puzzles need lock mechanisms to prevent players from replaying past puzzles.
- Traditional REST endpoints add boilerplate for game-specific procedures.
Approach
Shared procedure system with dynamic TypeScript imports as local RPC calls.
Designed a shared procedure system where the client dynamically imports TypeScript functions from the server, acting like local RPC calls. Avoided traditional REST endpoints for faster iteration.
This approach allowed game logic to be written once and shared between client and server without duplication.
Solution
Pnpm workspace packages with dynamic procedure imports and Zustand state.
Built client and server as separate pnpm workspace packages. Server exposes procedures (getRandomCrossword, validateGuess) that client imports dynamically. Zustand manages game state.
The shared procedure architecture eliminated API boilerplate while maintaining clear separation between game logic and UI rendering.
Implementation
Technical implementation.
Built with React 19 and Vite for fast development, Zustand for lightweight state management, and Node.js for the server with dynamic ESM imports.
Frontend
React 19 + Vite 7 + TypeScript + SCSS, Zustand for game state management.
Backend
Node.js server with dynamic ESM imports for shared procedure system.
Testing
Vitest for unit and integration testing of game logic.
Results
What changed.
The RPC-like architecture enabled rapid development of the crossword game with clean separation between game logic and UI.
Links