pavel444-byte 1774496cf9
Some checks failed
CI / validate (push) Failing after 14m50s
The first 2 weeks is ended.
2026-08-14 10:48:54 +05:00
2026-08-14 10:48:54 +05:00
2026-08-14 10:48:54 +05:00
2026-08-14 10:48:54 +05:00
2026-08-14 10:48:54 +05:00
2026-08-14 10:48:54 +05:00
2026-08-14 10:48:54 +05:00
2026-08-14 10:48:54 +05:00
2026-08-14 10:48:54 +05:00
2026-08-14 10:48:54 +05:00
2026-08-14 10:48:54 +05:00
2026-08-14 10:48:54 +05:00
2026-08-14 10:48:54 +05:00

Dungeons & Ground

An English-first, invite-only web alpha for asynchronous text TTRPG campaigns. Players create private worlds with an AI coauthor, submit actions into shared rounds, and play alongside persistent AI companions. The rules engine—not the language model—owns dice and mechanical state.

Local start

cp .env.example .env
pnpm install
pnpm dev:all

Open http://localhost:3000. pnpm dev:all starts the Nuxt site and the AI worker in one terminal. To run them separately, use pnpm dev in the first terminal and pnpm dev:worker in the second.

The web and worker commands both load this root .env file explicitly. Environment variables supplied by Railway or CI take precedence over values in the file.

The static demo UI can be built and tested without credentials. A production Nitro server and every worker process require SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY, NUXT_PUBLIC_SUPABASE_URL, and NUXT_PUBLIC_SUPABASE_ANON_KEY; startup fails with a clear error when required server credentials are missing. Redis is optional: when REDIS_URL is absent, the worker safely claims jobs from the Supabase ai_jobs outbox using short database leases and retries failed jobs up to three times.

Select OpenRouter or the official DeepSeek API with AI_PROVIDER=openrouter|deepseek and provide the matching API key. OpenRouter retains JSON Schema structured output; DeepSeek uses its official JSON mode, followed by the same Zod validation.

Use Node.js 18.20.5 or newer. The lockfile pins the web toolchain to the Node 18-compatible Nuxt 3.15, Nitro 2.10, and Vite 6 line; CI verifies the project on Node 18.20.8.

Workspace

  • apps/web — Nuxt SSR UI and Nitro API
  • apps/worker — BullMQ worker for AI world and round jobs
  • packages/shared — shared Zod contracts and domain types
  • packages/game-engine — deterministic d20 rules and state transition guards
  • supabase/migrations — PostgreSQL schema, indexes, triggers, and RLS policies

Alpha safety

  • Worlds are private by default.
  • Content is limited to 13+; explicit sexual content and sexual content involving minors are rejected.
  • AI responses are parsed against strict schemas.
  • AI can propose checks and events, but cannot directly set dice outcomes or mechanical values.
  • SRD-derived work must retain the attribution in LEGAL.md.

Production services

  1. Create a Supabase project and apply supabase/migrations/0001_alpha_schema.sql, then supabase/migrations/0002_supabase_ai_queue.sql, and finally the seed file. If 0001 was already applied earlier, apply only 0002; it adds the Supabase-backed worker queue and reloads the REST API schema cache.
  2. Add invited tester emails to public.allowlist.
  3. Run pnpm dev:worker alongside the web process. Provision Redis only when BullMQ delivery is desired; otherwise the worker polls the Supabase outbox.
  4. Configure either OPENROUTER_API_KEY (default model deepseek/deepseek-v4-flash) or set AI_PROVIDER=deepseek with DEEPSEEK_API_KEY (default model deepseek-v4-flash, endpoint https://api.deepseek.com/chat/completions).

If the worker reports POST /rest/v1/rpc/claim_ai_job 404, the database is missing migration 0002_supabase_ai_queue.sql. Run that file in the Supabase SQL Editor and restart pnpm dev:all.

The current UI intentionally includes a complete local vertical slice. Production auth/session binding and queue-enqueue endpoints should be connected to the supplied schema before inviting external users.

Description
Dungeons & Ground - is a site to play D&D With AI
Readme 1.6 MiB
Languages
PLpgSQL 46.3%
TypeScript 27.7%
Vue 21.6%
JavaScript 3.8%
Dockerfile 0.6%