Probably best to play animations on the client, first ensuring they are preloaded so there isn’t delay when they are played. This way you can synchronise them with any visual effects (which should also be handled client-side).
The module approach makes sense, especially if you’re going to be mixing and matching different moves.
With this approach, you can store a pointer to each of the players moves in a table on the server.
For example, let’s say I’m allowed four moves and move modules are stored in replicated storage - my table would look like this: