I typically avoid mixing Go and JS. It just gets too confusing with the overlapping package structures. I’ll usually make two separate repos.
Another option would be to use a monorepo for the two projects so you can at least keep them in sync. For example, you might have a myappd directory the Go server and a myappweb…
Good question. I typically use pointer fields like you mentioned if I have more complicated updates. I’ll usually have a separate struct called DialUpdate that I would pass to an UpdateDial() function on the service. That would have all the updatable fields as pointers.
Embedding is generally preferred although it has its trade offs. Embedding means that the parent object cannot be garbage collected as long as there’s a reference to the embedded object. Sometimes you don’t have a clear owner of some data so in those cases it can make sense to have it on its own.