How to deploy website from dev to staging from localhost to remote server using composer
There is a course on CraftQuest regarding deployment of Craft CMS you might want to check out: https://craftquest.io/courses/deploying-craft-cms-3

For my personal workflow, I develop locally then push my codebase to Github. Since my servers are built using Laravel Forge, I have it set up to deploy my code to my server, which can be an AWS server, Digital Ocean, or any number of places. 

For some sites, I use a more robust deployment service. I've used both Envoyer.io and Deploybot to do that. I wrote a post on the Deploybot set up I used. You can find that post here: https://supergeekery.com/blog/laravel-forge-and-deploy-bot