This is a small application that allows you to create and manage a list of movies. The project uses GraphQL, Apollo Server on the backend, and Apollo Client on the frontend, implemented with ReactJS.
- Create a new movie entry with a title, genre and release year.
- View the list of existing movies with their details.
- Edit movie details such as title, genre and release year
- Delete movies from the list.
Here is a brief demo of the movie list
GraphQL
: A query language for APIs that allows you to request exactly the data you need.Apollo Server
: A GraphQL server that connects to a data source and handles GraphQL queries and mutations.Apollo Client
: A GraphQL client that enables you to fetch and manage data from the Apollo Server in the frontend.ReactJS
: A JavaScript library for building user interfaces.Node.js
: A JavaScript runtime used for running the Apollo Server.
To set up the project locally, follow these steps:
Node.js and npm: Make sure you have Node.js (v14 or later) and npm installed on your machine.
-
Clone the repository:
git clone https://github.com/Diana-nyamai/MovieList.git
-
Navigate to the project directory:
cd movie-list-graphql
-
Install dependencies for both the server and client:
npm install
-
Apollo Server Configuration:
In the
server
directory, you can configure the data source and GraphQL schema in theserver.js
file. -
Running the Application
Start the Apollo Server: (make sure you have installed nodemon package)
npm start
-
The Apollo Server will be running on http://localhost:4000/graphql.
Once the application is running, you can access the frontend by visiting http://localhost:4000/graphql in your web browser. From there, you can interact with the movie list by adding, editing, and deleting movies.
If you find any bugs or want to add new features, feel free to submit a pull request. Please follow the existing code style and include appropriate tests for your changes.
Special thanks to the GraphQL and Apollo communities for providing excellent tools and resources for building modern applications.