Hi, I'm considering building a project in a p2p-first way. Dat & Beaker seem like a good way to go, but I can't wrap my head around how to organize the data structures and which tools to use. We briefly talked about it with @mafintosh, @pfrazee and @taravancil at the Beaker meetup in Berlin. The recommendation was to write down my requirements in an issue, so here we are.
I'm building a codepen (jsbin, glitch) -like project but for short pieces of music. I'll call those pieces of music "chops" for short.
The goal of the project is to help people practice, collaborate on, discover music.
People will be able to record, save and share their chops with bandmates or publicly. People who have access to a previously made chops can then fork / remix them.
My intention is to bring the project to production. I believe p2p has potential and I'm happy to try and do it with Dat and Beaker. If it doesn't work I'll just fall back to whatever mongo/firebase.
A lot of it is about practicing by yourself, so
Some of the features are about collaboration:
Some of it are social features:
Broadly speaking, you can handle most of this using the DatArchive API. It'll be up to you to decide whether each Chop should have its own Dat, or if you want to give each user a "Profile Dat" which they put all their chops in.
For the social features, you might benefit from using WebDB, which is what we used in Fritter. You can see how that works by looking at libfritter.
The hard part is handling other browsers. I'll write up a longer response in a bit with your options there.
@flpvsk So @rangermauve has been working on dat polyfills and gateways, and he just opened an issue on fritter talking about it. See https://github.com/beakerbrowser/beaker/issues/1018. I'd read/watch that issue to see how to support other environments than Beaker.
@pfrazee thanks for the recommendations! I'm trying them out in the next several days.
One thing that is still a mystery to me is how can a person use several devices to read/write their data?
@flpvsk that's a protocol feature we call "multiwriter" and it's being worked on now
Most helpful comment
Broadly speaking, you can handle most of this using the DatArchive API. It'll be up to you to decide whether each Chop should have its own Dat, or if you want to give each user a "Profile Dat" which they put all their chops in.
For the social features, you might benefit from using WebDB, which is what we used in Fritter. You can see how that works by looking at libfritter.
The hard part is handling other browsers. I'll write up a longer response in a bit with your options there.