Back to projects

Tower War
Not just a game — a challenge. Built entirely in TypeScript and React, with no game engine and no prior game dev experience. Powered by the Canvas API and Zustand, with a project structure designed for scalability from day one.
The React trade-off
React was the one decision I'd revisit. I only needed it for syncing game state to the DOM — things like coins, enemy counts, and health bars. But bringing in a full component model meant fighting unnecessary re-renders throughout development, which cost real time.
What I took away
Despite that, this project taught me more than most. Structuring a non-trivial app from scratch, shipping a PWA with offline support, and leaning into OOP patterns all came together here.
Key learnings
🏗️App architecture & scalability
📦Offline support via PWA
🖼️Canvas API & image caching
🐻Zustand state management
🔷Object-oriented programming