Skip to main content
Version: 0.9.9

Modules

Serverpod is built around the concept of modules. A Serverpod module is similar to a Dart package, but it contains both server and client code, as well as Flutter widgets. A module contains its own name space for endpoints and methods to minimize any conflicts between modules.

Examples of modules are the serverpod_auth module and the serverpod_chat module that both are maintained by the Serverpod team.

Adding a module to your project

To add a module to your project you need to include the server and client/Flutter packages to your project's pubspec.yaml files and to add an entry to your config/generator.yaml file.

For example, to add the serverpod_auth module to your project you need to add serverpod_auth_server to your server's pubspec.yaml:

dependencies:
serverpod_auth_server: ^0.9.x

In your config/generator.yaml add the serverpod_auth module and give it a nickname. The nickname will determine how you reference the module from the client.

modules:
serverpod_auth:
nickname: auth

Finally, you need to run pub get and serverpod generate from your server's directory (e.g. mypod_server) to add the module to your protocol.

dart pub get
serverpod generate

In your app, add the corresponding dart or Flutter package(s) to your pubspec.yaml.

dependencies:
serverpod_auth_shared_flutter: ^0.9.x
serverpod_auth_google_flutter: ^0.9.x
serverpod_auth_apple_flutter: ^0.9.x

Creating custom modules

With the serverpod create command it is possible to create new modules for code that is shared between projects or that you want to publish to pub.dev. To create a module instead of a server project, pass module to the --template flag.

serverpod create --template module my_module

The create command will create a server and a client Dart package. If you also want to add custom Flutter code, use flutter create to create a package.

flutter create --template package my_module_flutter

In your Flutter package you most likely want to import the client libraries created by serverpod create.