One thing is (as you can see) UV Projection modifier generates smaller image in front side to closer camera and bigger image on opposite side due conical shape of projection from point - so distance of camera matters.
In this case I would suggest to use Texture Coordinates > Object and use another object like Empty to control position. To position it smoothly around surface - enable Snapping > Face with Align Rotation to Target.
To prevent appearance on opposite side - use Empty's Z coordinate and clamp it with like Less Than node and use it as a mask for back part of a mesh.