Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

Solid Galaxy

Solid Galaxy is a Solid-based turn-based trading game. The first MVP is deliberately small:

  • a public linked-data galaxy under www/world/
  • a SimplyFlow browser UI under www/
  • OLDM-style application data names such as schema$name and sg$currentStation
  • JAQT queries for world/game data lookups
  • a storage.mjs boundary for jsfs-solid/Solid access

The current implementation can run in demo mode without a pod. The Solid login/pod storage path is included as the next integration point and should be tested against the target Solid server before treating it as stable.

Running locally

Serve the repository root with any static web server, for example:

python3 -m http.server 8000

Then open:

http://localhost:8000/www/

Do not open www/index.html directly from the filesystem, because the app loads Turtle files from www/world/.

Dependencies

The no-build browser version uses published CDN bundles:

  • @muze-labs/simplyflow@0.10.0
  • @muze-nl/jsfs-solid

The MVP now expects the jsfs-solid browser bundle to expose the Solid stack globals used by the app:

globalThis.solidClient
globalThis.SolidAdapter
globalThis.oldm
globalThis.jaqt
globalThis.jsfsSolid

Until the jsfs-solid export/global patch is published, www/game.mjs keeps a temporary JAQT fallback import through the import map in www/index.html. Once the patched jsfs-solid bundle is the deployed dependency, that fallback can be removed.

Repository layout

www/
  index.html       Browser entry point
  app.mjs          SimplyFlow app setup, commands and actions
  storage.mjs      jsfs-solid / Solid / OLDM boundary
  game.mjs         Solid Galaxy-specific rules and JAQT queries
  config.mjs       Prefixes, resource URLs and game constants
  style.css        MVP styling
  ns/index.ttl     Solid Galaxy ontology
  world/*.ttl      Public seed galaxy data

docs/
  data-model.md
  mvp.md

Important implementation notes

SimplyFlow command handlers receive the element first and the command value second:

commands: {
  buy(_button, offerId) {
    this.actions.buy(offerId)
  }
}

World resources are loaded through one OLDM context. The app uses:

graph.context.data

as the combined view of all world graphs loaded in that context, instead of manually dereferencing linked resources in normal app code.

About

A solid galaxy trading game.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages