{"id":22743078,"url":"https://github.com/mikeleo03/metamaker","last_synced_at":"2026-05-07T04:38:05.501Z","repository":{"id":267418475,"uuid":"900346685","full_name":"mikeleo03/MetaMaker","owner":"mikeleo03","description":"MetaMaker - A blockchain platform for collaborative game creation, governance, and ownership","archived":false,"fork":false,"pushed_at":"2024-12-30T17:52:40.000Z","size":13228,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-30T04:26:58.371Z","etag":null,"topics":["blockchain","collaborative-development","ethereum","game","smart-contract","solana"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"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/mikeleo03.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}},"created_at":"2024-12-08T14:48:52.000Z","updated_at":"2024-12-30T17:52:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"4c25ed35-ba08-4800-92e4-1fbdbec8e110","html_url":"https://github.com/mikeleo03/MetaMaker","commit_stats":null,"previous_names":["mikeleo03/metamaker"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikeleo03%2FMetaMaker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikeleo03%2FMetaMaker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikeleo03%2FMetaMaker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikeleo03%2FMetaMaker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mikeleo03","download_url":"https://codeload.github.com/mikeleo03/MetaMaker/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246277350,"owners_count":20751548,"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":["blockchain","collaborative-development","ethereum","game","smart-contract","solana"],"created_at":"2024-12-11T01:16:17.293Z","updated_at":"2025-10-06T11:12:39.970Z","avatar_url":"https://github.com/mikeleo03.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cbr\u003e\n\u003cdiv align=\"center\"\u003e\n    \u003cdiv \u003e\n        \u003cimg height=\"100px\" src=\"./img/logo2.png\" alt=\"MetaMaker Logo\"/\u003e\n    \u003c/div\u003e\n    \u003cdiv\u003e\n            \u003ch3\u003e\u003cb\u003eMetaMaker\u003c/b\u003e\u003c/h3\u003e\n            \u003cp\u003e\u003ci\u003eA blockchain platform for collaborative game creation, governance, and ownership.\u003c/i\u003e\u003c/p\u003e\n    \u003c/div\u003e      \n\u003c/div\u003e\n\u003cbr\u003e\n\u003ch1 align=\"center\"\u003eMetaMaker\u003c/h1\u003e\n\n![MetaMaker](./img/banner.png)\n\nMetaMaker is a blockchain-based decentralized game development platform that allows players and developers to collaboratively create, govern, and own in-game assets and features. This platform would use blockchain to ensure transparent decision-making, reward contributions, and secure ownership of game elements.\n\n## 📝 Table of Contents\n- [General Information](#general-information)\n- [Tech Stacks and Platforms](#tech-stacks-and-platforms)\n- [High Level Design](#high-level-design)\n- [Pages and Features](#pages-and-features)\n- [How to Run](#how-to-run)\n- [Report and Demo](#report-and-demo)\n- [Assets](#assets)\n- [Contributors](#contributors)\n\n## 📢 General Information\n\n\u003cblockquote align='center'\u003e\n\u003ch3\u003eRefining Collaborative Application Development with Blockchain\u003c/h3\u003e\n\u003c/blockquote\u003e \n\nCollaborative application development has become increasingly accessible, particularly with the rise of open-source platforms. These platforms allow anyone to modify an application to meet specific needs. If a modification proves valuable to a broader user base, the original developers can integrate it into the official version of the open-source application.  \n\nHowever, this open-source model still faces several challenges:  \n1. **Selection Process**: Determining which modifications to include in the official codebase can be subjective and time-consuming.  \n2. **Component Tracking**: Ensuring transparency and traceability of open-source components in the codebase.  \n3. **Workflow Automation**: Accelerating integration processes to enhance efficiency.  \n\nTo address these challenges, we propose a **blockchain-based fully public development method**. This method enables anyone to suggest program modifications by submitting them to the blockchain as a linked file (e.g., Google Drive link). Public voting will evaluate these proposals, with the highest-voted modification automatically integrated into the main codebase after a defined voting period.  \n\nThis blockchain-powered system offers:  \n- Transparent decision-making through public voting.  \n- Automated integration of top-voted modifications.  \n- Enhanced traceability and accountability for submitted changes.  \n\nInitially, this method is designed for blockchain-based game development, aiming to revolutionize how games are collaboratively developed, governed, and owned by communities.\n\n## 👨🏻‍💻 Tech Stacks and Platforms\n\u003cdiv align=\"center\"\u003e\n\u003ca href=\"https://react.dev/\"\u003e\n\u003ckbd\u003e\n\u003cimg src=\"./img/logo/react.png\" height=\"60\" /\u003e\n\u003c/kbd\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://www.typescriptlang.org/\"\u003e\n\u003ckbd\u003e\n\u003cimg src=\"./img/logo/ts.png\" height=\"60\" /\u003e\n\u003c/kbd\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://tailwindcss.com/\"\u003e\n\u003ckbd\u003e\n\u003cimg src=\"./img/logo/tailwind.png\" height=\"60\" /\u003e\n\u003c/kbd\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://ui.shadcn.com/\"\u003e\n\u003ckbd\u003e\n\u003cimg src=\"./img/logo/ShadcnUI.png\" height=\"60\" /\u003e\n\u003c/kbd\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://expressjs.com/\"\u003e\n\u003ckbd\u003e\n\u003cimg src=\"./img/logo/express.png\" height=\"60\" /\u003e\n\u003c/kbd\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://nodejs.org/en\"\u003e\n\u003ckbd\u003e\n\u003cimg src=\"./img/logo/nodejs.png\" height=\"60\" /\u003e\n\u003c/kbd\u003e\n\u003c/a\u003e\n\n\u003ckbd\u003e\n\u003cimg src=\"./img/logo/drive.png\" height=\"60\" /\u003e\n\u003c/kbd\u003e\n\n\u003ckbd\u003e\n\u003cimg src=\"./img/logo/github.png\" height=\"60\" /\u003e\n\u003c/kbd\u003e\n\n\u003ckbd\u003e\n\u003cimg src=\"./img/logo/solana.png\" height=\"60\" /\u003e\n\u003c/kbd\u003e\n\n\u003ckbd\u003e\n\u003cimg src=\"./img/logo/ethereum.png\" height=\"60\" /\u003e\n\u003c/kbd\u003e\n\n\u003ckbd\u003e\n\u003cimg src=\"./img/logo/metamask.png\" height=\"60\" /\u003e\n\u003c/kbd\u003e\n\n\u003ckbd\u003e\n\u003cimg src=\"./img/logo/ganache.png\" height=\"60\" /\u003e\n\u003c/kbd\u003e\n\n\u003ckbd\u003e\n\u003cimg src=\"./img/logo/oracle.png\" height=\"60\" /\u003e\n\u003c/kbd\u003e\n\n\u003c/div\u003e\n\u003cdiv align=\"center\"\u003e\n\u003ch4\u003eReact | Typescript  | TailwindCSS | ShadcnUI | Express | NodeJS | Google Drive API | Github API | Solana | Ethereum | MetaMask | Ganache | Oracle\u003c/h4\u003e\n\u003c/div\u003e\n\u003cbr\u003e\n\n## 🏗️ High Level Design\n![MetaMaker](./img/systemArch.png)\n\nMetaMaker's system consists of three main components: **Frontend (FE)**, **Backend/Oracle**, and **Smart Contract (SC)**.  \n\n1. **Frontend (FE)**:  \n   - Users can connect their wallets directly without involving the Backend.  \n   - Users can view asset data by requesting information from the Backend, which retrieves it from the Smart Contract.  \n   - To vote, users submit their votes via the Frontend, which sends them to the Smart Contract through the Backend/Oracle.  \n   - After the voting period ends, the Frontend calls the Backend to execute the *declare winner* function on the Smart Contract and displays the results.  \n\n2. **Backend/Oracle**:  \n   - Acts as a bridge between external sources (e.g., Google Drive) and the Smart Contract.  \n   - For asset submissions, the Backend uploads temporary files to Google Drive and stores the file link on the blockchain via the Smart Contract.  \n   - The Backend also forwards user votes to the Smart Contract, retrieves voting results, and uploads the winning asset to a GitHub repository.  \n\n3. **Smart Contract (SC)**:  \n   - Stores asset data and voting results.  \n   - Provides functions to view assets, cast votes, and declare the winner (*declare winner*).  \n   - Serves as the central logic layer for interactions with the Frontend and Backend.  \n\nThis architecture ensures a transparent, secure, and decentralized workflow from asset submission to winner declaration.\n\n## ⭐ Pages and Features\nHere's MetaMaker's features and its interface.\n\u003ctable style=\"width:100%; text-align:center;\"\u003e\n    \u003ccol width=\"49%\"\u003e\n    \u003ccol width=\"49%\"\u003e\n    \u003ctr\u003e\n        \u003ctd width=\"1%\" align=\"center\"\u003e\u003cimg src=\"./img/features/home.png\"/\u003e\u003c/td\u003e\n        \u003ctd width=\"1%\" align=\"center\"\u003e\u003cimg src=\"./img/features/about.png\"/\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd width=\"1%\" align=\"center\"\u003eHome\u003c/td\u003e\n        \u003ctd width=\"1%\" align=\"center\"\u003eAbout\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd width=\"1%\" align=\"center\"\u003e\u003cimg src=\"./img/features/propose1.png\"/\u003e\u003c/td\u003e\n        \u003ctd width=\"1%\" align=\"center\"\u003e\u003cimg src=\"./img/features/propose2.png\"/\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd width=\"1%\" align=\"center\"\u003eProposing Game Asset (1)\u003c/td\u003e\n        \u003ctd width=\"1%\" align=\"center\"\u003eProposing Game Asset (2)\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd width=\"1%\" align=\"center\"\u003e\u003cimg src=\"./img/features/vote1.png\"/\u003e\u003c/td\u003e\n        \u003ctd width=\"1%\" align=\"center\"\u003e\u003cimg src=\"./img/features/announce.png\"/\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd width=\"1%\" align=\"center\"\u003eVote Asset\u003c/td\u003e\n        \u003ctd width=\"1%\" align=\"center\"\u003eWinner Announcement\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd width=\"1%\" align=\"center\"\u003e\u003cimg src=\"./img/features/state.png\"/\u003e\u003c/td\u003e\n        \u003ctd width=\"1%\" align=\"center\"\u003e\u003cimg src=\"./img/features/decoration.png\"/\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd width=\"1%\" align=\"center\"\u003ePatch State Management\u003c/td\u003e\n        \u003ctd width=\"1%\" align=\"center\"\u003eSome Decoration :D\u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n\n## ⚙️ How to Run\n### General Project\n1. **Clone the repository** from the terminal using the following command:\n    ```bash\n    $ git clone https://github.com/mikeleo03/MetaMaker.git\n    ```\n2. **Go to the each directory** one by one (frontend, backend, dApp), by using this command:\n    ```bash\n    $ cd \u003cdir\u003e\n    ```\n    Using 3 different terminals is recommended.\n\n### Frontend Project\n1. **Install all the required dependencies** using this following command in the project frontend directory\n   ```bash\n   $ npm install\n   ```\n2. **Run the frontend** using this following command\n   ```bash\n   $ npm run dev\n   ```\n3. The MetaMaker frontend should now be running. You can check the server by opening [http://localhost:3000](http://localhost:3000) in your web browser.\n\n### Backend Project\n1. **Install all the required dependencies** using this following command in the project backend directory\n   ```bash\n   $ npm install\n   ```\n2. **Create a `.env` file** inside the repository directory using the `env.example` file as the template.\n3. **Run the server** using the following command. Make sure you have Docker Desktop installed on your device:\n    ```bash\n    $ npm run dev\n    ```\n4. The MetaMaker backend server should now be running. You can check the server by opening [http://localhost:5000](http://localhost:5000) in your web browser.\n\n### dApp Project\n1. Ensure that Ganache is installed on your device. For more information, visit [this link](https://archive.trufflesuite.com/ganache/).\n2. **Build the smart contract** using this following command\n   ```bash\n   $ truffle build\n   ```\n3. **Deploy the smart contract on private chain** using this following command\n   ```bash\n   $ truffle deploy\n   ```\n3. Finally, do migration using this command\n   ```bash\n   $ migrate\n   ```\n4. The MetaMaker dApp should now be running on [http://127.0.0.1:7545](http://127.0.0.1:7545).\n\n## 📌 Report and Demo\nAccess the **Project Report**:  [Project Report Link](/docs/Project%20Report%20Blockchain%20-%20MetaMaker.pdf)\n\nWatch the **Video Demo**: [Video Demo Link](https://youtu.be/aDZGzmtYYbQ)\n\n## 📂 Assets\nAccess the MetaMaker **Google Drive Assets**: [View Google Drive Assets](https://drive.google.com/drive/folders/1YkGAarrMd2N2Mq3jw0PHrRc9eqUql9Fj)\n\nExplore the **GitHub Repository Assets**: [View GitHub Repository](https://github.com/Salomo309/Game-Assets)\n\n## 👏 Contributors\n|SID|Contributor|\n| :---: | --- |\n| 13521063 | Salomo Reinhart Gregory Manalu  |\n| 13521108 | Michael Leon Putra Widhi  |\n| 13521172 | Nathan Tenka |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmikeleo03%2Fmetamaker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmikeleo03%2Fmetamaker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmikeleo03%2Fmetamaker/lists"}