diff --git a/.github/Contributor_Guide/Contributing.md b/.github/Contributor_Guide/Contributing.md index 6d6ee92..883f216 100644 --- a/.github/Contributor_Guide/Contributing.md +++ b/.github/Contributor_Guide/Contributing.md @@ -31,34 +31,7 @@ If you want to contribute to smartbid, submit a pull request. - url: `https://github.com/OPCODE-Open-Spring-Fest/smartbid/compare/branch...YOURGITHUBUSERNAME:smartbid:BRANCH?quick_pull=1&template=pr.md` ### Requirements - To run *smartbid*, you need the following requirements: - -- [Node.js](https://nodejs.org/) ### Setup -To set up *smartbid* on your local machine, follow these steps: - -## Installation Steps - -1. Fork the repository: - - Click the "Fork" button at the top right corner of this repository's page on GitHub. This will create a copy of the repository in your GitHub account. - -2. Clone the forked repository: - -```bash -git clone https://github.com//smartbid.git -``` - - -3. Navigate to the project directory: -```bash -cd smartbid -``` - -4. Install Node.js dependencies: -```bash -npm i -``` -Congratulations! You have successfully set up *smartbid* on your machine. \ No newline at end of file diff --git a/.github/Contributor_Guide/Project_Tour.md b/.github/Contributor_Guide/Project_Tour.md index 5bb4480..47f86b8 100644 --- a/.github/Contributor_Guide/Project_Tour.md +++ b/.github/Contributor_Guide/Project_Tour.md @@ -1,36 +1,40 @@ # Project Tour -In the 'Contracts' folder, you'll find a single file with a '.sol' extension. This file is where you should make all your changes. Simply open this file to access the contract code and update it as needed. If you have any questions or need assistance with the changes, feel free to ask!. -```bash -| .gitignore -| CODE_OF_CONDUCT.md -| commitlint.config.js -| package-lock.json -| package.json -| README.md -| -+---.github -| +---Contributor_Guide -| | commiting.md -| | Contributing.md -| | Project_Tour.md -| | -| +---ISSUE_TEMPLATE -| | bug_report.yaml -| | feature_request.yaml -| | -| +---PULL_REQUEST_TEMPLATE -| | pr.md -| | -| \---workflows -| commitlint.yaml -| prmerged.yaml -| -+---.husky -| commit-msg -| pre-commit -| -\---contracts - smartbid.sol -``` \ No newline at end of file +In the 'Contracts' folder, you'll find a single file with a '.sol' extension. This file is where you should make all your changes. Simply open this file to access the contract code and update it as needed. If you have any questions or need assistance with the changes, feel free to ask! + + +│ .gitignore +│ CODE_OF_CONDUCT.md +│ commitlint.config.js +│ package-lock.json +│ package.json +│ README.md +│ +├───.github +│ │ pull_request_template.md +│ │ +│ ├───Contributor_Guide +│ │ commiting.md +│ │ Contributing.md +│ │ Project_Tour.md +│ │ +│ ├───ISSUE_TEMPLATE +│ │ bug_report.yaml +│ │ feature_request.yaml +│ │ +│ ├───PULL_REQUEST_TEMPLATE +│ │ pr.md +│ │ +│ └───workflows +│ checklabels.yaml +│ commitlint.yaml +│ label-checker.js +│ prmerged.yaml +│ +├───.husky +│ commit-msg +│ pre-commit +│ +└───contracts + smartbid.sol \ No newline at end of file diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..655c7ff --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,19 @@ + +## Description + +> Give a brief description of the pull request. + +## Semver Changes + +- [ ] Patch (bug fix, no new features) +- [ ] Minor (new features, no breaking changes) +- [ ] Major (breaking changes) + +## Issues + +> List any issues that this pull request closes. + +## Checklist + +- [ ] I have read the [Contributing Guidelines](../Contributor_Guide/Contruting.md). + diff --git a/.github/workflows/checklabels.yaml b/.github/workflows/checklabels.yaml new file mode 100644 index 0000000..1b752ff --- /dev/null +++ b/.github/workflows/checklabels.yaml @@ -0,0 +1,21 @@ +name: Label Checker + +on: + pull_request: + types: [opened, edited, synchronize, reopened, labeled, unlabeled] + +jobs: + check-labels: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Set up Node.js + uses: actions/setup-node@v3 + with: + node-version: 16 + - name: Install dependencies + run: npm install @actions/github @actions/core + - name: Run Label Checker + run: node .github/workflows/label-checker.js + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/label-checker.js b/.github/workflows/label-checker.js new file mode 100644 index 0000000..aae7358 --- /dev/null +++ b/.github/workflows/label-checker.js @@ -0,0 +1,42 @@ +import { getOctokit, context } from '@actions/github'; +import { setFailed } from '@actions/core'; + +async function run() { + try { + const token = process.env.GITHUB_TOKEN; + const octokit = new getOctokit(token); + + const pullRequest = context.payload.pull_request; + const owner = pullRequest.base.repo.owner.login; + const repo = pullRequest.base.repo.name; + const pullNumber = pullRequest.number; + + const { data: labels } = await octokit.rest.issues.listLabelsOnIssue({ + owner, + repo, + issue_number: pullNumber, + }); + + const labelNames = labels.map((label) => label.name); + + const requiredLabels = [ + ['Type:Easy', 'Type:Medium', 'Type:Hard'], + ['Semver:major', 'Semver:minor', 'Semver:patch'], + ['PR:Accept'], + ]; + + const hasRequiredLabels = requiredLabels.every((labelGroup) => + labelGroup.some((label) => labelNames.includes(label)) + ); + + if (!hasRequiredLabels) { + setFailed( + 'This pull request must have at least one label from each of the following groups: Type (Easy, Medium, Hard), Semver (Major, Minor, Patch), and PR:Accept.' + ); + } + } catch (error) { + setFailed(error.message); + } +} + +run(); \ No newline at end of file diff --git a/.github/workflows/prmerged.yaml b/.github/workflows/prmerged.yaml index 608b1f4..319c68d 100644 --- a/.github/workflows/prmerged.yaml +++ b/.github/workflows/prmerged.yaml @@ -15,14 +15,18 @@ jobs: env: PULL_REQUEST_OWNER: ${{ github.event.pull_request.user.login }} PULL_REQUEST_LABELS: ${{ join(github.event.pull_request.labels.*.name, ', ') }} + REPOSITORY_NAME: ${{ github.event.repository.name }} + REPOSITORY_URL: ${{ github.event.repository.html_url }} run: | echo "::set-output name=owner::$PULL_REQUEST_OWNER" echo "::set-output name=labels::$PULL_REQUEST_LABELS" + echo "::set-output name=repo_name::$REPOSITORY_NAME" + echo "::set-output name=repo_url::$REPOSITORY_URL" - name: Send Data to API env: API_URL: https://osf-api.onrender.com/api/prmerged API_AUTH_TOKEN: ${{ secrets.API_AUTH_TOKEN }} run: | - payload=$(echo '{"owner":"${{ steps.get-pr-data.outputs.owner }}","labels":"${{ steps.get-pr-data.outputs.labels }}"}' | jq -R -s .) + payload=$(echo '{"owner":"${{ steps.get-pr-data.outputs.owner }}","labels":"${{ steps.get-pr-data.outputs.labels }}","repository_name":"${{ steps.get-pr-data.outputs.repo_name }}","repository_url":"${{ steps.get-pr-data.outputs.repo_url }}"}') curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $API_AUTH_TOKEN" -d "$payload" "$API_URL" diff --git a/README.md b/README.md index 8db6ef4..f3d20aa 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,46 @@ -# About The Project +# SMART BID + +## Introduction ✨ "SmartBid" is blockchain based auction like system that offers enhanced transparency, security, and efficiency compared to traditional methods. In a blockchain-based auction, each item or asset up for bidding is represented as a unique digital token on the blockchain. Participants in the auction can place bids and view the entire bid history in real-time, ensuring transparency and trust in the process. -Blockchain's immutable ledger ensures that once a bid is recorded, it cannot be altered or deleted, preventing fraud and manipulation. Smart contracts, self-executing agreements stored on the blockchain, govern the auction rules and automatically execute transactions once predefined conditions are met, such as the end of the bidding period or reaching a winning bid. +## Technologies Used 🧑‍💻 + +- Solidity + +## Contact 📱 + +If you have any questions or feedback, please reach out to us at somesh.2201019cs@iiitbh.ac.in 📧 + +### Setup + +To set up **Smart Bid** on your local machine, follow these steps: + +1. Fork the repository: + + - Click the "Fork" button at the top right corner of this repository's page on GitHub. This will create a copy of the repository in your GitHub account. + +2. Clone the forked repository: + +```bash +git clone https://github.com//ballot_block.git +``` + +3. Navigate to the project directory: + +```bash +cd smartbid +``` -The decentralized nature of blockchain technology eliminates the need for intermediaries like auction houses or brokers, reducing costs and increasing accessibility to a global audience. Additionally, blockchain-based auctions enable instant settlement of transactions, removing the delays associated with traditional payment processing methods. +4. Install Node.js dependencies(make sure node is installed on your laptop): -Furthermore, blockchain technology allows for the tokenization of assets, enabling fractional ownership and the ability to trade assets seamlessly. This opens up new possibilities for auctions of high-value assets, such as real estate or artwork, by allowing investors to purchase fractions of these assets, making them more accessible to a broader range of participants. +```bash +npm i +``` +5. Open the contract folder and copy all the contents of the ballot_block.sol file and paste it on remix (or you can use VS Code but remix ide is recommended). Remix ide(link) : http://lnkiy.in/Remix_ide +6. Create a new branch for your feature or bug fix. +7. Make your changes and commit them. +8. Push to the branch. +9. Submit a pull request with the issue number. -Overall, blockchain-based auctions revolutionize the auction industry by providing a transparent, secure, and efficient platform for buying and selling assets, ultimately benefiting both sellers and buyers alike. +You are good to go to make your contribution!! All the best!. \ No newline at end of file