I’m checking out the capabilities of EventStore and I’m playing with simple IssueTracker. Basics of my approach so far are described here: https://github.com/bprzygoda/IssueTracker/wiki/Approach
While the issue events coupled with state changes are pretty straightforward, I was having some difficulties with giving a way to grab the list of reported/taken issues for specific user. At first I was filtering for specific events (Reported, Taken), creating new streams: ReportedIssues, TakenIssues and then using partitionBy to partition per user and build state (list of ids).
Reading through various sources, the general conclusion was that building state that grows proportionally with the amount of objects is bad idea, and it helped me to come with better approach - I just generate new streams (per user) which contain Reported and Taken events. Then, client app would just use such stream to build its internal list (and use live subscription to keep them up to date).
The real reason why I’m posting this, is that I wanted some help with this issue, but I solved it while I was writing this post so…I’m sharing my experiences anyway.