diff options
-rw-r--r-- | README.md | 35 | ||||
-rw-r--r-- | TODO | 17 | ||||
-rw-r--r-- | rust/README.md | 23 |
3 files changed, 37 insertions, 38 deletions
@@ -11,13 +11,38 @@ The [RFC](./farcat-rfc.md) is the original design document, and the best place to start for background. -There will be three main components: +There are four main components: - backend API server and database -- front-end web interface (built on API) -- client libraries and bots +- elasticsearch index +- API client libraries and bots (eg, ingesters) +- front-end web interface (built on API and library) The API server was prototyped in python. "Real" implementation started in golang, but shifted to Rust, and is work-in-progress. The beginings of a client -library and data ingesters exist in python (may or may not be re-written in -Rust). +library, web interface, and data ingesters exist in python. Elasticsearch index +is currently just a Crossref metadata dump and doesn't match entities in the +database/API (but is useful for paper lookups). + +## Status + +- HTTP API + - [ ] base32 encoding of UUID identifiers + - [x] inverse many-to-many helpers (files-by-release, release-by-creator) +- SQL Schema + - [x] Basic entities + - [x] one-to-many and many-to-many entities + - [x] JSON(B) "extra" metadata fields + - [x] full rev1 schema for all entities + - [ ] editgroup review: comments? actions? +- Web Interface + - [x] Migrate Python codebase + - [ ] Creation and editing of all entities +- Other + - [x] Basic logging + - [x] Swagger-UI + - [ ] Sentry (error reporting) + - [ ] Metrics + - [ ] Authentication (eg, accounts, OAuth2, JWT) + - [ ] Authorization (aka, roles) + - [ ] bot vs. editor @@ -1,22 +1,22 @@ ## Schema / Alignment / Scope +- wikidata IDs are first-class identifiers (release, container, creator) - 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 +- abstracts! as files? separate table? format (latex, html, etc)? +- other identifiers (just in extra?) +- work_type, release_type, release_status 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) +- manual editing of containers and releases (web interface) +x bulk loading of releases, files, containers, creators +x accurate auto-matching matching of containers (eg, via ISSN) ## Performance @@ -34,9 +34,6 @@ x have release creation auto-create works if one isn't specified - '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 diff --git a/rust/README.md b/rust/README.md index 0b4e453a..ff873cc7 100644 --- a/rust/README.md +++ b/rust/README.md @@ -1,29 +1,6 @@ Rust implementation of fatcat API server (`fatcatd`). -## Status - -- HTTP API - - [ ] base32 encoding of UUID identifiers - - [x] inverse many-to-many helpers (files-by-release, release-by-creator) -- SQL Schema - - [x] Basic entities - - [x] one-to-many and many-to-many entities - - [x] JSON(B) "extra" metadata fields - - [x] full rev1 schema for all entities - - [ ] editgroup review: comments? actions? -- Web Interface - - [x] Migrate Python codebase - - [ ] Creation and editing of all entities -- Other - - [x] Basic logging - - [x] Swagger-UI - - [ ] Sentry (error reporting) - - [ ] Metrics - - [ ] Authentication (eg, accounts, OAuth2, JWT) - - [ ] Authorization (aka, roles) - - [ ] bot vs. editor - ## Development - rust stable, 1.26+ (eg, via "rustup", includes cargo tool) |