GraphQL

GraphQL

Application and Data / Languages & Frameworks / Query Languages

Decision about MongoDB, GraphQL, Node.js

Avatar of juank11memphis

I just finished the very first version of my new hobby project: #MovieGeeks. It is a minimalist online movie catalog for you to save the movies you want to see and for rating the movies you already saw. This is just the beginning as I am planning to add more features on the lines of sharing and discovery

For the #BackEnd I decided to use Node.js , GraphQL and MongoDB:

  1. Node.js has a huge community so it will always be a safe choice in terms of libraries and finding solutions to problems you may have

  2. GraphQL because I needed to improve my skills with it and because I was never comfortable with the usual REST approach. I believe GraphQL is a better option as it feels more natural to write apis, it improves the development velocity, by definition it fixes the over-fetching and under-fetching problem that is so common on REST apis, and on top of that, the community is getting bigger and bigger.

  3. MongoDB was my choice for the database as I already have a lot of experience working on it and because, despite of some bad reputation it has acquired in the last months, I still believe it is a powerful database for at least a very long list of use cases such as the one I needed for my website

42 upvotes·29 comments·60.6K views

Decision at The New York Times about Apache HTTP Server, Kafka, Node.js, GraphQL, Apollo, React, PHP, MySQL

Avatar of nsrockwell
CTO at NY Times ·

When I joined NYT there was already broad dissatisfaction with the LAMP (Linux Apache HTTP Server MySQL PHP) Stack and the front end framework, in particular. So, I wasn't passing judgment on it. I mean, LAMP's fine, you can do good work in LAMP. It's a little dated at this point, but it's not ... I didn't want to rip it out for its own sake, but everyone else was like, "We don't like this, it's really inflexible." And I remember from being outside the company when that was called MIT FIVE when it had launched. And been observing it from the outside, and I was like, you guys took so long to do that and you did it so carefully, and yet you're not happy with your decisions. Why is that? That was more the impetus. If we're going to do this again, how are we going to do it in a way that we're gonna get a better result?

So we're moving quickly away from LAMP, I would say. So, right now, the new front end is React based and using Apollo. And we've been in a long, protracted, gradual rollout of the core experiences.

React is now talking to GraphQL as a primary API. There's a Node.js back end, to the front end, which is mainly for server-side rendering, as well.

Behind there, the main repository for the GraphQL server is a big table repository, that we call Bodega because it's a convenience store. And that reads off of a Kafka pipeline.

25 upvotes·1 comment·164.9K views

Decision at Airbnb about Apollo, GraphQL Playground, GraphQL, Prisma, BackendDrivenUI

Avatar of adamrneary
Engineer at Airbnb ·
ApolloApolloGraphQL PlaygroundGraphQL PlaygroundGraphQLGraphQL
#Prisma
#BackendDrivenUI

At Airbnb we use GraphQL Unions for a "Backend-Driven UI." We have built a system where a very dynamic page is constructed based on a query that will return an array of some set of possible “sections.” These sections are responsive and define the UI completely.

The central file that manages this would be a generated file. Since the list of possible sections is quite large (~50 sections today for Search), it also presumes we have a sane mechanism for lazy-loading components with server rendering, which is a topic for another post. Suffice it to say, we do not need to package all possible sections in a massive bundle to account for everything up front.

Each section component defines its own query fragment, colocated with the section’s component code. This is the general idea of Backend-Driven UI at Airbnb. It’s used in a number of places, including Search, Trip Planner, Host tools, and various landing pages. We use this as our starting point, and then in the demo show how to (1) make and update to an existing section, and (2) add a new section.

While building your product, you want to be able to explore your schema, discovering field names and testing out potential queries on live development data. We achieve that today with GraphQL Playground, the work of our friends at #Prisma. The tools come standard with Apollo Server.

#BackendDrivenUI

24 upvotes·115.2K views

Decision at CircleCI about Cypress, Percy, Jest, Apollo, GraphQL, Emotion, TypeScript, Storybook, React, Next.js

Avatar of z00b
CTO at CircleCI ·

We are in the process of adopting Next.js as our React framework and using Storybook to help build our React components in isolation. This new part of our frontend is written in TypeScript, and we use Emotion for CSS/styling. For delivering data, we use GraphQL and Apollo. Jest, Percy, and Cypress are used for testing.

15 upvotes·5 comments·18.3K views

Decision at StackShare about Redux, Apollo, React, GraphQL, FrontEndFrameworks

Avatar of ruswerner
Lead Engineer at StackShare ·
ReduxReduxApolloApolloReactReactGraphQLGraphQL
#FrontEndFrameworks

Earlier this year we decided to go "all-in" on GraphQL to provide our front-end API. We needed a stable client library to power our React app. We decided to use Apollo Client for a few reasons:

