Looking at your proposed structure, I am assuming that the only thing that would be changed is:
The WordPress files are all kept in a folder you've called web.
For this just create a .htaccess file in root folder, and put this content inside (just change example.com):
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteCond %{REQUEST_URI} !^/web/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /web/$1
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteRule ^(/)?$ web/index.php [L]
</IfModule>
Rename the wp-content
folder (I do not suggest doing this, as some plugins or themes may not work simply because they are not written using best practices and hard coded the folder name). In your wp-config.php
put this:
define( "WP_CONTENT_FOLDERNAME", "app" );
Now, if I am assuming that EVERYTHING else WP is in the directory WP, then things would change slightly, but that should give you an idea of how.
You can read more by looking at the WordPress support pages.