Beat Jev

September 18, 2026 · View on GitHub

You and Jev take five kicks each. Render Workflows runs the whole match and its subtasks; TypeSafe Jev chooses shots and saves; Render Postgres keeps the score.

Render Workflows TypeSafe Jev Render Postgres Three.js

Deploy to Render

Play the live game ↗

Deploy

The Blueprint creates a paid web service, a usage-billed workflow with all eleven tasks, and a paid Postgres database. Enter your Render API key and TypeSafe API key when prompted. Database connections and the workflow slug are wired automatically. No OpenRouter key is needed.

Play

  1. Enter a nickname and press Play.
  2. Tap to aim, or swipe for power and curl. Release to kick. Arrow keys and Space also work.
  3. Roles swap automatically. A short countdown announces Jev’s kick. Use Left/Right to move and hold Space to jump, or use the touch controls.
  4. Five kicks each. Most goals wins. Press Try again for a new match.

One parent task owns ten alternating turns. Player and keeper subtasks run in parallel; saving the result waits for both. Jev commits his shot before seeing your current movement. The Render Workflows panel shows the real task tree; expand Jev’s decision for its input and response.

Local development

From the repository root, with Node 24, the Render CLI, and a Postgres database:

npm ci
# The TypeScript backend needs no Python runtime.
cp .env.example .env
# Set DATABASE_URL and TYPESAFE_API_KEY in .env.
npm run dev:typescript

Open http://127.0.0.1:5183. Local mode uses Render’s local workflow server. The database schema is created on API startup.

Architecture, retries, and tests ↗