Design suggestion - PKlempe/SAM GitHub Wiki

First Design suggestions:

Splitting the application into multiple modules, which interact with each other.

The Core Module contains the event reaction logic as well as core functionality like validating if everything is ok and how to react to this. Then there are further modules which are used to provide the different services to the core module.

  • The File Handler module for uploading and querying files.
  • The Role Management module for managing user roles.
  • The Logging module for logging server activities.
  • The Moderation module which handles moderation and bans.
  • The Tutorial module which provides FAQs and Tutorials of some sort.

Additionally, there is a dedicated module for persistence. It contains access code for state data, either saved in a database or in any other persistent storage. If any other module (including core) needs some stateful information that is necessary over multiple event calls, it gets (and saves) this info here.