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
.