Ship is monorepo, so it lets you share your code across applications to minimize duplications and reduce errors.
All shared code is inside the packages/ folder.
By default, packages include app-constants, shared, mailer, and config packages. Learn more about the mailer package here.
/packages
/app-constants
/shared
/mailer
/eslint-config
/prettier-config
/tsconfig
The shared package is special — it contains an auto-generated typed API client that bridges apps/api and apps/web. Schemas from API resources are automatically copied to packages/shared/src/schemas/ during codegen. Run pnpm --filter shared generate after any API endpoint or schema change.
Installation
We’ve included all essential packages in your apps.
If you want to add more packages, head to the package.json file, and in the dependencies section, add to dependencies package name with value “workspace:*”.
"dependencies": {
"shared": "workspace:*",
},
The shared package provides the typed API client, constants, types, enums, and schemas — so a single import covers most shared needs.
You can read more about package sharing in Turborepo documentation.