## Schema / Alignment / Scope - switch a bunch more primary keys to UUID: revs, editor ids, edit numbers - abstracts! as files? separate table? format (latex, html, etc)? - work_type, release_type, release_status - multiple URLs - other identifiers (just in extra?) - make "raw" fields in release_ref/release_contrib JSON? - wikidata IDs are first-class identifiers name ref: https://www.w3.org/International/questions/qa-personal-names ## High-Level Priorities - bulk loading of releases, files, containers, creators - manual editing of containers and releases (web interface) - accurate auto-matching matching of containers (eg, via ISSN) - full database dump and reload (import/export) ## Performance x have release creation auto-create works if one isn't specified - write pure-rust "benchmark" scripts that hit, eg, lookups and batch endpoints. run these with auto_explain on, then look in logs on dev machine - batch inserts automerge: create editgroup and changelog, mark all edits as accepted, all in a single transaction ## Other - kong or oauth2_proxy for auth, rate-limit, etc - "authn" microservice: https://keratin.tech/ - PUT for mid-edit revisions - 'parent rev' for revisions (vs. container parent) - "submit" status for editgroups? api: - all files for a given release review - what does openlibrary API look like? - add a 'live' (or 'immutable') flag to revision tables CSL: - https://citationstyles.org/ - https://github.com/citation-style-language/documentation/blob/master/primer.txt - https://citeproc-js.readthedocs.io/en/latest/csl-json/markup.html - https://github.com/citation-style-language/schema/blob/master/csl-types.rnc - perhaps a "create from CSL" endpoint?