Hey @fxv . We’re actually in the middle of a major dev cycle, with heaps of improvements and breaking changes so docs are on hold until the dust settles. We do have a couple of example apps being built now, so that will be the best way to see Space in action, otherwise we’ve got a nice expressive test-suit. These are critical projects and we need em done fairly urgently, so expect to see lots of collaboration and new code merged into the develop branches daily
https://github.com/meteor-space/todos
https://github.com/meteor-space/donations
We’re in the middle of a massive dev cycle, so while the released packages form part of a stable version, all the good stuff is pre-release. The best way to proceed here is to join our development Slack (send me your email in a private message), as it’s where you can get assistance with concepts or the application of Space in it’s current form.
Our two examples can be found here for reference:
https://github.com/meteor-space/todos
https://github.com/meteor-space/donations
" how to implement the aggregates and display them in a view”
Event-sourced aggregates publish events that you use to build view collections. We do this using a Projection
. Eg
If you notice in this project we have separated the domain and application concerns into separate packages. Multiple applications can all depend on the domain context, and it also highlights that an Aggregate knows nothing about display -> it’s up to the application to decide how to interpret the changes into a view state. If this is a bit confusing, just realise that this makes things highly flexible and performant!
"Or is that snapshots?”
Snapshots are a caching feature of the infrastructure, purely for performance when the application is running. When an Aggregate instance is sourced from many events, sending new commands can be slow as it first needs to run through each event to ‘rehydrate’ the aggregate. Snapshots mean that an Aggreagate’s state can be determined by many events, but only not all of them need to be loaded each time a new action is to be taken (usually it’s a command you send)
This is what I have done to successfully run Todos on Mac:
git clone https://github.com/meteor-space/todos.git
cd todos
mgp
./run.sh
MGP output should look something like this:
EBIZMacPro:todos darkomijic$ mgp
HEAD is now at 8b51727 Merge pull request #41 from meteor-space/fix/app-config-bug
Processing space-base at HEAD
Cleaning up
Copying package
Done...
HEAD is now at f6c2a9c Merge pull request #16 from meteor-space/fix/application-reset
Processing space-messaging at HEAD
Cleaning up
Copying package
Done...
HEAD is now at 8781cca Merge pull request #35 from meteor-space/fix/process-init-via-event-bug
Processing space-event-sourcing at HEAD
Cleaning up
Copying package
Done...
HEAD is now at 9b2ac9c Merge pull request #4 from meteor-space/fix/lock-deps
Processing space-domain at HEAD
Cleaning up
Copying package
Done...
HEAD is now at efd1caa Merge pull request #43 from meteor-space/feature/improve-missing-component-mapping-error
Processing space-flux at HEAD
Cleaning up
Copying package
Done...
HEAD is now at 1978ad9 Merge pull request #16 from meteor-space/feature/contains-array-of-structs
Processing space-testing at HEAD
Cleaning up
Copying package
Done…
space:base
-> space-base
, space:event-sourcing
-> space-event-sourcing
; however please keep in mind that all Space packages are in still in development so its always best to keep track what commit is used by looking on examples like: https://github.com/meteor-space/donations/blob/develop/git-packages.json
npm install -g mgp
, this is the part you are probably missing since you get mgp is not recognized), cloned todos (git clone https://github.com/meteor-space/todos.git
), cd todos
, mgp
, meteor
node -v