docs.h.overview
A launch page wired to a single contract that is both your ERC-20 and the presale. Contributors send the native coin at a fixed, transparent rate; on success the supply is minted and distributed — with automatic refunds if the soft cap isn't met.
Token Presale ships a polished, fully responsive launch page — countdown, live raised/hard-cap progress bound to on-chain state, tokenomics, and an FAQ — plus one Solidity contract that is both the ERC-20 and the presale: soft/hard caps, per-wallet limit, deadline, fixed-rate distribution and refunds.
When the project isn't configured yet, the app boots into a setup wizard that collects your token name, supply, presale share, caps and dates, deploys the contract straight from your browser wallet, auto-verifies it on Etherscan (one API key, any chain), and prints the exact .env to ship.
Nothing is minted until the sale succeeds: after the deadline, finalizing mints the supply and distributes the presale allocation to contributors at a fixed rate (allocation ÷ hard cap); the remainder goes to your wallet. If the soft cap was missed, no token is created and everyone refunds. Every label, cap, date and link is an env var, so the same codebase rebrands in minutes.
docs.h.included
- Next.js app (App Router, TypeScript, Tailwind)
- Presale.sol (ERC-20 + presale in one) + Hardhat project & deploy scripts
- Setup wizard: in-browser deploy + Etherscan auto-verify
- Dockerfile + docker-compose for a one-command run
- .env.example, generated-env workflow and a README
docs.h.contracts
- Presale.sol — your ERC-20 and its presale in one verifiable contract. It mints nothing at deploy. On a successful finalize (deadline passed and soft cap met) it mints the full supply, distributes the presale share to contributors at a fixed rate (allocation ÷ hard cap), and sends the rest to your wallet. If the soft cap is missed, no token is created and every contributor can refund. Enforces soft/hard caps and a per-wallet limit (OpenZeppelin ERC20 + Ownable + ReentrancyGuard).
docs.h.stack
docs.stackLine
docs.chainsLine
docs.h.quickstart
docs.quickstartP
unzip token-presale.zip && cd token-presale
npm install
npm run devdocs.quickstartUrl
docs.h.configure
docs.configureP
- docs.wizard.1
- docs.wizard.2
- docs.wizard.3
- docs.wizard.4
- docs.wizard.5
docs.configureP2
docs.h.customize
docs.h.branding
docs.brandingP
docs.brandingP2
docs.h.languages
docs.languagesP
docs.h.editing
docs.editingP
docs.h.configRef
docs.configRefP
- docs.configRef.1
- docs.configRef.2
docs.h.deployContracts
docs.deployContractsP
# compile + copy artifacts the app/wizard use
npm run compile
# deploy to the network in your .env (RPC_URL + DEPLOYER_PRIVATE_KEY)
npm run deploydocs.deployContractsP2
docs.h.deployApp
docs.h.vercel
- docs.vercel.1
- docs.vercel.2
- docs.vercel.3
docs.h.docker
docs.dockerP
# build + run; with no .env it opens the setup wizard
docker compose up --build
# once you have a .env, pass it in:
docker run --env-file .env -p 3001:3000 token-presaledocs.dockerP2
docs.h.vps
docs.vpsP
npm install
npm run build
npm run start # serves the production builddocs.h.checklist
- docs.checklist.1
- docs.checklist.2
- docs.checklist.3
- docs.checklist.4
- docs.checklist.5
docs.h.support
docs.supportP