This is a practice project to practice using ApolloServer, ApolloClient, Prisma, PostgreSQL, GraphQL, React, Typescript. I chose to set up both the backend and the frontend in order to better assimilate the link between these different technologies.
So I first proceeded to install the backend with ApolloServer, Nexus, Typescript, PostgreSQL and Prisma. This allowed me to establish the connection between the backend and the database, put into production thanks to Heroku, and to create my own book API.
Once the API was ready, I started on the frontend part with React Native, Expo and ApolloGraphQL, exclusively on mobile. This was an opportunity to clone Netflix and give it a different functionality. Thanks to that I was able to see the basic concepts of React Native, the operation of FlatList, View or TextInput. I practiced using Modals, retrieving the data to make it appear on the Modal. With React Native, the search system was very easy to set up.
I really enjoyed working with ApolloGraphQL. I could see the positives of a GraphQL API. No need to go through a URL for a specific action. Just call the schema that corresponds to the action, specify whether it is a mutation or a query and use it in the code. Everything is done in very little code, it's impressive! This project has been the promise of great discoveries.
โ Better think my backend. My system of likes is not functional because I did not think beforehand to create a table for the likes in the database. Which would have allowed me to go through the subscriptions. I will have to see this again!
โ Perhaps add a comment system to allow people to express themselves on what they think of such and such a work.
โ Find a way to have an even shorter and cleaner code. Surely there are good practices to have that I am not yet aware of.
โ Add in the Book tables, an array that contains the books of a category. I didn't put a field for a category on the backend side, which would have been good for making multiple list categories like on Netflix.
โ Make a web version of the project
https://www.udemy.com/course/graphql-bootcamp/
https://www.howtographql.com/react-apollo/0-introduction/
https://www.apollographql.com/docs/tutorial/resolvers/
https://nexusjs.org/docs/plugins/prisma/overview
https://www.apollographql.com/docs/react/v2/integrations/react-native/