Well, my wife is going out tonight, which means it's dev time! I probably won't stream it this time, but I should hopefully be able to finish shelves, shelf items, and maybe even get started on book references!

I'm excited to see how much I can get done!

Gah, I'm hitting a huge snag with shelf items because I haven't fully worked out book references yet. I may need to refactor the database againβ€”I think I need more tables and a better way to think about the data structure... I was hoping I could keep the database relatively small/clever, but I'm seeing now that it won't really be possible with such a large project...

I have a headache from trying to figure it out right now... time for a break so I can process and mull over options.

Show thread

Ok, my current idea for data structure is to split the unified "Status" table into two double-duty tables that store Ratings+Reviews and Updates+Progress. That way it'll be a little bit easier to manage than just trying to split from one table.

I still need to figure out what to do about books, though... I want to be able to target specific editions for reviews, but I don't want a ton of repetition in the database... using editions from Inventaire could work, but it's...

...not super easy to understand the difference between them sometimes... I'm debating just doing an empty field so you can just write "audiobook version" or "1953 paperback" or something like that , but that'll lead to even more confusion since there are many different audiobook versions etc... I'm not sure. I guess using Editions is the best way to go?

I just don't want to bog people down with having to choose an edition unless they want to, like how GoodReads does but without the giant db.

Show thread

@tricoteur No, but specifically only because I'm *not* storing or delivering book dataβ€”I'm using external services like Inventaire and OpenLibrary for that.

I should probably take a look at what schemas are available for other things though! If there's a widely used standard for what I *am* storing, then I would definitely like to use it!


The creative work > collection sounds like a useful version of "shelf".

And whether or not you use the schema, sometimes they have good concepts you can use on their own - like bookFormat.

@Alamantus Three columns to represent "I have a copy (or opinion) of this book": work, edition, and edition_notes. The work should be straightforward. Work is required. edition is a uri or table ref. Notes is text for users who want to note what version they have but don't/can't select the official id. 1/2

@Alamantus Users who like cataloging will find the right one if they can. Users who don't like cataloging either won't care or will select one but be wrong.

User-entered data is *always* ugly. Most users won't care too much. Make it easy for them to avoid fucking up your data. Make it an extra well-labeled click for cataloger users to add more detail if they're motivated. And prepare for some of the data to be wrong anyway. 2/2

@epilanthanomai that's a good idea! I think I'll end up doing even /less/ than that, though: the work is defined from the source (Inventaire, etc), and the sources provide editions that are in *their* database. I'll provide a "choose edition" button/field that loads in all the available editions from the sources for them to choose from, and if their edition is missing it will direct them to contribute their data to the source!

That should cover most of the bases you brought up, I think!

Sign in to participate in the conversation

cybrespace: the social hub of the information superhighway jack in to the mastodon fediverse today and surf the dataflow through our cybrepunk, slightly glitchy web portal support us on patreon or liberapay!