This is a technical demonstration primarily focused on illustrating the use of dependencies.
Limitations
This project does not yet have feature parity with the legacy system using google sheet and google forms.
Supported functionality
The following basic user use-cases are supported:
Add and remove individual players
Create and delete tables
Move players between tables
Shuffle the order of unassigned players to encourage mixing of player groups
Reset all tables to empty and all players to unassigned
Reset the system so that there are no players or tables
Packages
The project comprises three npm packages. muster-store, muster-server, and muster-client.
muster-store
The muster-store package contains Redux state slices created with @reduxjs/toolkit which describe how the client stores and interacts with data, and an axios powered interface for interacting with muster-server's REST API.
The muster-client package uses essentially all of the code in this package. The muster-server package needs access to use the Redux action creators to dispatch actions to clients.
muster-client
the muster-client package uses create-react-app, Redux, Socket.io, @material-ui and react-beautiful-dnd to deliver a single page application for interacting with application data.
muster-server
The muster-server package contains a Sequelize data model for persistent application data, and an Express API to expose it. The web server uses socket.io to dispatch events to connected clients to keep them in sync.
Testing
The muster-store and muster-server packages are tested using the Jest testing framework. The muster-client package supports Jest testing as a create-react-app project, but tests are not currently implemented awaiting investigation of UI testing best practices, such as Jest snapshots.
This is a technical demonstration primarily focused on illustrating the use of dependencies.
Limitations
This project does not yet have feature parity with the legacy system using google sheet and google forms.
Supported functionality
The following basic user use-cases are supported:
Packages
The project comprises three npm packages. muster-store, muster-server, and muster-client.
muster-store
The muster-store package contains Redux state slices created with @reduxjs/toolkit which describe how the client stores and interacts with data, and an axios powered interface for interacting with muster-server's REST API.
The muster-client package uses essentially all of the code in this package. The muster-server package needs access to use the Redux action creators to dispatch actions to clients.
muster-client
the muster-client package uses create-react-app, Redux, Socket.io, @material-ui and react-beautiful-dnd to deliver a single page application for interacting with application data.
muster-server
The muster-server package contains a Sequelize data model for persistent application data, and an Express API to expose it. The web server uses socket.io to dispatch events to connected clients to keep them in sync.
Testing
The muster-store and muster-server packages are tested using the Jest testing framework. The muster-client package supports Jest testing as a create-react-app project, but tests are not currently implemented awaiting investigation of UI testing best practices, such as Jest snapshots.