Where we are right now
User defines their own datasource (Postgres)
User defines a schema (including the queries and mutations)
Users are responsible for writing resolvers (via SQL statements)
Advantages
Bring your own database (so long as it's Postgres)
Support for multiple Data Sources (later on)
Integrate with existing applications
Disadvantages
UX for writing resolvers is awful - InMemory almost impossible.
User must figure out how to map schema to their database - New or Existing.
Injection is really hard to mitigate. Current examples are insecure.
Conflict resolution and offline is very hard to solve because most solutions touch the data source - which we have no control over right now.
Where do we go next?
It all depends on who our target user is
Our Proposed Vision
Initial target
- Community Users
Start with a
Schema First
approach with
Auto Generated Resolvers
with a goal of eventually supporting the 'bring your own data sources' concept.
Schema First - Main Disadvantage
Initially not as flexible
Will be tricky for users that already have data
Schema First - Advantages
Incredibly Simple.
User defines their types and all CRUD resolvers are generated automatically.
Full control
all the way down to the datasource layer.
Conflicts, Offline, Caching, Pagination
are now much easier to solve.
Security Guarantees
Why - Strategic Decision
Initial Release is obviously going to be an MVP
What is the purpose of an MVP?
Schema first approach for MVP makes sense
It's focused and opinionated
It's easy to get started with
It's easy to demo and build content around
We can provide a roadmap which works towards a more flexible solution.
Summary
Wrap your existing data with a GraphQL API
It's pretty hard to use
It's has websockets so it's a sync service right? - Not really.
What about offline, conflicts and security?
Where we Are Right Now
Where we Could Be
More focused, end-to-end solution
Getting started would be very easy
Is an actual sync service
Offline
Conflicts
... and more
Initially less flexible but we can work towards more advanced use cases
It all comes back to the question
Who are we targeting?
Made with Slides.com