Indeed you can use relay. Basically the relay’s data pin will be connected to the shift register, or directly to a GPIO pin if you don’t need shift register. But as I mentioned in another thread, I would still prefer triac because they are significantly cheaper than relay, more compact, and have faster switching speed.
If you are looking for the bare-minimum hardware, the OpenSprinkler zone expansion board is close to that. What you need at the minimum (to interface with sprinkler valves) are triacs, resistors, and optionally shift register (again, if you directly use GPIO pins you don’t need shift registers). On top of that, you need a microcontroller (like Arduino), or RPi to send control command, and an Ethernet shield, or USB dongle to handle web requests. So if budget is a major concern, you can build your own controller at a pretty low cost.