Walkspeed management

I think sprinting should always be on the client because you want to minimize the delay when the client presses the sprint button

The speed boost can stay on the server, but it should communicate to the client when a speed boost activates and deactivates so the client can adjust their own speed

For a simple system where walkspeed is determined by sprint + speed boost you can implement some simple logic. If you have a variable number of factors or boosts that can effect speed then you should make a value manager module where you can add multiplier and adder boosts and then a function to consider all of them and calculate the final value when a boost gets added or removed