## Description Set up the GraphQL API for the project so the frontend can request data from the backend and database. Implement a GraphQL server using Node.js and TypeScript, define the initial schema and resolvers, and connect the API to the MySQL database. Configure Apollo Client in the React frontend so it can communicate with the GraphQL server. ## Acceptance Criteria - [x] A GraphQL server is configured and can be started successfully. - [x] An initial GraphQL schema defines the relevant Pokémon data and queries. - [x] Resolvers retrieve Pokémon data from the MySQL database. - [x] Apollo Client is configured in the React frontend and connected to the GraphQL endpoint. - [x] At least one GraphQL query successfully retrieves data from the database. - [x] The frontend displays data returned by the GraphQL API. - [x] Errors are handled appropriately, including failed queries or database connections. - [x] The setup is documented, including how to start the backend and configure the connection to the database. - [x] The solution can run in the group's VM environment without Docker. ## Subissues - [x] #49 - [x] #50 - [x] #51 - [x] #52 ## Dependencies Optionally dependent on: - Set up the MySQL database and import the Pokémon dataset. #23 and #22 ## Notes - **Frontend:** React, TypeScript, Vite, and Apollo Client. - **Backend:** Node.js, TypeScript, and a GraphQL server. - **Database:** MySQL. - The backend should preferably be accessible on port 3001, in accordance with the project description. - The database and backend must run directly on the group's VM, not through Docker. - Keep database access in the backend; the frontend should retrieve data through GraphQL rather than connecting directly to MySQL. - Start with a small, useful query to verify the complete data flow before implementing more complex functionality. - Search, filtering, sorting, and pagination should be implemented progressively, with database-side operations where appropriate so they work across the full dataset. - Do not commit database credentials or other secrets to the repository.