PRISMA is a collaborative light-puzzle game built as a Devvit Web app for Reddit. Players place mirrors, prisms, and filters to route beams and complete constellation patterns.
- Devvit Web (
@devvit/web,devvit) - React 19 + TypeScript
- PixiJS 8 for rendering
- Hono for API routing
- Vite + Tailwind CSS 4
- Node.js
22.12+recommended - npm
- A Reddit account with Devvit access
- Install dependencies:
npm install
- Authenticate Devvit CLI:
npm run login
- (Optional) Update the playtest subreddit in
devvit.jsonunderdev.subreddit. - Start playtest mode:
npm run dev
This opens a live Devvit playtest flow where the inline splash view launches into the game view.
npm run dev- Start Devvit playtestnpm run build- Build client and server bundlesnpm run type-check- Run TypeScript checksnpm run lint- Run ESLintnpm run test- Run unit tests with Vitestnpm run deploy- Type-check + lint + test + upload appnpm run launch- Deploy then publish
src/client- Web client (splash, game UI, Pixi renderer, interactions)src/server- Devvit server routes, game state persistence, scheduler/menu handlerssrc/shared- Shared types, level definitions, ray tracing, win checkingpublic- Static client assets (audio, etc.)
- The app is serverless on the Devvit runtime; avoid assumptions about long-lived server state.
- Keep gameplay logic deterministic (especially ray tracing and win checks).
- Mobile ergonomics are a first-class concern; test touch interactions when changing controls.
BSD-3-Clause. See LICENSE.