{"id":25281938,"url":"https://github.com/pnstack/template-solidity","last_synced_at":"2026-05-05T12:31:49.918Z","repository":{"id":196701055,"uuid":"696907981","full_name":"pnstack/template-solidity","owner":"pnstack","description":"Template soldity project ❤️ hardhat","archived":false,"fork":false,"pushed_at":"2026-01-30T16:10:54.000Z","size":1630,"stargazers_count":0,"open_issues_count":25,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-01-31T09:37:19.362Z","etag":null,"topics":["ethereum","hardhat","solidity","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/pnstack.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["nvp2k1"]}},"created_at":"2023-09-26T16:56:52.000Z","updated_at":"2025-08-29T15:47:32.000Z","dependencies_parsed_at":null,"dependency_job_id":"d7d1b71b-879c-49d5-8f19-b67b371a2988","html_url":"https://github.com/pnstack/template-solidity","commit_stats":null,"previous_names":["pnstack/template-solidity"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pnstack/template-solidity","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pnstack%2Ftemplate-solidity","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pnstack%2Ftemplate-solidity/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pnstack%2Ftemplate-solidity/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pnstack%2Ftemplate-solidity/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pnstack","download_url":"https://codeload.github.com/pnstack/template-solidity/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pnstack%2Ftemplate-solidity/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32649525,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-05T11:29:49.557Z","status":"ssl_error","status_checked_at":"2026-05-05T11:29:48.587Z","response_time":54,"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":["ethereum","hardhat","solidity","typescript"],"created_at":"2025-02-12T19:08:57.590Z","updated_at":"2026-05-05T12:31:49.908Z","avatar_url":"https://github.com/pnstack.png","language":"TypeScript","funding_links":["https://github.com/sponsors/nvp2k1"],"categories":[],"sub_categories":[],"readme":"# Template Solidity Project\n\n[![CI/CD](https://github.com/pnstack/template-solidity/actions/workflows/ci.yml/badge.svg)](https://github.com/pnstack/template-solidity/actions/workflows/ci.yml)\n[![Deploy](https://github.com/pnstack/template-solidity/actions/workflows/deploy.yml/badge.svg)](https://github.com/pnstack/template-solidity/actions/workflows/deploy.yml)\n[![codecov](https://codecov.io/gh/pnstack/template-solidity/branch/master/graph/badge.svg)](https://codecov.io/gh/pnstack/template-solidity)\n[![npm version](https://badge.fury.io/js/template-solidity.svg)](https://badge.fury.io/js/template-solidity)\n\nThis project demonstrates an advanced Hardhat use case, integrating other tools commonly used alongside Hardhat in the ecosystem.\n\nThe project comes with a sample contract, a test for that contract, a sample script that deploys that contract, and an example of a task implementation, which simply lists the available accounts. It also comes with a variety of other tools, preconfigured to work with the project code.\n\n## Features\n\n- 🔧 **Hardhat** - Ethereum development environment\n- 📝 **TypeScript** - Type safety and modern JavaScript features\n- 🧪 **Testing** - Comprehensive test suite with coverage reporting\n- 🎨 **Code Quality** - ESLint, Prettier, and Solhint for consistent code style\n- 🔒 **Security** - Slither integration for security analysis\n- 🚀 **CI/CD** - GitHub Actions for automated testing and deployment\n- 📦 **Multi-format builds** - CommonJS and ESM module support\n- 🌐 **Multi-network** - Support for local, testnet, and mainnet deployments\n\n## Quick Start\n\n```bash\n# Install dependencies\nnpm install\n\n# Compile contracts\nnpm run compile\n\n# Run tests\nnpm test\n\n# Run linting\nnpm run lint\nnpm run lint:sol\n\n# Deploy locally\nnpm run start-local  # In one terminal\nnpm run deploy:local # In another terminal\n```\n\n## Available Scripts\n\nTry running some of the following tasks:\n\n```shell\nnpx hardhat accounts\nnpx hardhat compile\nnpx hardhat clean\nnpx hardhat test\nnpx hardhat node\nnpx hardhat help\nREPORT_GAS=true npx hardhat test\nnpx hardhat coverage\nnpx hardhat run scripts/deploy.ts\nTS_NODE_FILES=true npx ts-node scripts/deploy.ts\nnpx eslint '**/*.{js,ts}'\nnpx eslint '**/*.{js,ts}' --fix\nnpx prettier '**/*.{json,sol,md}' --check\nnpx prettier '**/*.{json,sol,md}' --write\nnpx solhint 'contracts/**/*.sol'\nnpx solhint 'contracts/**/*.sol' --fix\n```\n\n# Etherscan verification\n\nTo try out Etherscan verification, you first need to deploy a contract to an Ethereum network that's supported by Etherscan, such as Ropsten.\n\nIn this project, copy the .env.example file to a file named .env, and then edit it to fill in the details. Enter your Etherscan API key, your Ropsten node URL (eg from Alchemy), and the private key of the account which will send the deployment transaction. With a valid .env file in place, first deploy your contract:\n\n```shell\nhardhat run --network ropsten scripts/deploy.ts\n```\n\nThen, copy the deployment address and paste it in to replace `DEPLOYED_CONTRACT_ADDRESS` in this command:\n\n```shell\nnpx hardhat verify --network ropsten DEPLOYED_CONTRACT_ADDRESS \"Hello, Hardhat!\"\n```\n\n# Performance optimizations\n\nFor faster runs of your tests and scripts, consider skipping ts-node's type checking by setting the environment variable `TS_NODE_TRANSPILE_ONLY` to `1` in hardhat's environment. For more details see [the documentation](https://hardhat.org/guides/typescript.html#performance-optimizations).\n\n## CI/CD Pipeline\n\nThis project includes a comprehensive CI/CD pipeline using GitHub Actions:\n\n### Continuous Integration (CI)\n\nThe CI pipeline runs on every push and pull request to `main`, `master`, and `develop` branches:\n\n1. **Code Quality \u0026 Linting** - ESLint for TypeScript, Solhint for Solidity, Prettier for formatting\n2. **Contract Compilation** - Compiles Solidity contracts and generates TypeScript bindings\n3. **Testing** - Runs test suite on Node.js 18 and 20 with coverage reporting\n4. **Package Build** - Builds TypeScript artifacts for distribution\n5. **Security Audit** - npm audit and Slither security analysis\n\n### Continuous Deployment (CD)\n\nThe CD pipeline handles automated deployments:\n\n- **Testnet Deployment** - Automatically deploys to Sepolia testnet on pushes to main/master\n- **NPM Publishing** - Publishes package to NPM on version tags (v*)\n- **Mainnet Deployment** - Deploys to mainnet on GitHub releases (manual approval required)\n\n### Required Secrets\n\nFor deployment workflows, configure these secrets in your GitHub repository:\n\n```bash\n# For testnet deployment\nSEPOLIA_URL=https://sepolia.infura.io/v3/YOUR_PROJECT_ID\nSEPOLIA_PRIVATE_KEY=0x...\n\n# For mainnet deployment\nMAINNET_URL=https://mainnet.infura.io/v3/YOUR_PROJECT_ID\nMAINNET_PRIVATE_KEY=0x...\n\n# For contract verification\nETHERSCAN_API_KEY=YOUR_ETHERSCAN_API_KEY\n\n# For NPM publishing\nNPM_TOKEN=npm_token_here\n```\n\n### Status Badges\n\nThe README includes status badges for:\n- CI/CD pipeline status\n- Deployment status\n- Code coverage (Codecov)\n- NPM package version\n\n### Local Development\n\n```bash\n# Run all quality checks locally (like CI)\nnpm run lint \u0026\u0026 npm run lint:sol \u0026\u0026 npm run compile \u0026\u0026 npm test\n\n# Format code\nnpx prettier '**/*.{json,sol,md,ts,js}' --write\n\n# Generate coverage report\nnpm run coverage\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpnstack%2Ftemplate-solidity","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpnstack%2Ftemplate-solidity","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpnstack%2Ftemplate-solidity/lists"}