

It doesn’t matter that website loads javascript code for logged in user, as you need a token (which server will give you after a successful login) to authenticate to apis, it is pretty common to do that way
There wasn’t a client side API, but the API was missing crucial validation of user input (eg only checking the mac address but didn’t check who is actually authenticated)
If you only need a bare minimum, and don’t plan to heavily use CI/CD, container/packages registries, integrations with other tools i would go with gitea/forgejo (you can always use external tools on top), else i would use selfhosted Gitlab, it has pretty much all the things you could imagine to need with software development and deployment