Addresses remaining gaps from the audit review: 1. Register afterForgotPassword hook in Users collection - Password reset requests are now properly logged - Fixed hook signature (uses context instead of req) 2. Create custom /api/auth/login endpoint - Wraps native Payload login - Logs failed login attempts via auditLoginFailed - Returns proper error responses without exposing details 3. Export auditLoginFailed helper function - Can be used by other custom auth handlers - Calls logLoginFailed from audit-service Now all critical auth events are tracked: - Successful logins (afterLogin hook) - Failed logins (custom /api/auth/login endpoint) - Logouts (afterLogout hook) - Password reset requests (afterForgotPassword hook) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> |
||
|---|---|---|
| .vscode | ||
| backups | ||
| docs | ||
| scripts | ||
| src | ||
| tests | ||
| .env.example | ||
| .gitignore | ||
| .npmrc | ||
| .prettierrc | ||
| .prettierrc.json | ||
| .yarnrc | ||
| backup.sql | ||
| CLAUDE.md | ||
| docker-compose.yml | ||
| Dockerfile | ||
| ecosystem.config.cjs | ||
| eslint.config.mjs | ||
| next.config.mjs | ||
| package.json | ||
| playwright.config.ts | ||
| pnpm-lock.yaml | ||
| README.md | ||
| test.env | ||
| tsconfig.json | ||
| vitest.config.mts | ||
| vitest.setup.ts | ||
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.