{"id":14965792,"url":"https://github.com/web3batman/rune-airdrop-backend","last_synced_at":"2026-02-17T12:03:38.826Z","repository":{"id":247881696,"uuid":"801127264","full_name":"web3batman/rune-airdrop-backend","owner":"web3batman","description":"Rune Airdrop Backend (This 📦 repository contains the backend 🧩 services for the 🏅 Rune Airdrop 🎁 project, featuring a Swagger UI 📚  for API 🛠️ documentation 📄 and 🧪 testing)","archived":false,"fork":false,"pushed_at":"2024-09-18T14:58:09.000Z","size":140,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-09T23:09:07.160Z","etag":null,"topics":["airdrop","backend","bitcoin","bitcoinjs","express","mongodb","mongoose","rune","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/web3batman.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}},"created_at":"2024-05-15T16:38:37.000Z","updated_at":"2025-01-23T15:17:32.000Z","dependencies_parsed_at":"2025-02-10T15:42:59.548Z","dependency_job_id":null,"html_url":"https://github.com/web3batman/rune-airdrop-backend","commit_stats":null,"previous_names":["web3batman/rune-airdrop-backend"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/web3batman/rune-airdrop-backend","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/web3batman%2Frune-airdrop-backend","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/web3batman%2Frune-airdrop-backend/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/web3batman%2Frune-airdrop-backend/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/web3batman%2Frune-airdrop-backend/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/web3batman","download_url":"https://codeload.github.com/web3batman/rune-airdrop-backend/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/web3batman%2Frune-airdrop-backend/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29543378,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-17T08:11:05.436Z","status":"ssl_error","status_checked_at":"2026-02-17T08:09:38.860Z","response_time":100,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["airdrop","backend","bitcoin","bitcoinjs","express","mongodb","mongoose","rune","typescript"],"created_at":"2024-09-24T13:35:18.250Z","updated_at":"2026-02-17T12:03:38.807Z","avatar_url":"https://github.com/web3batman.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"---\n\n# Mystic Runestone Airdrop Tool Backend\n\n## Overview\n\nThe Runestone Airdrop Backend is a server application that facilitates the airdrop of Runestone tokens. The backend is developed using Node.js and Express.js and includes API endpoints for various functionalities such as redeeming fees, estimating transaction fees, and managing different amounts for airdrops. The project also integrates Swagger UI for API documentation.\n\n## Project Structure\n\n```\nroot/\n├── config/\n│   └── config.ts\n├── routes\n│   └── AirdropRoute\n│        ├── different-amount.route.ts\n│        ├── large-different-amount.route.ts\n│        ├── large-different-amount-airdrop.route.ts\n│        ├── same-amount.route.ts\n│   └── EstimateRoute\n│        ├── different-amount-estimate.route.ts\n│        ├── same-amount-estimate.route.ts\n│   └── SubRoute\n│        └── runestone-fee.route.ts\n├── service/\n│   └── psbt/\n│       ├── CreateAirdropRunestonePsbt.ts\n│       ├── redeemRunestoneAmountRunestone.ts\n│       ├── redeemRunestoneSameAmount.ts\n│       ├── RuneOne.ts\n│       ├── RuneSub.ts\n│       └── SameAmountEstimate.ts\n├── test/\n│   ├── CreateTest.ts\n│   ├── freeTierAirdrop.ts\n│   ├── matchTests.ts\n│   └── MWtests.ts\n├── utils/\n│   ├── blockcypher.api.ts\n│   ├── mempool.api.ts\n│   ├── TS\n│   │   ├── mw.ts\n│   │   └── TsUtils.ts\n│   └── unisat.api.ts\n├── .env.example\n├── package.json\n├── README.md\n├── swagger.yaml\n├── tsconfig.json\n└── yarn.lock\nenv\n```\n\n## Installation\n\n1. Clone the repository:\n\n   ```\n   git clone git clone https://github.com/leionion/rune-airdrop-backend.git\n   cd rune-airdrop-backend\n   ```\n\n2. Install dependencies:\n\n   ```\n   yarn install\n   ```\n\n3. Create a `.env` file:\n\n   ```\n   cp .env.example .env\n   ```\n\n4. Configure the environment variables in `.env` file:\n   ```\n   PORT=your-port\n   ```\n\n## Usage\n\n1. Start the server:\n\n   ```\n   yarn dev\n   ```\n\n2. The server should be running on the specified port. You can visit `http://localhost:[PORT]` to check if the server is up and running.\n\n3. Access the API documentation via Swagger UI at `http://localhost:[PORT]/api-docs`.\n\n## API Endpoints\n\nHere are some key API endpoints provided by the backend:\n\n- **GET /**: Check if the backend server is running.\n- **POST /api/redeem-fee**: Redeem Runestone fees.\n- **POST /api/same-amount**: Handle airdrops with the same amount.\n- **POST /api/different-amount**: Handle airdrops with different amounts.\n- **POST /api/large-different-amount**: Handle large different amount airdrops.\n- **POST /api/large-different-amount-airdrop**: Handle large airdrop transactions with different amounts.\n- **POST /api/estimate/same-amount**: Estimate transaction fee for same amount airdrop.\n- **POST /api/estimate/different-amount**: Estimate transaction fee for different amount airdrop.\n\n## Middleware\n\n- **CORS**: Cross-Origin Resource Sharing is enabled using the `cors` package.\n- **Body-Parser**: JSON and URL-encoded data parsing with `body-parser` and `express.json`.\n\n## Swagger\n\nSwagger UI is integrated to provide interactive API documentation. The `swagger.yaml` file is required to configure API documentation, which can be accessed at `/api-docs`.\n\n## Mutex\n\nMutex from `async-mutex` is used for API rate limit protection functionality.\n\n## Global Variables\n\n- `app.locals.walletIndex`: Global iterator for wallet management.\n- `app.locals.iterator`: Global iterator for unisat API distribution.\n\n## Swagger Usage\n\n### Base URL\n\nThe base URL for the API is:\n\n- Development: `http://localhost:5000/api`\n- Production: `https://rune-airdrop-backend.onrender.com/api`\n\n### Endpoints\n\n#### Different Amount Rune Airdrop\n\n- **Description:** Transfer different amounts of Rune tokens to different addresses\n- **Endpoint:** `/different-amount`\n- **HTTP Method:** POST\n\n#### Large Different Amount Rune Airdrop\n\n- **Description:** Transfer different amounts of Rune tokens to different addresses (for a large number of addresses)\n- **Endpoint:** `/large-different-amount`\n- **HTTP Method:** POST\n\n#### Large Different Amount Rune Airdrop (Execute)\n\n- **Description:** Execute the large different amount Rune Airdrop with a pre-generated transaction ID\n- **Endpoint:** `/large-different-amount-airdrop`\n- **HTTP Method:** POST\n\n#### Same Amount Rune Airdrop\n\n- **Description:** Transfer the same amount of Rune tokens to different addresses\n- **Endpoint:** `/same-amount`\n- **HTTP Method:** POST\n\n#### Calculate Runestone Transaction Fee\n\n- **Description:** Calculate the fee for a runestone transaction\n- **Endpoint:** `/runestone-fee`\n- **HTTP Method:** GET\n\n#### Estimate Different Amount Rune Airdrop\n\n- **Description:** Estimate the different amount Rune Airdrop\n- **Endpoint:** `/estimate/different-amount`\n- **HTTP Method:** POST\n\n#### Estimate Same Amount Rune Airdrop\n\n- **Description:** Estimate the same amount Rune Airdrop\n- **Endpoint:** `/estimate/same-amount`\n- **HTTP Method:** POST\n\n### Error Handling\n\nIn case of errors, the API responds with appropriate HTTP status codes along with error messages in the response body.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fweb3batman%2Frune-airdrop-backend","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fweb3batman%2Frune-airdrop-backend","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fweb3batman%2Frune-airdrop-backend/lists"}