How can a user interact with the contract? Is typing the command
cleos push action the only option?
Like Patrick said you need to build a front end to communicate with smart contracts on the eosio blockchain. Here a couple of library's to get you started. I have seen a few others as well. Just search eosio on github and look around, there is always new libraries and boilerplates popping up. https://github.com/EOSIO/demux-js https://github.com/EOSIO/eosjs