{"id":18763019,"url":"https://github.com/HireHoffee/Game-Store","last_synced_at":"2025-12-30T22:34:21.858Z","repository":{"id":40495349,"uuid":"498477625","full_name":"Hire-Hoffee/Game-Store","owner":"Hire-Hoffee","description":"The fullstack game store application made with Express and Vue.","archived":false,"fork":false,"pushed_at":"2025-02-15T15:56:31.000Z","size":2530,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-14T05:03:03.995Z","etag":null,"topics":["axios","fullstack","jwt-authentication","nodejs","postgresql","tailwindcss","vite","vuejs","vuex"],"latest_commit_sha":null,"homepage":"http://petgamemuffin.ydns.eu","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Hire-Hoffee.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-05-31T19:51:37.000Z","updated_at":"2025-02-15T15:56:34.000Z","dependencies_parsed_at":"2025-02-15T16:26:59.615Z","dependency_job_id":"a10b6e2c-1f53-4de1-bafe-482b656f2524","html_url":"https://github.com/Hire-Hoffee/Game-Store","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Hire-Hoffee/Game-Store","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hire-Hoffee%2FGame-Store","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hire-Hoffee%2FGame-Store/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hire-Hoffee%2FGame-Store/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hire-Hoffee%2FGame-Store/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Hire-Hoffee","download_url":"https://codeload.github.com/Hire-Hoffee/Game-Store/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hire-Hoffee%2FGame-Store/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259763076,"owners_count":22907407,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["axios","fullstack","jwt-authentication","nodejs","postgresql","tailwindcss","vite","vuejs","vuex"],"created_at":"2024-11-07T18:24:24.040Z","updated_at":"2025-12-30T22:34:21.826Z","avatar_url":"https://github.com/Hire-Hoffee.png","language":"Vue","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Game Muffin: online video game store\n\nGame Muffin is a web application representing an online video game store. The project is built on a client-server architecture, where the frontend is responsible for displaying information and interacting with the user, and the backend provides API for accessing data and processing business logic.\n\n#### Link to [GameMuffin](http://petgamemuffin.freemyip.com).\n\n#### Website design in Figma - [link](https://www.figma.com/file/h8FgSc2vhMSTlUnSUqAafQ/Game-store?node-id=0%3A1).\n\n\u003cbr\u003e\n\u003cdiv style=\"text-align:center\"\u003e\n  \u003cimg src=\"https://i.imgur.com/aTb2t3M.jpg\" width=\"1000\"/\u003e\n\u003c/div\u003e\n\u003cbr\u003e\n\n## Site functionality\n\nOn this site you can **\"buy ”**, **write reviews**, **evaluate** games. After **\"buying ”** the games added to the cart are sent to the e-mail specified during registration. Also on the site implemented **search** and **filter** on games.\n\n\u003cdiv style=\"text-align:center\"\u003e\n  \u003cimg src=\"https://i.imgur.com/13N8zjw.jpg\" width=\"550\"/\u003e\n  \u003cimg src=\"https://i.imgur.com/MQV6GzU.jpg\" width=\"550\"/\u003e\n  \u003cimg src=\"https://i.imgur.com/zOSbmr4.jpg\" width=\"550\"/\u003e\n\u003c/div\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n\n### Technology:\n\n**Frontend:**\nVue.js, Vue Router, Tailwind CSS, Swiper.js, Axios\n\n**Backend:**\nNode.js, Express.js, Sequelize, JWT, Nodemailer, bcrypt, dotenv, axios\n\n### Principle of operation:\n\n1. **Loading the frontend part**: The user opens the application in a browser. The frontend created with Vue.js is loaded and displays the start page.\n2. **Routing**: Vue Router handles the user's transitions between sections of the application by dynamically loading and displaying the appropriate Vue components.\n3. **Backend Interaction**: To retrieve and update data, the frontend sends HTTP requests to the backend API using Axios.\n4. **Backend request processing**: Express.js handles incoming requests by identifying the appropriate controller and calling its method.\n5. **Business logic**: The appropriate service is called in the controller, which contains the business logic needed to process the request.\n6. **Database Interaction**: The service interacts with the PostgreSQL database via Sequelize, performing the necessary operations: reading, writing, updating or deleting data.\n7. **Backend response**: The backend sends a response to the frontend in JSON format containing data or error information.\n8. **Frontend Update**: Frontend processes the received response by updating the application state using Vuex, changing the component mapping and displaying the current information to the user.\n9. **Authentication**: For secure actions such as buying games or leaving reviews, frontend uses JWT to authenticate the user. The backend verifies the token by checking the user's access rights.\n10. **Email Notifications**: Backend uses Nodemailer to send email notifications to users, such as to confirm registration or send order information.\n\n**Additional Features:**\n\n- **External API**: Backend utilizes RAWG's external game API to retrieve additional game information such as Metacritic ratings and screenshots.\n- **Filtering and Search**: Frontend provides the ability to filter games by various parameters: price, genre, platform. Backend processes queries with filters, returning relevant results.\n- **Pagination**: Frontend implements pagination to display large lists of games, breaking them into pages. Backend handles page-specific data requests.\n- **Error Handling**: Backend provides informative error messages in JSON format, which frontend displays to the user.\n\n**The site is adaptive and is available for comfortable viewing on devices with different screen sizes. There is also a change of the site theme.**\n\n\u003cdiv style=\"text-align:center\"\u003e\n  \u003cimg src=\"https://i.imgur.com/7YsO1pp.jpg\" width=\"400\"/\u003e\n  \u003cimg src=\"https://i.imgur.com/x54Ta0X.jpg\" width=\"1000\"/\u003e\n\u003c/div\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n\n## Run the application\n\n- clone the repository using `git clone`.\n- install `npm init` dependencies in the `/server` and `/client` folders.\n- To start the client and server separately use the `npm start` command in the folders of the same name, or start only the server, with the client as static files after the `npm run build` command in the `client` folder and `npm start` in the ``server` folder.\n\nYou will also need to connect to the database and the following environment variables:\n\n- PORT\n- To run CORS - VUE_API_URL\n- Connection to the database - DB_HOST DB_PORT DB_DIALECT DB_NAME DB_USER DB_PASSWORD\n- For JWT operation - SECRET_REFRESH SECRET_ACCESS\n- For RAWG API operation - RAWG_API_KEY\n- For Nodemailer operation - EMAIL_HOST EMAIL_PORT EMAIL_USER EMAIL_PAS\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FHireHoffee%2FGame-Store","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FHireHoffee%2FGame-Store","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FHireHoffee%2FGame-Store/lists"}