| Note: The application is unoptimized as of now, and will take some time to fetch and display all the information.
Welcome to the plyGround a video game catalog website, a showcase of gaming titles with a unique user interface. This project is developed using Next.js 14.1.0, TypeScript, Tailwind CSS, Axios, React-Icons, and React-hot-toast. The website features a distinctive navbar at the bottom, a search bar at the top, and showcases a variety of games on the home page. The home page displays 40 games retrieved from the API using the GET method, with the option to randomize their sequence.
- Navbar: A unique navigation bar at the bottom of the website for easy access to different pages.
- Search Bar: Located at the top of the website for quick game searches.
- Home Page: Displays 40 games in a card format with details like title, release date, and overall rating. Games can be randomized.
- Trending Page (/trending): Shows trending games from the current date to a specified prior date using the
getTrendingGames()function. - Recommended Page (/recommended): Suggests games based on user ratings with the option to provide a rating as an argument.
- LocalStorage: Stores the data of the currently open game in the localStorage to facilitate reaccess in case the user reloads the page.
-
Clone the repository:
git clone https://github.com/bentekku/ply-ground.git cd ply-ground -
Install Dependencies:
npm install
-
Run the Application:
npm run dev
-
Open your browser and visit
http://localhost:3000to view the application.
- Backend Integration: Plans include adding a backend to allow users to track games they have played, are playing, shelved, or want to play.
- Authorization: Implementation of user authentication with either Clerk Auth or Next Auth for secure access to personalized features.
- Next.js 14.1.0
- TypeScript
- Tailwind CSS
- Axios
- RAWG API
- React-Icons
- React-hot-toast
Feel free to contribute to the project. Create a pull request with your proposed changes.
This project is licensed under the MIT License.
Special thanks to the developers of Next.js, TypeScript, Tailwind CSS, Axios, React-Icons, and React-hot-toast for their amazing tools and libraries.
-
Create small hover
navbarfor website navigation. -
Create
searchbarat the top of the page, which is fixed. -
Write a function called
getAllGames()which requests the results from the RAWG API. -
Populate
Homepage with games, as the api only return 40 results and also their order/sequence in the array is always fixed. -
Randomize the
Homepage search result array. -
Create
cardcomponent for the search results. -
Create
SinglePageGameor [slug] page for any games that are clicked upon; this page displays all the details regarding that game. -
Create a function called
getTrailer()which fetches trailer from the API. -
Implement Search feature in the
searchbar. -
Display search results.
-
Create
game-search-cardto display search results -
Utilize React Context Hook for passing props to all the components that requires them.
-
Create
Trendingpage. -
Write a function called
getTrendingGames(number)which requests the results from the RAWG API. The results are sorted based on the date they were added to the database of the API. -
Create
Recommendedpage. -
Write a function called
getTopRatedGames(number)which requests the results from the RAWG API. The results are sorted based on the ratings. -
Implement localStorage to store data in the browser's localStorage; so the web-app doesn't throw error regarding game(s) data upon refresh (it throws value is undefined)
| Future tasks:
- Filter out NSFW games
- Implement FramerMotion for subtle animations
- Uncomment User link in the
searchbarcomponent - Implement user
LoginandRegister - Add functionality that enables user to visit their profile, which provides options to change username, profile picture, and password .
- Implement tracking of video games
- Store all the tracked games of a user optimally on the mongodb