bms-forge/QUICK_START.md
2026-03-19 01:09:12 -04:00

3.2 KiB

BMS Forge - Quick Start Guide

Project Context

What is this?

A web-based BattleMap Notation Schema (BMS) renderer for DnD/TTRPG maps.

Current Phase: Planning → Implementation

  • V1 Goal: Frontend-only BMS renderer with "Paperly" style
  • Deployment: maps.bouncypixel.com (alpha)
  • Tech Stack: React + TypeScript + Konva.js + Zod + js-yaml

Developer Preferences (Lukas)

  • TypeScript: Strict types but pragmatic about any
  • State Management: Context first, upgrade if needed
  • Error Handling: Graceful degradation, open to functional libs
  • Testing: Critical paths first, expand later
  • Components: Type-based with domain subfolders
  • Styling: Tailwind hybrid with CSS modules
  • Build: Vite

Getting Started (After Break)

  1. Check context: Read .opencode-config.json and docs/
  2. Review decisions: BMS schema format, tech stack, architecture
  3. Continue from: Last completed task in roadmap

Key Decisions Made

Architecture

  • Frontend-only MVP: No backend needed initially
  • BMS 1.0 Schema: Defined in docs/BMS_SCHEMA_SPEC.md
  • Rendering Engine: Konva.js with layered rendering
  • Validation: Zod for runtime schema validation
  • Editor: Monaco Editor for YAML editing

Business Model

  • Free Tier: Paperly style rendering
  • Monetization: Texture packs + AI subscription
  • Community: BMS schema as sharing format

Deployment

  • Alpha: maps.bouncypixel.com
  • Version Control: Private Forgejo at git.bouncypixel.com
  • Future: Potential custom domain (bms-forge.com)

Next Immediate Actions

Based on current roadmap (docs/IMPLEMENTATION_ROADMAP.md):

Week 1, Days 1-2: Project Setup

npm create vite@latest bms-forge -- --template react-ts
cd bms-forge
npm install konva react-konva js-yaml zod @monaco-editor/react
npm install tailwindcss postcss autoprefixer
npm install -D @types/js-yaml @types/node

Project Structure to Create

src/
├── types/          # BMS TypeScript interfaces
├── schema/         # Zod validation schemas  
├── parser/         # YAML parsing utilities
├── renderer/       # Konva.js rendering engine
├── components/     # Type-based with domains
│   ├── layout/     # Header, Sidebar, etc.
│   ├── canvas/     # Map rendering components
│   ├── editor/     # YAML editor components
│   └── shared/     # Common UI components
├── hooks/          # Custom React hooks
├── utils/          # Helper functions
└── App.tsx

When You Return

  1. Check status: What was last completed?
  2. Read decisions: Review config and docs
  3. Pick up: Continue from next logical step
  4. Ask: "What should we work on next?"

Common Commands

# Development
npm run dev

# Build
npm run build

# Type checking
npm run type-check

# Linting
npm run lint

Questions to Consider When Continuing

  1. Parsing complete? Can we parse BMS YAML yet?
  2. Rendering working? Are rooms showing on canvas?
  3. UI usable? Editor + preview layout functional?
  4. Testing needed? Critical paths covered?

Last Updated: 2026-03-19 Project: BMS Forge - BattleMap Generator