Best practices for organizing Move modules

Hello Move developers :waving_hand:

I’d like to kick off the first discussion here with a simple but very useful topic:

:small_blue_diamond: What are the best practices for organizing Move modules?

From my own experience:
I usually separate modules based on domain logic, for example:

  • token.move (my custom coin/asset logic)

  • marketplace.move (trading or exchange logic)

  • utils.move (shared helper functions)

The main advantage of this approach is easier upgrades — I can replace a specific module without touching the others. I also keep the same separation in my test modules.
But I’m not sure if this structure scales well for larger projects.

:light_bulb: How do you structure your modules? Any practical tips for test coverage and upgrade scenarios?

6 Likes