Need some help creating a procedural fence

I have a few questions about how to approach a fence with certain constraints I want to be followed.

  1. The posts should always be 90 degrees vertical even when going up a sloped hill. I don’t want the posts to be 90 degrees off the angle of the slope.
  2. The boards should be rotated vertically, I don’t want the textures to get skewed from the vertices being moved vertically on one end instead.
  3. I’d like the rotation and placement to be somewhat automated, at least to the point where it can be placed quickly and iterated upon.

Is this something that should be done via blue prints or splines? Am I going to have to set up sockets? Is there going to be any performance concerns with different implementations? Should this be posted into blue prints instead?