I'm not the same author, but I run several Webapps in systemd units, with the below service for all of them:
Note the @ in the name, that means I reuse it as webapp@api.domain.name webapp@frontend.domain.name and so on.
----8<---- webapp@.service ---->8---- [Unit] Description=%i webapp
[Service]
User=%i
Group=%i
# Note that the first argument of the command line (i.e. the program to execute)
# may not include % specifiers.
ExecStart=/srv/webapp %i
WorkingDirectory=/srv/%i/
PrivateTmp=true
Type=simple
Restart=always
RestartSec=2s
[Install]
WantedBy=multi-user.target
---- 8< ----/srv/webapp is a simple script that will do "exec $1/webapp" which is the actual executable.