You can deploy all the files from git. Except for .cache, build, node_modules folders.
I would recommend to use yarn. Since it’s much faster.
On the first run you create the admin user. Or, you can take a look at my custom plugin which creates the user for you. You can provide the admin credentials through ENV variables.
For example, .env:
DEV_ADMIN_USERNAME=yourAdminUsername
DEV_ADMIN_PASSWORD=someSecurePasswordHere
DEV_ADMIN_FIRSTNAME=YourFirstName
DEV_ADMIN_LASTNAME=YourLastName
DEV_ADMIN_EMAIL=YouEmailAddress@gmail.com
To allow admin creation in production, you should also add another env variable:
DEV_ADMIN_ALLOW=true
You can manually export/import your DB. But do you really need to export them? I don’t think that you have more than 3 users on local env.
Well, the same procedure, export/import DB. You can write some custom script that connects to your local DB, gets the data, then connects to external DB and imports it. So every time before deploying you should update the database.
It exports the core_store table in a json file. It contains the configurations for the Admin UI.
For example, when you configure the view in admin, the config is stored in db:

Also, when you are renaming the labels for some fields:

You should manually update the envs in production before deployment. You can’t sync them automatically from local to production.