Skip to content

Latest commit

 

History

530 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Linejam

Pass-the-poem party game for friends in the same room.

Play free at linejam.app — no install, no account required. Marketing site · Changelog

A real poem from a played-through room (word counts 1/2/3/4/5/4/3/2/1):

Shadows grows louder in the hallway where forgotten poems wait for someone brave enough finally where forgotten poems wait in the hallway grows louder Silence

What It Is

Players take turns adding lines to poems they can't fully see. Each round, you see only the previous line—then write the next one with a specific word count. At the end, everyone reads the complete poems aloud. Chaos, beauty, and laughter ensue.

How It Works

  1. Host creates a room → Gets a 4-letter code
  2. Friends join → Enter the code and their name
  3. Write in rounds → 9 rounds with word counts: 1, 2, 3, 4, 5, 4, 3, 2, 1
  4. Reveal ceremony → Each player reads one complete poem aloud

The constraint is the game. You see only the line before yours. The result is collaborative absurdity—poems that no single person could have written.

Features: human-authored collaborative poems, one fixed Ink & Anticipation visual identity with Light/Dark/System color modes, poem sharing, and in-game help

Tech Stack

  • Frontend: Next.js 16, React, TypeScript
  • Backend: Convex (real-time sync)
  • Styling: Tailwind CSS 4, custom design system
  • Auth: Clerk (optional) + anonymous guests

Getting Started

# Bootstrap dependencies and .env.local
bash scripts/setup.sh

# Or create .env.local without installing dependencies
bash scripts/setup.sh --write-env --skip-install

# Add your Convex, Clerk, guest-token, and Sentry values to .env.local

# Verify configuration before starting services (fails on missing or invalid values)
pnpm run doctor

# Run development servers (parallel)
pnpm dev # Next.js :3000 + Convex backend

# Verify the live app and health path once the dev server is running
pnpm run doctor

Keep NEXT_PUBLIC_CONVEX_URL pointed at the same backend you're running. For local development, use http://localhost:8187; if you target a remote Convex deployment, local Dagger now syncs the active Convex dev backend before auth-heavy E2E runs so frontend/backend validators stay aligned.

Work Ledger

GitHub Issues is Linejam's sole work ledger. Before starting an issue, follow the single assignee plus forest/<issue>-* branch/PR claim contract in CONTRIBUTING.md. Do not create or update a duplicate task in Powder. The authority cutover and observability migration are tracked by #393.

Agent Faces

Linejam ships thin agent-facing faces over the same Convex core the web app uses — no reimplemented game logic. See docs/agent-faces.md for the CLI/MCP command surface, identity model, environment contract, registration recipe, and API-face disposition.

  • pnpm agent:cli — terminal CLI to create/join rooms, read game state, submit lines, browse and favorite poems.
  • pnpm agent:mcp — stdio MCP server exposing the same actions as tools.
  • .agents/skills/linejam-cli/SKILL.md — full usage, identity model, and when to reach for these vs. the browser.

Contributing & Security

Testing

Unit, integration, and E2E suites enforce the coverage thresholds declared in vitest.config.ts.

# Unit & integration tests
pnpm test         # Run once
pnpm test:watch   # Watch mode
pnpm test:ci      # With coverage

# Fast local CI
pnpm ci:fast
pnpm ci:prepush

# Full local Dagger parity
pnpm ci:dagger:all-no-e2e
pnpm ci:dagger:all

# Browser suites
pnpm test:e2e       # Local Playwright suite
pnpm test:e2e:early-smoke # Fast selector smoke to reveal phase
pnpm test:e2e:smoke # Remote preview/prod smoke via PLAYWRIGHT_BASE_URL
pnpm test:e2e:ui    # Interactive UI mode

# Coverage report
open coverage/index.html

Coverage Thresholds (enforced in CI):

  • Lines: 85%
  • Branches: 85%
  • Functions: 85%
  • Statements: 85%

Test Structure:

  • tests/ — Unit and integration tests (Vitest)
  • tests/e2e/ — End-to-end tests (Playwright)
  • tests/helpers/ — Shared test utilities

See docs/testing.md for patterns and guidelines.

Secret Scanning

Pre-commit hooks automatically scan for leaked credentials (Clerk, Convex, Sentry keys).

# Install gitleaks (required for local development)
brew install gitleaks

False positives? Add patterns to .gitleaks.toml allowlist section. Hook failing? Ensure gitleaks is installed: brew install gitleaks

Architecture

See docs/ARCHITECTURE.md for system overview: domain modules, data flow, and where to start reading code.

Observability & CI

Sentry is Linejam's sole error, monitor, release, and incident-evidence platform. Browser, Node, Edge, and Convex failures use release- and environment-tagged events; production health and smoke use Sentry monitors. Actionable Sentry issues create one durable GitHub Issue through the signed Convex webhook bridge. pnpm ci:fast is the fast host loop (typecheck, lint, tests); GitHub Actions' merge-gate remains the authoritative full contract, with pnpm ci:dagger:all for local parity. See docs/ops/observability-ci.md.

Design

Ink & Anticipation is Linejam's single visual identity: Kenya Hara minimalism with warm white, near-black ink, and a vermillion accent. The token source of truth is lib/design/tokens.ts; lib/colorMode/ owns the mode-only control and API for Light, Dark, and System preferences, persisted under linejam-theme-mode.

Light uses action #b43a12, focus #e85d2b, background #faf9f7, surface #ffffff, and ink #1c1917. Dark uses action #f06b3b, focus #e85d2b, background #1c1917, surface #292524, and ink #faf9f7. Typography uses Libre Baskerville for display, IBM Plex Sans for body/UI, and JetBrains Mono for counts and technical labels.

License

MIT — see LICENSE.

About

Pass-the-poem party game for friends

Resources

Contributing

Security policy

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages