opinionated JavaScript client