As mentioned above, there is a lot of extra work for the current milestone that I hadn’t foreseen. I’m making progress currently with building an Elemental Zcash SSO server (OAuth2 Provider), a full stack authentication system built from scratch, which will allow for registration, login, etc; things could’ve been sped up by using a framework or third party auth system, but am prioritising future proofing instead and don’t want to trust any third party/proprietary solution, use JWT, or use Ory Hydra without a solid understanding of Go incase debugging or custom features are needed. Given app adoption, OAuth2 support should allow for cool use cases like “Login With ZECpages” or “Login With Free2Z”. This probably should’ve been a milestone or two on its own.
Code here: Initial auth GraphQL/OAuth2 provider setup by macintoshhelper · Pull Request #1 · elemental-zcash/sso · GitHub . Currently, the unverified email user creation flow is working; next step will be creating a Dockerised transactional email system (with Postfix most likely). Am not keen on requiring AWS SES usage given that the API isn’t widely adopted like S3.
I’m using a custom ORM that I’ve built, elemental-orm
, which is quite a bit of extra work initially, over using an existing ORM or manual SQL, but am doing this for future proofing and faster feature development in the future; the goal is to have the same data models create PostgreSQL schemas/queries, Redis indexing, etc and have a performant/scalable single source of truth. I’m not aware of any existing Node.js ORMs that nicely integrate PostgreSQL/Redis.
Once this is done, I’ll integrate the SSO server with ZPublish user registration, create a profile page with zaddress
/UA
entry and an all my links style page with the Elemental Pay donation flow, and an import for the Twitter data download (will probably do this in a future milestone once I’m more caught up on higher priority tasks).
TLDR; building a custom Redis/PostgreSQL ORM and SSO server has delayed things, but hopefully will be a really nice toolset for developers to build scalable Zcash apps, and will be extracting things like the GraphQL setup for Relay.js support and having a nice GraphQL/Apollo compatible API for building mobile apps (can then do things like create a GraphQL Zcash RPC API with caching).