{"id":29040403,"url":"https://github.com/taqi-m/game-zilla","last_synced_at":"2026-03-06T07:31:26.810Z","repository":{"id":295375858,"uuid":"978303947","full_name":"taqi-m/game-zilla","owner":"taqi-m","description":"Game Store Database Systems semester project.","archived":false,"fork":false,"pushed_at":"2025-07-27T11:09:47.000Z","size":280,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-30T08:54:33.102Z","etag":null,"topics":["database-systems","express-js","node-js","reactjs","sql-server"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/taqi-m.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2025-05-05T19:25:19.000Z","updated_at":"2025-07-27T11:09:51.000Z","dependencies_parsed_at":"2025-07-27T13:05:35.524Z","dependency_job_id":"c1c4df0d-76e9-4e97-ae02-82a1376b9019","html_url":"https://github.com/taqi-m/game-zilla","commit_stats":null,"previous_names":["taqi-m/game-zilla"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/taqi-m/game-zilla","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taqi-m%2Fgame-zilla","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taqi-m%2Fgame-zilla/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taqi-m%2Fgame-zilla/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taqi-m%2Fgame-zilla/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/taqi-m","download_url":"https://codeload.github.com/taqi-m/game-zilla/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taqi-m%2Fgame-zilla/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30165617,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T04:43:31.446Z","status":"ssl_error","status_checked_at":"2026-03-06T04:40:30.133Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["database-systems","express-js","node-js","reactjs","sql-server"],"created_at":"2025-06-26T14:05:12.225Z","updated_at":"2026-03-06T07:31:26.793Z","avatar_url":"https://github.com/taqi-m.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n    \u003ch1 align=\"center\"\u003e🎮 Game-Zilla\u003c/h1\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://reactjs.org/\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/React-61DAFB?style=for-the-badge\u0026logo=react\u0026logoColor=20232A\" alt=\"React\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://nodejs.org/\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Node.js-3C873A?style=for-the-badge\u0026logo=node.js\u0026logoColor=white\" alt=\"Node.js\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://expressjs.com/\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Express-303030?style=for-the-badge\u0026logo=express\u0026logoColor=61DAFB\" alt=\"Express\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://www.microsoft.com/sql-server\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/SQL%20Server-CC2927?style=for-the-badge\u0026logo=microsoftsqlserver\u0026logoColor=white\" alt=\"SQL Server\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://jwt.io/\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/JWT-F7B93E?style=for-the-badge\u0026logo=jsonwebtokens\u0026logoColor=000000\" alt=\"JWT\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"./LICENSE\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/License-MIT-green.svg?style=for-the-badge\" alt=\"License: MIT\" /\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\nA full-stack web application for gamers to discover, track, and review video games. Built with React, Node.js, Express, and SQL Server.\n\n\u003e This project was developed as a university semester project for a Database Systems course, with a primary focus on implementing and demonstrating core database concepts. The application utilizes SQL Server features such as indexes, views, and triggers to leverage the full functionality of the database system. Over time, this semester project evolved into a full-stack web application, integrating both frontend and backend technologies for a complete user experience.\n\n## 📚 Table of Contents\n\n- [📋 Features](#-features)\n- [🛠️ Tech Stack](#️-tech-stack)\n- [🚀 Getting Started](#-getting-started)\n    - [Prerequisites](#prerequisites)\n    - [Installation](#installation)\n    - [Running the Application](#running-the-application)\n- [📝 API Documentation](#-api-documentation)\n- [📊 Database Schema](#-database-schema)\n- [📄 License](#-license)\n- [👥 Team](#-team)\n\n## 📋 Features\n\n- **Game Discovery**: Browse and search through an extensive database of games\n- **User Authentication**: Secure login and registration system\n- **Personal Game Library**: Track your games, mark favorites, and manage your collection\n- **Game Reviews**: Read and write reviews for games\n- **Responsive Design**: Fully responsive interface that works on desktop and mobile devices\n\n## 🛠️ Tech Stack\n\n- **Frontend**: React.js\n- **Backend**: Node.js, Express\n- **Database**: SQL Server\n- **Authentication**: JWT, bcrypt\n\n## 🚀 Getting Started\n\n### Prerequisites\n\n- Node.js (v14 or higher)\n- SQL Server instance\n- npm or yarn\n\n### Installation\n\n1. **Clone the repository**\n   ```bash\n   git clone https://github.com/taqi-m/game-zilla.git\n   cd game-zilla\n   ```\n\n2. **Set up the backend**\n   ```bash\n   cd backend\n   npm install\n   ```\n\n3. **Create a .env file in the backend directory with the following variables**\n   ```\n   DB_SERVER=your_db_server\n   DB_USER=your_db_username\n   DB_PASSWORD=your_db_password\n   DB_DATABASE=your_db_name\n   DB_PORT=1433\n   ```\n\n4. **Set up the frontend**\n   ```bash\n   cd ../frontend\n   npm install\n   ```\n\n### Running the Application\n\n1. **Start the backend server**\n   ```bash\n   cd backend\n   npm run dev\n   ```\n   The server will run on http://localhost:5000\n\n2. **Start the frontend development server**\n   ```bash\n   cd frontend\n   npm start\n   ```\n   The application will open in your browser at http://localhost:3000\n\n## 📝 API Documentation (General Endpoints)\n\n| Endpoint | Method | Description | Parameters |\n|----------|--------|-------------|------------|\n| `/api/auth/register` | POST | Register a new user | username, email, password_hash |\n| `/api/auth/login` | POST | Login a user | email, password |\n| `/api/auth/logout` | POST | Logout a user | None |\n| `/api/games` | GET | Get all games | sort, genre, platform (all optional) |\n| `/api/games/genres` | GET | Get all game genres | None |\n| `/api/games/platforms` | GET | Get all game platforms | None |\n| `/api/games/:id` | GET | Get a specific game | None |\n| `/api/cart/:userId` | GET | Get user's cart | None |\n| `/api/cart/add` | POST | Add item to cart | game_id, quantity, user_id |\n| `/api/cart/update` | PUT | Update cart item | cart_item_id, quantity |\n| `/api/cart/remove/:cart_item_id` | DELETE | Remove item from cart | None |\n| `/api/orders/:userId` | GET | Get orders for a user | None |\n| `/api/orders` | POST | Place an order | user_id, cart_id, payment_id, shipping_address, billing_address |\n| `/api/orders/details/:orderId` | GET | Get order details | None |\n| `/api/orders/payment` | POST | Process payment | user_id, cart_id, amount, payment_method, card_last4 (optional) |\n| `/api/categories` | GET | Get all categories | None |\n| `/api/categories` | POST | Create a category | name |\n| `/api/categories/:id` | PUT | Update a category | name |\n| `/api/categories/:id` | DELETE | Delete a category | None |\n\n## 📊 Database Schema\n\nThe following Entity-Relationship Diagram (ERD) shows the database structure of Game-Zilla:\n\n```mermaid\n%%{init: { \n    'theme': 'base',\n    'themeVariables': {\n        'primaryColor': '#f0f4ff',\n        'primaryBorderColor': '#4a6baf',\n        'primaryTextColor': '#1a237e',\n        'lineColor': '#3a5683',\n        'tertiaryColor': '#e3f2fd',\n        'tertiaryBorderColor': '#90caf9',\n        'fontFamily': 'Arial, sans-serif',\n        'fontSize': '16px',\n        'edgeLabelBackground': '#f8f9fa',\n        'entityLabelFontWeight': 'bold'\n    },\n    'themeConfig': {\n        'nodeTextMargin': 10,\n        'padding': 15,\n        'entityPadding': 12\n    }\n}}%%\nerDiagram\n    USERS ||--o{ ORDERS : \"places\"\n    USERS ||--|| CARTS : \"has\"\n    USERS ||--o{ REVIEWS : \"writes\"\n    USERS ||--o{ USER_ROLES : \"has\"\n    USERS {\n        int user_id PK\n        varchar username\n        varchar email\n        varchar password_hash\n        boolean is_verified\n        boolean is_active\n        datetime created_at\n        datetime updated_at\n        datetime last_login_at\n    }\n\n    ROLES ||--o{ USER_ROLES : \"assigned\"\n    ROLES ||--o{ ROLE_PERMISSIONS : \"grants\"\n    ROLES {\n        int role_id PK\n        varchar name\n        varchar description\n    }\n\n    PERMISSIONS ||--o{ ROLE_PERMISSIONS : \"includes\"\n    PERMISSIONS {\n        int permission_id PK\n        varchar code\n        varchar description\n    }\n\n    GAMES ||--o{ ORDER_ITEMS : \"ordered_in\"\n    GAMES ||--o{ INVENTORY : \"stocked_in\"\n    GAMES ||--o{ GAME_CATEGORIES : \"categorized_as\"\n    GAMES ||--o{ REVIEWS : \"has\"\n    GAMES ||--o{ GAME_IMAGES : \"displays\"\n    GAMES {\n        int game_id PK\n        varchar title\n        text description\n        decimal price\n        varchar genre\n        varchar platform\n        varchar developer\n        date release_date\n        boolean is_featured\n        datetime created_at\n        datetime updated_at\n    }\n\n    CARTS ||--o{ CART_ITEMS : \"contains\"\n    CARTS {\n        int cart_id PK\n        int user_id FK\n        datetime created_at\n        datetime updated_at\n    }\n\n    ORDERS ||--o{ ORDER_ITEMS : \"contains\"\n    ORDERS ||--|| PAYMENTS : \"processed_via\"\n    ORDERS {\n        int order_id PK\n        int user_id FK\n        datetime order_date\n        decimal subtotal\n        decimal tax_amount\n        decimal shipping_cost\n        decimal total_amount\n        varchar status\n        varchar shipping_address\n        varchar billing_address\n        datetime updated_at\n    }\n\n    CATEGORIES ||--o{ GAME_CATEGORIES : \"groups\"\n    CATEGORIES {\n        int category_id PK\n        varchar name\n    }\n\n    PAYMENTS {\n        int payment_id PK\n        int order_id FK\n        datetime payment_date\n        decimal amount\n        varchar payment_method\n        varchar status\n        varchar transaction_id\n        varchar card_last4\n    }\n\n    INVENTORY {\n        int inventory_id PK\n        int game_id FK\n        int stock_quantity\n        int reserved_quantity\n        datetime last_restock\n    }\n\n    REVIEWS {\n        int review_id PK\n        int user_id FK\n        int game_id FK\n        int rating\n        text comment\n        datetime created_at\n        datetime updated_at\n    }\n\n    GAME_IMAGES {\n        int image_id PK\n        int game_id FK\n        varchar image_url\n        boolean is_primary\n        int display_order\n    }\n\n    USER_ROLES {\n        int user_id FK, PK\n        int role_id FK, PK\n        datetime assigned_at\n    }\n\n    ROLE_PERMISSIONS {\n        int role_id FK, PK\n        int permission_id FK, PK\n    }\n\n    CART_ITEMS {\n        int cart_item_id PK\n        int cart_id FK\n        int game_id FK\n        int quantity\n        datetime added_at\n    }\n\n    ORDER_ITEMS {\n        int item_id PK\n        int order_id FK\n        int game_id FK\n        int quantity\n        decimal unit_price\n        decimal subtotal\n    }\n    \n    GAME_CATEGORIES {\n        int game_id FK, PK\n        int category_id FK,PK\n    }\n```\n\n## 📄 License\n\nThis project is licensed under the MIT License. - see the [LICENSE](LICENSE) file for details.\n\nThis means:\n- You are free to use, modify, and distribute this software\n- You may distribute modified versions under any license of your choice\n- You are not required to release derivative works as open source\n- The software is provided “as is”, without warranty of any kind\n\u003cdiv align=\"center\"\u003e\n\n## 👥 Team\n\n\u003ctable\u003e\n    \u003ctr\u003e\n        \u003ctd align=\"center\" valign=\"middle\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/taqi-m\" width=\"48\" height=\"48\" alt=\"Muhammad Taqi\" /\u003e\u003cbr/\u003e\n            \u003ca href=\"https://github.com/taqi-m\"\u003e\u003cb\u003eMuhammad Taqi\u003c/b\u003e\u003c/a\u003e\u003cbr/\u003e\n            \u003csub\u003eLead Developer\u003c/sub\u003e\n        \u003c/td\u003e\n        \u003ctd align=\"center\" valign=\"middle\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/l232550\" width=\"48\" height=\"48\" alt=\"Tooba Nadeem\" /\u003e\u003cbr/\u003e\n            \u003ca href=\"https://github.com/l232550\"\u003e\u003cb\u003eTooba Nadeem\u003c/b\u003e\u003c/a\u003e\u003cbr/\u003e\n            \u003csub\u003eUI/UX Designer\u003c/sub\u003e\n        \u003c/td\u003e\n        \u003ctd align=\"center\" valign=\"middle\"\u003e\n            \u003cimg src=\"https://avatars.githubusercontent.com/NayabMaryam\" width=\"48\" height=\"48\" alt=\"Nayab Maryam\" /\u003e\u003cbr/\u003e\n            \u003ca href=\"https://github.com/NayabMaryam\"\u003e\u003cb\u003eNayab Maryam\u003c/b\u003e\u003c/a\u003e\u003cbr/\u003e\n            \u003csub\u003eBackend Engineer\u003c/sub\u003e\n        \u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c/div\u003e\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaqi-m%2Fgame-zilla","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftaqi-m%2Fgame-zilla","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaqi-m%2Fgame-zilla/lists"}