Unroot
A GraphQL Server on top of root.co.za's programmable banking api.
Install / Use
/learn @nunsie/UnrootREADME
Try it out here 👉 live.unroot.co.za
Or here 👉 sandbox.unroot.co.za
Features
- Serverless Architecture: Unroot runs on AWS Lambda which is scalable and cheap.
- Scalable GraphQL server: The server uses
graphql-yogawhich is based on Apollo Server & Express. - Tooling: Out-of-the-box support for GraphQL Playground & query performance tracing.
- Extensible: Simple and flexible data model – easy to adjust and extend.
- No configuration overhead: Preconfigured
graphql-configsetup.
Requirements
You need to have the Serverless installed to run the application locally or deploy it to your own AWS account:
npm install -g serverless
Getting started
# 1. Install project dependencies with yarn
yarn
# 2. Export the STAGE env var
export STAGE=dev
# 3. Start server (runs on http://localhost:3000) and open GraphQL Playground
sls offline start
Authenticating
Same auth method as the root api, basic with api key as user and password blank.
Test using test key provided (test_key_tYILz1640w9q5n5kNQUZ), base64 string for use in "Authorization" header:
"Basic dGVzdF9rZXlfdFlJTHoxNjQwdzlxNW41a05RVVo6"

Documentation
Commands
-
yarn startstarts GraphQL server onhttp://localhost:3000and opens GraphQL Playground -
yarn deploydeploys application to AWS Lambda via serverless
TODO
I haven't been able to test a bunch of queries and mutations as yet because I haven't been accepted into the private beta 💔, would love if someone with access could test some of the below and report their findings:
- [ ] Test
cardquery with a valid api key - [ ] Test
transactionquery with a valid api key - [ ] Test
categoryquery with a valid api key - [ ] Test
contactquery with a valid api key - [ ] Test
tagquery with a valid api key
These relational queries might get a little complex.. don't want to end up in infinite loops 🤔
-
[ ] Extend
Cardtype to includecode,sensitiveandconfig_variables -
[ ] Extend
Cardtype to return relational data toTaginstead of just thetag_id -
[ ] Extend
Transactiontype to return relational data to:Tag,Card,Category&Contact, instead of just returning their id's -
[ ] Implement
updateCardresolver -
[ ] Implement
updateCategoryresolver -
[ ] Implement
updateContactresolver -
[ ] Implement
updateTagresolver -
[ ] Implement
updateTransactionresolver
