If you are thinking about creating a fungible token (ERC20, ERC777), you may want to consider the following points:
- What is the purpose of the token?
- Why would someone need to use the token?
- Could the solution operate without a token?
- Could the solution operate using either the native currency of the blockchain (Ether) or an existing stable token instead of the token?
- Could the solution be cloned and have the token removed, yet still operate (without the token)?
If you plan for your token to potentially have value, your solution should have appropriate testing and auditing:
I would look at developing, testing and deploying your smart contracts using tools such as OpenZeppelin, Truffle, Buidler.
Regards testing, https://docs.openzeppelin.com/learn/writing-automated-tests and Test smart contracts like a rockstar are great places to start.
Prior to an audit, I recommend going through the OpenZeppelin checklist before an audit.
To organize an audit, you would need to engage a third party auditor such as OpenZeppelin, see openzeppelin.com/security-audits for details.
If you have access control for minting, pausing, upgrades you should design your governance behind when and how these functions can be used and communicate this to your potential token users.
I suggest seeking appropriate advice on regulatory compliance.
You also should design your tokenomics of your token.
For ERC777 you also need to handle reentrancy, see Reentrancy After Istanbul
This is a wiki post, please edit/update