This is a simple React app that can take any contract address + JSON ABI and output a form with all of the read and write functions. Then, you can connect MetaMask and use any of the forms to interact with the contract.
The interface is very simple so that you can take it and use it in your projects.