Lil Beasties

project-lil-beasties Project Page

active project-page

Vision

A monster music game for kids — choose monsters, place them on islands, and hear them perform together. Each monster plays a different musical part (beat, bass, melody, harmony, percussion, vocal). Complete performances to win new monsters and unlock new islands. Built with Rails 8 + Phaser 4. Duolingo aesthetic. Deploy through the pal-e pipeline, wrap for App Store with Hotwire Native.

User Stories

Key Story Note Role Success Metric
perform <a href="story-lil-beasties-perform">Perform Music</a> Kid Place 3 monsters, hear them play music together
progress <a href="story-lil-beasties-progress">Progress Through Islands</a> Kid Complete island 1, win monster, unlock island 2
play-anywhere <a href="story-lil-beasties-play-anywhere">Play Anywhere</a> Player Same progress on phone and desktop

Architecture

  • Domain Model — monsters with musical parts, islands as levels, placement grid
  • Data Flow — Rails API + Phaser game loop + audio layering (to be created)
  • Deployment — k3s + ArgoCD + Harbor (to be created)
Key decisions:
  • Rails 8 monolith — game state, auth, API all in one app
  • Phaser 4 in Stimulus controllers — sprites, game loop, audio, touch input at 60fps
  • Six musical parts (beat, bass, melody, harmony, percussion, vocal) — same BPM/key, any combo works
  • One monster per part per island — no stacking, enforced by Placement validation
  • Earn monsters through performance, not purchase — progression drives collection
  • Islands are levels — each one is a new stage for building a new song
  • Island-first landing — kids see their current island immediately after login
  • Hotwire Native for iOS App Store wrapper
  • Keycloak for auth (existing platform SSO)

Board

Status

2026-06-06: Tone.js audio stack documented (PR #9 merged). Phaser handles visuals only, Tone.js owns AudioContext + Transport for beat-synced loop playback. All docs aligned: architecture, user-stories, music-theory. Issues #1-3, #7 updated with part/sound/vibe terminology + Tone.js references. Next: scaffold Rails app (Issue #1).

Milestones

Milestone Issues Gate Status
M1: Playable prototype #1 Scaffold + #2 Phaser island + #3 Sprites Place 3 monsters on an island, hear them play music Not started
M2: Progression loop #7 Island progression + monster rewards Complete island 1, win monster, unlock island 2 Not started
M3: Ship it #4 Keycloak auth + #5 Deploy pipeline Live on cluster, accessible via Tailscale Funnel Not started

Repos

Repo Platform Role Status
<a href="https://forgejo.tail5b443a.ts.net/ldraney/lil-beasties">lil-beasties</a> Forgejo Rails 8 + Phaser 4 monolith Active