1) Stability 2) Maturity 3) Heaps of features 4) Great documentation (with use cases) 5) Support for server-side rendering 6) Allowed us to stop using Redux and Mobx

Overall we've had great success with this library, along with a few minor hiccups and work arounds, but no show stoppers. If you are coming from Redux.js land, it takes a bit of time to settle into a new way of thinking about how your data is fetched and flows through your React app. This part has been the biggest learning curve of anything to do with GraphQL.

One of the downsides to Apollo Client, once you build a larger application, (past the size of most of the documented use cases and sample apps) the state management tends to get distributed through various places; and not just components. Apollo Client has a state management feature that relies on a normalised local cache. Mastering the knowledge of how this works is key to getting the most out of the library and to architecting your component hierarchy properly.

#FrontEndFrameworks

14 upvotes·1 comment·179.2K views

Decision at Airbnb about Apollo, GraphQL, Visual Studio Code, Git, GraphQLSchema

Avatar of adamrneary
Engineer at Airbnb ·

One of the joys I wanted to demonstrate in a GraphQL Summit talk I did is having so many helpful tools at my fingertips while building our product at Airbnb. This includes access to Git in Visual Studio Code, as well as the integrated terminal and tasks for running frequently-needed commands.

Of course, we also had some fun stuff to show for GraphQL and Apollo! The part that most people had not seen was the new Apollo GraphQL VS Code Extension. There is no need for me to copy over all juicy features from their marketing site (there are many!), but I will elaborate on one feature: Schema Tags.

If you are going to lint your queries against the schema you are working on, you will invariably be presented with the decision of “which schema?” The default may be your production schema (“current,” by convention), but as we discuss in the demo, if you need to iterate and explore new ideas, you need the flexibility of targeting a provisional schema.

Since we are using Apollo Engine, publishing multiple schemas using tags allows us this flexibility, and multiple engineers can collaborate on a single proposed schema. Once proposed schema changes for a service are merged upstream and those changes are naturally flowing down in the current production schema, we can flip back to “current” in VS Code. Very cool.

#GraphQLSchema

13 upvotes·111K views

Decision about Apollo, Next.js, styled-components, React, graphql-yoga, Prisma, MySQL, GraphQL, Node.js

Avatar of deDykz
PayHub Ghana Limited ·

I just finished a web app meant for a business that offers training programs for certain professional courses. I chose this stack to test out my skills in graphql and react. I used Node.js , GraphQL , MySQL for the #Backend utilizing Prisma as a database interface for MySQL to provide CRUD APIs and graphql-yoga as a server. For the #frontend I chose React, styled-components for styling, Next.js for routing and SSR and Apollo for data management. I really liked the outcome and I will definitely use this stack in future projects.

13 upvotes·60.3K views

Decision at Peergrade about Amazon RDS, Graphene, GraphQL, Django, PostgreSQL

Avatar of malthejorgensen
CTO at Peergrade ·

We recently switched from MongoDB and the Python library MongoEngine to PostgreSQL and Django in order to:

  • Better leverage GraphQL (using the Graphene library)
  • Allow us to use the autogenerated Django admin interface
  • Allow better performance due to the way some of our pages present data
  • Give us more a mature stack in the form of Django replacing MongoEngine, which we had some issues with in the past.

MongoDB was hosted on mlab, and we now host Postgres on Amazon RDS .

13 upvotes·22.5K views

Decision about GraphQL, Apollo, Material-UI, React Router, React, MovieGeeks

Avatar of juank11memphis

I just finished tweaking styles details of my hobby project MovieGeeks (https://moviegeeks.co/): The minimalist Online Movie Catalog

This time I want to share my thoughts on the Tech-Stack I decided to use on the Frontend: React, React Router, Material-UI and React-Apollo:

  1. React is by far the Front-End "framework" with the biggest community. Some of the newest features like Suspense and Hooks makes it even more awesome and gives you even more power to write clean UI's

  2. Material UI is a very solid and stable set of react components that not only look good, but also are easy to use and customize. This was my first time using this library and I am very happy with the result

  3. React-Apollo in my opinion is the best GraphQL client for a React application. Easy to use and understand and it gives you awesome features out of the box like cache. With libraries like react-apollo-hooks you can even use it with the hooks api which makes the code cleaner and easier to follow.

Any feedback is much appreciated :)

13 upvotes·12.2K views

Decision at Shopify about GraphQL, QueryLanguages

Avatar of kirs
Production Engineer at Shopify ·
GraphQLGraphQL
#QueryLanguages

Now we have a much better solution for ensuring business logic does not leak into the client — GraphQL. The Admin becomes just another GraphQL client and follows the same patterns established by the mobile apps: no data persistence, no reliance on the server for anything that needs to be shared between clients, and extremely efficient fetching of resources for a view. #QueryLanguages

12 upvotes·607 views