This PR consists of two separate changes. One change cannot pass CI without the other, so both are included in this single PR. ## CI - ensure types are generated Our website template is currently failing to build due to a type error. This error was introduced by a change in our generated types. Our CI did not catch this issue because it wasn't generating types / import map before attempting to build the templates. This PR updates the CI to generate types first. It also updates some CI step names for improved clarity. ## Fix: type error  This fixes the type error by ensuring we consistently use the _same_ generated `TypedUser` object within payload, instead of `BaseUser`. Previously, we sometimes used the generated-types user and sometimes the base user, which was causing type conflicts depending on what the generated user type was. It also deprecates the `User` type (which was essentially just `BaseUser`), as consumers should use `TypedUser` instead. `TypedUser` will automatically fall back to `BaseUser` if no generated types exists, but will accept passing it a generated-types User. Without this change, additional properties added to the user via generated-types may cause the user object to not be accepted by functions that only accept a `User` instead of a `TypedUser`, which is what failed here. ## Templates: re-generate templates to update generated types --- - To see the specific tasks where the Asana app for GitHub is being used, see below: - https://app.asana.com/0/0/1210668927737258
Payload Blank Template
This template comes configured with the bare minimum to get started on anything you need.
Quick start
This template can be deployed directly from our Cloud hosting and it will setup MongoDB and cloud S3 object storage for media.
Quick Start - local setup
To spin up this template locally, follow these steps:
Clone
After you click the Deploy button above, you'll want to have standalone copy of this repo on your machine. If you've already cloned this repo, skip to Development.
Development
-
First clone the repo if you have not done so already
-
cd my-project && cp .env.example .envto copy the example environment variables. You'll need to add theMONGODB_URIfrom your Cloud project to your.envif you want to use S3 storage and the MongoDB database that was created for you. -
pnpm install && pnpm devto install dependencies and start the dev server -
open
http://localhost:3000to open the app in your browser
That's it! Changes made in ./src will be reflected in your app. Follow the on-screen instructions to login and create your first admin user. Then check out Production once you're ready to build and serve your app, and Deployment when you're ready to go live.
Docker (Optional)
If you prefer to use Docker for local development instead of a local MongoDB instance, the provided docker-compose.yml file can be used.
To do so, follow these steps:
- Modify the
MONGODB_URIin your.envfile tomongodb://127.0.0.1/<dbname> - Modify the
docker-compose.ymlfile'sMONGODB_URIto match the above<dbname> - Run
docker-compose upto start the database, optionally pass-dto run in the background.
How it works
The Payload config is tailored specifically to the needs of most websites. It is pre-configured in the following ways:
Collections
See the Collections docs for details on how to extend this functionality.
-
Users (Authentication)
Users are auth-enabled collections that have access to the admin panel.
For additional help, see the official Auth Example or the Authentication docs.
-
Media
This is the uploads enabled collection. It features pre-configured sizes, focal point and manual resizing to help you manage your pictures.
Docker
Alternatively, you can use Docker to spin up this template locally. To do so, follow these steps:
- Follow steps 1 and 2 from above, the docker-compose file will automatically use the
.envfile in your project root - Next run
docker-compose up - Follow steps 4 and 5 from above to login and create your first admin user
That's it! The Docker instance will help you get up and running quickly while also standardizing the development environment across your teams.
Questions
If you have any issues or questions, reach out to us on Discord or start a GitHub discussion.