## Database Schema / ORM / Generation start simple, with pg (or sqlx if we wanted to be DB-agnostic): - pq: basic postgres driver and ORM (similar to sqlalchemy?) - sqlx: small extensions to builtin sql; row to struct mapping debug postgres with gocmdpev later, if code is too duplicated, look in to sqlboiler (first) or xo (second): - https://github.com/xo/xo - https://github.com/volatiletech/sqlboiler later, to do migrations, use goose, or consider alembic (python) for auto-generation - https://github.com/steinbacher/goose - possibly auto-generate with python alembic for identifiers, consider either built-in postgres UUID, or: - https://github.com/rs/xid - https://github.com/oklog/ulid like a UUID, but base32 and "sortable" (timestamp + random) ## API In General Hope to use Kong for authentication. start with oauth2... orcid? ## OpenAPI/Swagger go-swagger (OpenAPI 2.0): - generate initial API server skeleton from a yaml definition - export updated yaml from code after changes - web UI for documentation - templating/references - auto-generate client (in golang) also look at ReDoc as a UI; all in-brower generated from JSON (react) ## Non-API stuff - logrus structured logging (or zap?) - testify tests (and assert?) - viper config