From 66476809c31857cdbdec48e832fb6916c9e6b640 Mon Sep 17 00:00:00 2001 From: AlexandrAnushko Date: Tue, 9 Sep 2025 16:25:45 +0300 Subject: [PATCH 1/2] first payload setup and some components --- apps/payload/.env.example | 17 + apps/payload/.eslintrc.js | 15 + apps/payload/.gitignore | 35 + apps/payload/README.md | 321 + apps/payload/next-env.d.ts | 5 + apps/payload/next-sitemap.config.cjs | 20 + apps/payload/next.config.js | 39 + apps/payload/package.json | 67 + apps/payload/postcss.config.js | 8 + apps/payload/public/favicon.ico | Bin 0 -> 7406 bytes apps/payload/public/favicon.svg | 23 + apps/payload/public/logo.jpg | Bin 0 -> 9698 bytes apps/payload/public/website-template-OG.webp | Bin 0 -> 101500 bytes .../(sitemaps)/pages-sitemap.xml/route.ts | 68 + .../src/app/(frontend)/[slug]/page.tsx | 91 + apps/payload/src/app/(frontend)/globals.css | 51 + apps/payload/src/app/(frontend)/layout.tsx | 45 + .../app/(frontend)/next/exit-preview/route.ts | 7 + .../src/app/(frontend)/next/preview/route.ts | 67 + apps/payload/src/app/(frontend)/not-found.tsx | 18 + apps/payload/src/app/(frontend)/page.tsx | 5 + .../admin/[[...segments]]/not-found.tsx | 28 + .../(payload)/admin/[[...segments]]/page.tsx | 28 + .../src/app/(payload)/admin/importMap.js | 45 + .../src/app/(payload)/api/[...slug]/route.ts | 22 + .../(payload)/api/graphql-playground/route.ts | 9 + .../src/app/(payload)/api/graphql/route.ts | 9 + apps/payload/src/app/(payload)/layout.tsx | 36 + .../src/components/Footer/RowLabel.tsx | 14 + apps/payload/src/components/Footer/config.ts | 95 + .../Footer/hooks/revalidateFooter.ts | 13 + apps/payload/src/components/Footer/index.tsx | 33 + .../src/components/Header/RowLabel.tsx | 14 + apps/payload/src/components/Header/config.ts | 144 + .../Header/hooks/revalidateHeader.ts | 13 + apps/payload/src/components/Header/index.tsx | 39 + .../components/LivePreviewListener/index.tsx | 17 + .../src/components/Media/ImageMedia/index.tsx | 88 + .../src/components/Media/VideoMedia/index.tsx | 47 + apps/payload/src/components/Media/index.tsx | 25 + apps/payload/src/components/Media/types.ts | 21 + apps/payload/src/components/Page/index.tsx | 24 + apps/payload/src/components/Page/types.ts | 6 + .../src/components/SectionContainer/index.tsx | 107 + .../src/components/SectionContainer/types.ts | 22 + .../components/blocks/Content/Component.tsx | 47 + .../src/components/blocks/Content/config.ts | 78 + .../src/components/blocks/Hero/Component.tsx | 51 + .../src/components/blocks/Hero/config.ts | 217 + .../src/components/blocks/Hero/types.ts | 7 + .../blocks/MediaBlock/Component.tsx | 70 + .../components/blocks/MediaBlock/config.ts | 14 + .../src/components/blocks/RenderBlocks.tsx | 46 + .../src/components/collections/Media.ts | 83 + .../collections/Pages/hooks/revalidatePage.ts | 48 + .../src/components/collections/Pages/index.ts | 134 + .../src/components/collections/Users/index.ts | 26 + .../src/components/fields/defaultLexical.ts | 50 + apps/payload/src/components/fields/link.ts | 191 + .../src/components/fields/linkGroup.ts | 33 + .../components/fields/slug/SlugComponent.tsx | 87 + .../src/components/fields/slug/formatSlug.ts | 25 + .../src/components/fields/slug/index.scss | 13 + .../src/components/fields/slug/index.ts | 56 + apps/payload/src/environment.d.ts | 14 + apps/payload/src/generated/payload-types.ts | 980 +++ .../src/lib/adapters/prepareImageProps.tsx | 44 + .../src/lib/adapters/prepareLinkProps.ts | 69 + .../src/lib/adapters/prepareRichTextProps.ts | 24 + apps/payload/src/lib/hooks/formatSlug.ts | 27 + .../src/lib/hooks/populatePublishedAt.ts | 15 + apps/payload/src/lib/payload/access/anyone.ts | 3 + .../src/lib/payload/access/authenticated.ts | 8 + .../access/authenticatedOrPublished.ts | 13 + .../payload/src/lib/payload/payload.config.ts | 84 + apps/payload/src/lib/plugins/index.ts | 25 + apps/payload/src/lib/renderRichText.tsx | 71 + apps/payload/src/lib/utilities/canUseDOM.ts | 1 + apps/payload/src/lib/utilities/deepMerge.ts | 35 + .../payload/src/lib/utilities/generateMeta.ts | 48 + .../src/lib/utilities/generatePreviewPath.ts | 24 + apps/payload/src/lib/utilities/getGlobals.ts | 26 + apps/payload/src/lib/utilities/getMediaUrl.ts | 23 + apps/payload/src/lib/utilities/getURL.ts | 31 + .../src/lib/utilities/mergeOpenGraph.ts | 25 + apps/payload/tailwind.config.ts | 31 + apps/payload/tsconfig.json | 21 + package.json | 1 + pnpm-lock.yaml | 5941 ++++++++++++++++- 89 files changed, 10349 insertions(+), 312 deletions(-) create mode 100644 apps/payload/.env.example create mode 100644 apps/payload/.eslintrc.js create mode 100644 apps/payload/.gitignore create mode 100644 apps/payload/README.md create mode 100644 apps/payload/next-env.d.ts create mode 100644 apps/payload/next-sitemap.config.cjs create mode 100644 apps/payload/next.config.js create mode 100644 apps/payload/package.json create mode 100644 apps/payload/postcss.config.js create mode 100644 apps/payload/public/favicon.ico create mode 100644 apps/payload/public/favicon.svg create mode 100644 apps/payload/public/logo.jpg create mode 100644 apps/payload/public/website-template-OG.webp create mode 100644 apps/payload/src/app/(frontend)/(sitemaps)/pages-sitemap.xml/route.ts create mode 100644 apps/payload/src/app/(frontend)/[slug]/page.tsx create mode 100644 apps/payload/src/app/(frontend)/globals.css create mode 100644 apps/payload/src/app/(frontend)/layout.tsx create mode 100644 apps/payload/src/app/(frontend)/next/exit-preview/route.ts create mode 100644 apps/payload/src/app/(frontend)/next/preview/route.ts create mode 100644 apps/payload/src/app/(frontend)/not-found.tsx create mode 100644 apps/payload/src/app/(frontend)/page.tsx create mode 100644 apps/payload/src/app/(payload)/admin/[[...segments]]/not-found.tsx create mode 100644 apps/payload/src/app/(payload)/admin/[[...segments]]/page.tsx create mode 100644 apps/payload/src/app/(payload)/admin/importMap.js create mode 100644 apps/payload/src/app/(payload)/api/[...slug]/route.ts create mode 100644 apps/payload/src/app/(payload)/api/graphql-playground/route.ts create mode 100644 apps/payload/src/app/(payload)/api/graphql/route.ts create mode 100644 apps/payload/src/app/(payload)/layout.tsx create mode 100644 apps/payload/src/components/Footer/RowLabel.tsx create mode 100644 apps/payload/src/components/Footer/config.ts create mode 100644 apps/payload/src/components/Footer/hooks/revalidateFooter.ts create mode 100644 apps/payload/src/components/Footer/index.tsx create mode 100644 apps/payload/src/components/Header/RowLabel.tsx create mode 100644 apps/payload/src/components/Header/config.ts create mode 100644 apps/payload/src/components/Header/hooks/revalidateHeader.ts create mode 100644 apps/payload/src/components/Header/index.tsx create mode 100644 apps/payload/src/components/LivePreviewListener/index.tsx create mode 100644 apps/payload/src/components/Media/ImageMedia/index.tsx create mode 100644 apps/payload/src/components/Media/VideoMedia/index.tsx create mode 100644 apps/payload/src/components/Media/index.tsx create mode 100644 apps/payload/src/components/Media/types.ts create mode 100644 apps/payload/src/components/Page/index.tsx create mode 100644 apps/payload/src/components/Page/types.ts create mode 100644 apps/payload/src/components/SectionContainer/index.tsx create mode 100644 apps/payload/src/components/SectionContainer/types.ts create mode 100644 apps/payload/src/components/blocks/Content/Component.tsx create mode 100644 apps/payload/src/components/blocks/Content/config.ts create mode 100644 apps/payload/src/components/blocks/Hero/Component.tsx create mode 100644 apps/payload/src/components/blocks/Hero/config.ts create mode 100644 apps/payload/src/components/blocks/Hero/types.ts create mode 100644 apps/payload/src/components/blocks/MediaBlock/Component.tsx create mode 100644 apps/payload/src/components/blocks/MediaBlock/config.ts create mode 100644 apps/payload/src/components/blocks/RenderBlocks.tsx create mode 100644 apps/payload/src/components/collections/Media.ts create mode 100644 apps/payload/src/components/collections/Pages/hooks/revalidatePage.ts create mode 100644 apps/payload/src/components/collections/Pages/index.ts create mode 100644 apps/payload/src/components/collections/Users/index.ts create mode 100644 apps/payload/src/components/fields/defaultLexical.ts create mode 100644 apps/payload/src/components/fields/link.ts create mode 100644 apps/payload/src/components/fields/linkGroup.ts create mode 100644 apps/payload/src/components/fields/slug/SlugComponent.tsx create mode 100644 apps/payload/src/components/fields/slug/formatSlug.ts create mode 100644 apps/payload/src/components/fields/slug/index.scss create mode 100644 apps/payload/src/components/fields/slug/index.ts create mode 100644 apps/payload/src/environment.d.ts create mode 100644 apps/payload/src/generated/payload-types.ts create mode 100644 apps/payload/src/lib/adapters/prepareImageProps.tsx create mode 100644 apps/payload/src/lib/adapters/prepareLinkProps.ts create mode 100644 apps/payload/src/lib/adapters/prepareRichTextProps.ts create mode 100644 apps/payload/src/lib/hooks/formatSlug.ts create mode 100644 apps/payload/src/lib/hooks/populatePublishedAt.ts create mode 100644 apps/payload/src/lib/payload/access/anyone.ts create mode 100644 apps/payload/src/lib/payload/access/authenticated.ts create mode 100644 apps/payload/src/lib/payload/access/authenticatedOrPublished.ts create mode 100644 apps/payload/src/lib/payload/payload.config.ts create mode 100644 apps/payload/src/lib/plugins/index.ts create mode 100644 apps/payload/src/lib/renderRichText.tsx create mode 100644 apps/payload/src/lib/utilities/canUseDOM.ts create mode 100644 apps/payload/src/lib/utilities/deepMerge.ts create mode 100644 apps/payload/src/lib/utilities/generateMeta.ts create mode 100644 apps/payload/src/lib/utilities/generatePreviewPath.ts create mode 100644 apps/payload/src/lib/utilities/getGlobals.ts create mode 100644 apps/payload/src/lib/utilities/getMediaUrl.ts create mode 100644 apps/payload/src/lib/utilities/getURL.ts create mode 100644 apps/payload/src/lib/utilities/mergeOpenGraph.ts create mode 100644 apps/payload/tailwind.config.ts create mode 100644 apps/payload/tsconfig.json diff --git a/apps/payload/.env.example b/apps/payload/.env.example new file mode 100644 index 00000000..8eac48f1 --- /dev/null +++ b/apps/payload/.env.example @@ -0,0 +1,17 @@ +# Database connection string +DATABASE_URI=mongodb://127.0.0.1/your-database-name + +# Or use a PG connection string +#DATABASE_URI=postgresql://127.0.0.1:5432/your-database-name + +# Used to encrypt JWT tokens +PAYLOAD_SECRET=YOUR_SECRET_HERE + +# Used to configure CORS, format links and more. No trailing slash +NEXT_PUBLIC_SERVER_URL=http://localhost:3000 + +# Secret used to authenticate cron jobs +CRON_SECRET=YOUR_CRON_SECRET_HERE + +# Used to validate preview requests +PREVIEW_SECRET=YOUR_SECRET_HERE diff --git a/apps/payload/.eslintrc.js b/apps/payload/.eslintrc.js new file mode 100644 index 00000000..35414837 --- /dev/null +++ b/apps/payload/.eslintrc.js @@ -0,0 +1,15 @@ +module.exports = { + root: true, + extends: ["@shared/eslint-config", "plugin:tailwindcss/recommended"], + plugins: ["tailwindcss"], + rules: { + "tailwindcss/no-custom-classname": "off", + "tailwindcss/classnames-order": "off", + }, + settings: { + tailwindcss: { + callees: ["cn", "cva"], + config: "tailwind.config.ts", + }, + }, +}; diff --git a/apps/payload/.gitignore b/apps/payload/.gitignore new file mode 100644 index 00000000..071bc4f0 --- /dev/null +++ b/apps/payload/.gitignore @@ -0,0 +1,35 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +build +dist / media + +# misc +.DS_Store +.vscode +.next +.vercel + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# local env files +.env +.env.local + +# Payload default media upload directory +public/media/ + +public/robots.txt +public/sitemap*.xml diff --git a/apps/payload/README.md b/apps/payload/README.md new file mode 100644 index 00000000..63a8142e --- /dev/null +++ b/apps/payload/README.md @@ -0,0 +1,321 @@ +# Payload Website Template + +This is the official [Payload Website Template](https://github.com/payloadcms/payload/blob/main/templates/website). Use it to power websites, blogs, or portfolios from small to enterprise. This repo includes a fully-working backend, enterprise-grade admin panel, and a beautifully designed, production-ready website. + +This template is right for you if you are working on: + +- A personal or enterprise-grade website, blog, or portfolio +- A content publishing platform with a fully featured publication workflow +- Exploring the capabilities of Payload + +Core features: + +- [Pre-configured Payload Config](#how-it-works) +- [Authentication](#users-authentication) +- [Access Control](#access-control) +- [Layout Builder](#layout-builder) +- [Draft Preview](#draft-preview) +- [Live Preview](#live-preview) +- [On-demand Revalidation](#on-demand-revalidation) +- [SEO](#seo) +- [Search](#search) +- [Redirects](#redirects) +- [Jobs and Scheduled Publishing](#jobs-and-scheduled-publish) +- [Website](#website) + +## Quick Start + +To spin up this example locally, follow these steps: + +### Clone + +If you have not done so already, you need to have standalone copy of this repo on your machine. If you've already cloned this repo, skip to [Development](#development). + +#### Method 1 (recommended) + +Go to Payload Cloud and [clone this template](https://payloadcms.com/new/clone/website). This will create a new repository on your GitHub account with this template's code which you can then clone to your own machine. + +#### Method 2 + +Use the `create-payload-app` CLI to clone this template directly to your machine: + +```bash +pnpx create-payload-app my-project -t website +``` + +#### Method 3 + +Use the `git` CLI to clone this template directly to your machine: + +```bash +git clone -n --depth=1 --filter=tree:0 https://github.com/payloadcms/payload my-project && cd my-project && git sparse-checkout set --no-cone templates/website && git checkout && rm -rf .git && git init && git add . && git mv -f templates/website/{.,}* . && git add . && git commit -m "Initial commit" +``` + +### Development + +1. First [clone the repo](#clone) if you have not done so already +1. `cd my-project && cp .env.example .env` to copy the example environment variables +1. `pnpm install && pnpm dev` to install dependencies and start the dev server +1. open `http://localhost:3000` to 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](#production) once you're ready to build and serve your app, and [Deployment](#deployment) when you're ready to go live. + +## 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](https://payloadcms.com/docs/configuration/collections) docs for details on how to extend this functionality. + +- #### Users (Authentication) + + Users are auth-enabled collections that have access to the admin panel and unpublished content. See [Access Control](#access-control) for more details. + + For additional help, see the official [Auth Example](https://github.com/payloadcms/payload/tree/main/examples/auth) or the [Authentication](https://payloadcms.com/docs/authentication/overview#authentication-overview) docs. + +- #### Posts + + Posts are used to generate blog posts, news articles, or any other type of content that is published over time. All posts are layout builder enabled so you can generate unique layouts for each post using layout-building blocks, see [Layout Builder](#layout-builder) for more details. Posts are also draft-enabled so you can preview them before publishing them to your website, see [Draft Preview](#draft-preview) for more details. + +- #### Pages + + All pages are layout builder enabled so you can generate unique layouts for each page using layout-building blocks, see [Layout Builder](#layout-builder) for more details. Pages are also draft-enabled so you can preview them before publishing them to your website, see [Draft Preview](#draft-preview) for more details. + +- #### Media + + This is the uploads enabled collection used by pages, posts, and projects to contain media like images, videos, downloads, and other assets. It features pre-configured sizes, focal point and manual resizing to help you manage your pictures. + +- #### Categories + + A taxonomy used to group posts together. Categories can be nested inside of one another, for example "News > Technology". See the official [Payload Nested Docs Plugin](https://payloadcms.com/docs/plugins/nested-docs) for more details. + +### Globals + +See the [Globals](https://payloadcms.com/docs/configuration/globals) docs for details on how to extend this functionality. + +- `Header` + + The data required by the header on your front-end like nav links. + +- `Footer` + + Same as above but for the footer of your site. + +## Access control + +Basic access control is setup to limit access to various content based based on publishing status. + +- `users`: Users can access the admin panel and create or edit content. +- `posts`: Everyone can access published posts, but only users can create, update, or delete them. +- `pages`: Everyone can access published pages, but only users can create, update, or delete them. + +For more details on how to extend this functionality, see the [Payload Access Control](https://payloadcms.com/docs/access-control/overview#access-control) docs. + +## Layout Builder + +Create unique page layouts for any type of content using a powerful layout builder. This template comes pre-configured with the following layout building blocks: + +- Hero +- Content +- Media +- Call To Action +- Archive + +Each block is fully designed and built into the front-end website that comes with this template. See [Website](#website) for more details. + +## Lexical editor + +A deep editorial experience that allows complete freedom to focus just on writing content without breaking out of the flow with support for Payload blocks, media, links and other features provided out of the box. See [Lexical](https://payloadcms.com/docs/rich-text/overview) docs. + +## Draft Preview + +All posts and pages are draft-enabled so you can preview them before publishing them to your website. To do this, these collections use [Versions](https://payloadcms.com/docs/configuration/collections#versions) with `drafts` set to `true`. This means that when you create a new post, project, or page, it will be saved as a draft and will not be visible on your website until you publish it. This also means that you can preview your draft before publishing it to your website. To do this, we automatically format a custom URL which redirects to your front-end to securely fetch the draft version of your content. + +Since the front-end of this template is statically generated, this also means that pages, posts, and projects will need to be regenerated as changes are made to published documents. To do this, we use an `afterChange` hook to regenerate the front-end when a document has changed and its `_status` is `published`. + +For more details on how to extend this functionality, see the official [Draft Preview Example](https://github.com/payloadcms/payload/tree/examples/draft-preview). + +## Live preview + +In addition to draft previews you can also enable live preview to view your end resulting page as you're editing content with full support for SSR rendering. See [Live preview docs](https://payloadcms.com/docs/live-preview/overview) for more details. + +## On-demand Revalidation + +We've added hooks to collections and globals so that all of your pages, posts, footer, or header changes will automatically be updated in the frontend via on-demand revalidation supported by Nextjs. + +> Note: if an image has been changed, for example it's been cropped, you will need to republish the page it's used on in order to be able to revalidate the Nextjs image cache. + +## SEO + +This template comes pre-configured with the official [Payload SEO Plugin](https://payloadcms.com/docs/plugins/seo) for complete SEO control from the admin panel. All SEO data is fully integrated into the front-end website that comes with this template. See [Website](#website) for more details. + +## Search + +This template also pre-configured with the official [Payload Search Plugin](https://payloadcms.com/docs/plugins/search) to showcase how SSR search features can easily be implemented into Next.js with Payload. See [Website](#website) for more details. + +## Redirects + +If you are migrating an existing site or moving content to a new URL, you can use the `redirects` collection to create a proper redirect from old URLs to new ones. This will ensure that proper request status codes are returned to search engines and that your users are not left with a broken link. This template comes pre-configured with the official [Payload Redirects Plugin](https://payloadcms.com/docs/plugins/redirects) for complete redirect control from the admin panel. All redirects are fully integrated into the front-end website that comes with this template. See [Website](#website) for more details. + +## Jobs and Scheduled Publish + +We have configured [Scheduled Publish](https://payloadcms.com/docs/versions/drafts#scheduled-publish) which uses the [jobs queue](https://payloadcms.com/docs/jobs-queue/jobs) in order to publish or unpublish your content on a scheduled time. The tasks are run on a cron schedule and can also be run as a separate instance if needed. + +> Note: When deployed on Vercel, depending on the plan tier, you may be limited to daily cron only. + +## Website + +This template includes a beautifully designed, production-ready front-end built with the [Next.js App Router](https://nextjs.org), served right alongside your Payload app in a instance. This makes it so that you can deploy both your backend and website where you need it. + +Core features: + +- [Next.js App Router](https://nextjs.org) +- [TypeScript](https://www.typescriptlang.org) +- [React Hook Form](https://react-hook-form.com) +- [Payload Admin Bar](https://github.com/payloadcms/payload/tree/main/packages/admin-bar) +- [TailwindCSS styling](https://tailwindcss.com/) +- [shadcn/ui components](https://ui.shadcn.com/) +- User Accounts and Authentication +- Fully featured blog +- Publication workflow +- Dark mode +- Pre-made layout building blocks +- SEO +- Search +- Redirects +- Live preview + +### Cache + +Although Next.js includes a robust set of caching strategies out of the box, Payload Cloud proxies and caches all files through Cloudflare using the [Official Cloud Plugin](https://www.npmjs.com/package/@payloadcms/payload-cloud). This means that Next.js caching is not needed and is disabled by default. If you are hosting your app outside of Payload Cloud, you can easily reenable the Next.js caching mechanisms by removing the `no-store` directive from all fetch requests in `./src/app/_api` and then removing all instances of `export const dynamic = 'force-dynamic'` from pages files, such as `./src/app/(pages)/[slug]/page.tsx`. For more details, see the official [Next.js Caching Docs](https://nextjs.org/docs/app/building-your-application/caching). + +## Development + +To spin up this example locally, follow the [Quick Start](#quick-start). Then [Seed](#seed) the database with a few pages, posts, and projects. + +### Working with Postgres + +Postgres and other SQL-based databases follow a strict schema for managing your data. In comparison to our MongoDB adapter, this means that there's a few extra steps to working with Postgres. + +Note that often times when making big schema changes you can run the risk of losing data if you're not manually migrating it. + +#### Local development + +Ideally we recommend running a local copy of your database so that schema updates are as fast as possible. By default the Postgres adapter has `push: true` for development environments. This will let you add, modify and remove fields and collections without needing to run any data migrations. + +If your database is pointed to production you will want to set `push: false` otherwise you will risk losing data or having your migrations out of sync. + +#### Migrations + +[Migrations](https://payloadcms.com/docs/database/migrations) are essentially SQL code versions that keeps track of your schema. When deploy with Postgres you will need to make sure you create and then run your migrations. + +Locally create a migration + +```bash +pnpm payload migrate:create +``` + +This creates the migration files you will need to push alongside with your new configuration. + +On the server after building and before running `pnpm start` you will want to run your migrations + +```bash +pnpm payload migrate +``` + +This command will check for any migrations that have not yet been run and try to run them and it will keep a record of migrations that have been run in the database. + +### Docker + +Alternatively, you can use [Docker](https://www.docker.com) to spin up this template locally. To do so, follow these steps: + +1. Follow [steps 1 and 2 from above](#development), the docker-compose file will automatically use the `.env` file in your project root +1. Next run `docker-compose up` +1. Follow [steps 4 and 5 from above](#development) 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. + +### Seed + +To seed the database with a few pages, posts, and projects you can click the 'seed database' link from the admin panel. + +The seed script will also create a demo user for demonstration purposes only: + +- Demo Author + - Email: `demo-author@payloadcms.com` + - Password: `password` + +> NOTICE: seeding the database is destructive because it drops your current database to populate a fresh one from the seed template. Only run this command if you are starting a new project or can afford to lose your current data. + +## Production + +To run Payload in production, you need to build and start the Admin panel. To do so, follow these steps: + +1. Invoke the `next build` script by running `pnpm build` or `npm run build` in your project root. This creates a `.next` directory with a production-ready admin bundle. +1. Finally run `pnpm start` or `npm run start` to run Node in production and serve Payload from the `.build` directory. +1. When you're ready to go live, see Deployment below for more details. + +### Deploying to Payload Cloud + +The easiest way to deploy your project is to use [Payload Cloud](https://payloadcms.com/new/import), a one-click hosting solution to deploy production-ready instances of your Payload apps directly from your GitHub repo. + +### Deploying to Vercel + +This template can also be deployed to Vercel for free. You can get started by choosing the Vercel DB adapter during the setup of the template or by manually installing and configuring it: + +```bash +pnpm add @payloadcms/db-vercel-postgres +``` + +```ts +// payload.config.ts +import { vercelPostgresAdapter } from '@payloadcms/db-vercel-postgres' + +export default buildConfig({ + // ... + db: vercelPostgresAdapter({ + pool: { + connectionString: process.env.POSTGRES_URL || '', + }, + }), + // ... +``` + +We also support Vercel's blob storage: + +```bash +pnpm add @payloadcms/storage-vercel-blob +``` + +```ts +// payload.config.ts +import { vercelBlobStorage } from '@payloadcms/storage-vercel-blob' + +export default buildConfig({ + // ... + plugins: [ + vercelBlobStorage({ + collections: { + [Media.slug]: true, + }, + token: process.env.BLOB_READ_WRITE_TOKEN || '', + }), + ], + // ... +``` + +There is also a simplified [one click deploy](https://github.com/payloadcms/payload/tree/templates/with-vercel-postgres) to Vercel should you need it. + +### Self-hosting + +Before deploying your app, you need to: + +1. Ensure your app builds and serves in production. See [Production](#production) for more details. +2. You can then deploy Payload as you would any other Node.js or Next.js application either directly on a VPS, DigitalOcean's Apps Platform, via Coolify or more. More guides coming soon. + +You can also deploy your app manually, check out the [deployment documentation](https://payloadcms.com/docs/production/deployment) for full details. + +## Questions + +If you have any issues or questions, reach out to us on [Discord](https://discord.com/invite/payload) or start a [GitHub discussion](https://github.com/payloadcms/payload/discussions). diff --git a/apps/payload/next-env.d.ts b/apps/payload/next-env.d.ts new file mode 100644 index 00000000..1b3be084 --- /dev/null +++ b/apps/payload/next-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/apps/payload/next-sitemap.config.cjs b/apps/payload/next-sitemap.config.cjs new file mode 100644 index 00000000..db945b03 --- /dev/null +++ b/apps/payload/next-sitemap.config.cjs @@ -0,0 +1,20 @@ +const SITE_URL = + process.env.NEXT_PUBLIC_SERVER_URL || + process.env.VERCEL_PROJECT_PRODUCTION_URL || + "https://example.com"; + +/** @type {import('next-sitemap').IConfig} */ +module.exports = { + siteUrl: SITE_URL, + generateRobotsTxt: true, + exclude: ["/pages-sitemap.xml", "/*"], + robotsTxtOptions: { + policies: [ + { + userAgent: "*", + disallow: "/admin/*", + }, + ], + additionalSitemaps: [`${SITE_URL}/pages-sitemap.xml`], + }, +}; diff --git a/apps/payload/next.config.js b/apps/payload/next.config.js new file mode 100644 index 00000000..69b2ee9d --- /dev/null +++ b/apps/payload/next.config.js @@ -0,0 +1,39 @@ +import { withPayload } from "@payloadcms/next/withPayload"; + +const extensionAlias = { + ".cjs": [".cts", ".cjs"], + ".js": [".ts", ".tsx", ".js", ".jsx"], + ".mjs": [".mts", ".mjs"], +}; + +const NEXT_PUBLIC_SERVER_URL = process.env.VERCEL_PROJECT_PRODUCTION_URL + ? `https://${process.env.VERCEL_PROJECT_PRODUCTION_URL}` + : undefined || process.env.__NEXT_PRIVATE_ORIGIN || "http://localhost:3000"; + +/** @type {import('next').NextConfig} */ +const nextConfig = { + images: { + remotePatterns: [ + ...[NEXT_PUBLIC_SERVER_URL /* 'https://example.com' */].map((item) => { + const url = new URL(item); + + return { + hostname: url.hostname, + protocol: url.protocol.replace(":", ""), + }; + }), + ], + }, + webpack: (webpackConfig) => { + webpackConfig.resolve.extensionAlias = extensionAlias; + return webpackConfig; + }, + reactStrictMode: true, + + turbopack: { + resolveAlias: extensionAlias, + resolveExtensions: [".ts", ".tsx", ".js", ".jsx", ".json"], + }, +}; + +export default withPayload(nextConfig, { devBundleServerPackages: false }); diff --git a/apps/payload/package.json b/apps/payload/package.json new file mode 100644 index 00000000..beabcbe6 --- /dev/null +++ b/apps/payload/package.json @@ -0,0 +1,67 @@ +{ + "name": "payload", + "version": "0.1.0", + "private": true, + "license": "MIT", + "type": "module", + "scripts": { + "build": "next build", + "postbuild": "next-sitemap --config next-sitemap.config.cjs", + "dev": "next dev --turbopack --port=3000", + "dev:prod": "rm -rf .next && pnpm build && pnpm start", + "generate:importmap": "payload generate:importmap", + "generate:types": "payload generate:types", + "ii": "pnpm --ignore-workspace install", + "lint": "next lint", + "lint:fix": "next lint --fix", + "payload": "PAYLOAD_CONFIG_PATH=/src/lib/payload/payload.config.ts payload", + "reinstall": "rm -rf node_modules && rm pnpm-lock.yaml && pnpm --ignore-workspace install", + "start": "next start" + }, + "dependencies": { + "@payloadcms/db-postgres": "3.54.0", + "@payloadcms/live-preview-react": "3.54.0", + "@payloadcms/next": "3.54.0", + "@payloadcms/payload-cloud": "3.54.0", + "@payloadcms/plugin-seo": "3.54.0", + "@payloadcms/richtext-lexical": "3.54.0", + "@payloadcms/ui": "3.54.0", + "@shared/ui": "workspace:*", + "cross-env": "^7.0.3", + "dotenv": "16.4.7", + "next": "15.4.4", + "next-sitemap": "^4.2.3", + "payload": "3.54.0", + "react": "19.1.0", + "react-dom": "19.1.0", + "sharp": "0.34.2" + }, + "devDependencies": { + "@eslint/eslintrc": "^3.2.0", + "@shared/eslint-config": "workspace:*", + "@shared/tailwind-config": "workspace:*", + "@shared/ts-config": "workspace:*", + "@tailwindcss/typography": "^0.5.13", + "@types/node": "22.5.4", + "@types/react": "19.1.8", + "@types/react-dom": "19.1.6", + "autoprefixer": "^10.4.19", + "eslint": "^9.16.0", + "eslint-config-next": "15.4.4", + "postcss": "^8.4.38", + "prettier": "^3.4.2", + "tailwindcss": "^3.4.3", + "typescript": "5.7.3" + }, + "engines": { + "node": "^18.20.2 || >=20.9.0", + "pnpm": "^9 || ^10" + }, + "pnpm": { + "onlyBuiltDependencies": [ + "sharp", + "esbuild", + "unrs-resolver" + ] + } +} diff --git a/apps/payload/postcss.config.js b/apps/payload/postcss.config.js new file mode 100644 index 00000000..393a10f8 --- /dev/null +++ b/apps/payload/postcss.config.js @@ -0,0 +1,8 @@ +const config = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} + +export default config diff --git a/apps/payload/public/favicon.ico b/apps/payload/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..8cf8894a0d4f5c68bdc34cf27a12df9680898ff3 GIT binary patch literal 7406 zcmeHMXHXQ`7XAhpa?VkLAVV60fTTfk2Ez&>2B39U1r%Kdp7>n#`F!TA@zn>Bq;|8c0hNYm29hAq-Lj1$e3bDOo#}3{oFE2-aem)j0 zT7*}xUg6xibMW@|hK-F4wr$&nva&Md=H}wXix&t934y1lC#6xg|QC%Sd( zhSjTAqoAMwuV24Lcz8JO+_?iEA0He(d>FR2w%ERXJM!}KuyEl*Bqk=}<;$12efu^- zLqjoY)F^m)dExBYvuJ2&fVH(Xwr<^uRjXDZCnpEbpFhXcsZ*g+sc`e=O^h5l5*{8N zICJI?`}f1#+#FR^RoJ+3BQi2F zFlWvjJbwHbfq{WIb?OvcTwJhs?_QXinqvL>_2|%{13rBCfQJtsB04%60RaIRI&>&b zoHzj|Cnwa_)?)YW-7qmR!Mk_w5E&VX`}gm|!NCE?jvYh){{3NOWQ2-}3M^i{7;oOZ z!G#MKaOB7l*xA|XZJw6q-(>}I`hJ&14`vV0cUaFB{8v}&uev_A>>Zj`@SASzan5PX zH`96Ly`!Iy00bG-I* zyjtthOLqeU{BZV>O&so0svFPn#No{NsI)OzVuC(i+rz^sH8s_;yAEG##K=c{r&yX= zqHgmU;D^ckjjyL}3|YhIH}ewL$N>Lwf9m5Eoe2MH03VP6zIBdnR{ZzU`s=)Z6F%s7 z@QuAjix3e%zL1l zWOEF&X8SST59v3GO<=5U*$&MF??6Xv@+{2qk*_a@V*|@QMUep1`9nH9c$j zh9Zxd)=_#_NaJDIX|1FLZJDRSuZzxOJ5cE~KdB@(d%FFn_yKcn&(g!{6|9@W(`#~b{r|5^znL^zu0WSe{pGe;4im6-^*wI zEod@YuKX#C&aL9vwGs9GaV(xh5q&%9s+?u3d|wq9R#~-n(}X>@CUl z=*5c{nRd6w(W6JXE@e*@*QLqH$y}GtoH-MtM~}w&^XFwaQ)e?T|2HlNq3UwJaFIu*PSa?tl)Z+bSHa7a=l4fQ_`0cCr-rGt5*&5C27lL z%a(C{Iez?jT)upnYfDL2lBOhWNxG7Kl)1JXGGqwXm8368SCXDgNlC%1S+j8W?p>}a zNn5s9%L;sJ1)N#Y=qr}j@9Q1-{0Q-WbtWcpd>$FanO5zn<&>Fe(xoH7$6w#ep{PBN zr&zmdS-}rZ$)y$UrgA(%5W4etZKS`Iy#qWV)X}BF;K*D-B_ww+jH}pygurqZXAM>x z%kpNmN@i0325|;e3Gr6?altyhX<%U`%dbgmYD(x6qY|ns_40+(#`<~-(ERf=!oxj( z5`-RQ`f+)E*!-EfYJ>{<+KBgO>({C$U1s^J&>+_6TO+jfm*N%*K~)o6)uv5U*APMQ z`#GwrtGOUFwU**2=)>luQEF=X2Pg$qj7Fnk31KWO_7B+QusJbH^lGRPTQ${`F2$2N zmsI%q`IWYE4zG47Ep>03FyI#oOK}9nS``-;TV)SI&tF-I&%b9956f}U`~1x3_xWY{ z%AX$p*7Gfo^iOIKPoXEyj~y~k(c>oUqHIzPop=dxl0%0M@w)l6Y14S^oVW?q&gajc z&pFAIDN_&}9L#Ixg9Z)4^5x6rIyrF>;vrNAudAz*IfqpLmN*7+3aQ2|)wGE_P)(co zLt|qjuVqsWd;0Y0at&LmT@z;@o>T#F7aBkRA*kZW(`6veq;+bOP5GlrE?6X@N#o9Y$#))ypB(hY|NKo03@9&kXu!=HG xQ!9-!$S-iS%gJ#|ZKZMbjUXS%PNAWBmc}K1>AZh~2~b?$d_JA8e(;a9{|EYbjS2t& literal 0 HcmV?d00001 diff --git a/apps/payload/public/favicon.svg b/apps/payload/public/favicon.svg new file mode 100644 index 00000000..d7ccc5aa --- /dev/null +++ b/apps/payload/public/favicon.svg @@ -0,0 +1,23 @@ + + + + + + + \ No newline at end of file diff --git a/apps/payload/public/logo.jpg b/apps/payload/public/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d4443c3afa82bb0df211f405799dff16873b107e GIT binary patch literal 9698 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 literal 0 HcmV?d00001 diff --git a/apps/payload/public/website-template-OG.webp b/apps/payload/public/website-template-OG.webp new file mode 100644 index 0000000000000000000000000000000000000000..ceb0efc471c7503324f6fe561322d264291de2bb GIT binary patch literal 101500 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 z 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�@{-S#_@^{@&hw5z*Fvrz)}r? z3Av0h9EstvCO-JBX9d{LCxgPY0Upc&-2>#ePyh{O+b;|_djzT};m9Rl5dsi>rHIF{ z9%IRL%p7~^>ctK21QDSq_2ZDk*c9ain)7VxTu5FE$RTT}Wx=u>06gHGShDsy*sy(Y zO`#?gTId5_A|8?teaV{bD&3E8oZmvRjdf1A3aQ(;32Zv&Sp=~8;qyR2+^-8-MZn_2 zgYYhB6HO-H`3oKg6Q|>AZtQ}u&C{Oo?Bu}9%ftA4zk09=GL#yR34u}5}Xv7@Asto+>?oG`X$shzzOi(40~D;sf|O1H>qWqn+U!k?&Z4yM9SoDfzYWLs^u!C?)tm ztIskL33T=BlYWVA>}Y!RiaC!E!6kbMuR0-lLSQXzkZd=iK}abf`xnTc$%jJp$)d!{ zWIzdHg$V=(fYJbQ{@j%4{a!WU{`an&RFBmy|O z+@a<(6DdoVpS4VDQp7}f$qz{bc-m!~ILuuFsl7<~d7z2Fh%fsTjx$T$rU57i>N*y3 z_j?df{(;GdS*F6r2IOTI8!#vYKM;P-6-)hW( z?WT2*sW8E4<(9;V$#9}5M}Il;xGZJS_uv~wT`|-aFVwF1d9ai=7#t>92P6pn?aKo7 zLwz(IH}gUtNOaEc?5{p79O|So`Xrh&o6|{Y&m$Pbu>ocs+i~u`{(SKdiqQpP5@UZ~m}0a50Kn}}ga7~l literal 0 HcmV?d00001 diff --git a/apps/payload/src/app/(frontend)/(sitemaps)/pages-sitemap.xml/route.ts b/apps/payload/src/app/(frontend)/(sitemaps)/pages-sitemap.xml/route.ts new file mode 100644 index 00000000..01b23934 --- /dev/null +++ b/apps/payload/src/app/(frontend)/(sitemaps)/pages-sitemap.xml/route.ts @@ -0,0 +1,68 @@ +import { unstable_cache } from "next/cache"; +import { getServerSideSitemap } from "next-sitemap"; +import { getPayload } from "payload"; + +import config from "@/lib/payload/payload.config"; + +const getPagesSitemap = unstable_cache( + async () => { + const payload = await getPayload({ config }); + const SITE_URL = + process.env.NEXT_PUBLIC_SERVER_URL || + process.env.VERCEL_PROJECT_PRODUCTION_URL || + "https://example.com"; + + const results = await payload.find({ + collection: "pages", + overrideAccess: false, + draft: false, + depth: 0, + limit: 1000, + pagination: false, + where: { + _status: { + equals: "published", + }, + }, + select: { + slug: true, + updatedAt: true, + }, + }); + + const dateFallback = new Date().toISOString(); + + const defaultSitemap = [ + { + loc: `${SITE_URL}/search`, + lastmod: dateFallback, + }, + ]; + + const sitemap = results.docs + ? results.docs + .filter((page) => Boolean(page?.slug)) + .map((page) => { + return { + loc: + page?.slug === "home" + ? `${SITE_URL}/` + : `${SITE_URL}/${page?.slug}`, + lastmod: page.updatedAt || dateFallback, + }; + }) + : []; + + return [...defaultSitemap, ...sitemap]; + }, + ["pages-sitemap"], + { + tags: ["pages-sitemap"], + }, +); + +export async function GET() { + const sitemap = await getPagesSitemap(); + + return getServerSideSitemap(sitemap); +} diff --git a/apps/payload/src/app/(frontend)/[slug]/page.tsx b/apps/payload/src/app/(frontend)/[slug]/page.tsx new file mode 100644 index 00000000..d9215e1d --- /dev/null +++ b/apps/payload/src/app/(frontend)/[slug]/page.tsx @@ -0,0 +1,91 @@ +import React, { cache } from "react"; +import type { Metadata } from "next"; +import { draftMode } from "next/headers"; +import { getPayload } from "payload"; + +import configPromise from "@/lib/payload/payload.config"; +import { generateMeta } from "@/lib/utilities/generateMeta"; +import PageContainer from "@/components/Page"; + +export async function generateStaticParams() { + const payload = await getPayload({ config: configPromise }); + const pages = await payload.find({ + collection: "pages", + draft: false, + limit: 1000, + overrideAccess: false, + pagination: false, + select: { + slug: true, + }, + }); + + const params = pages.docs + ?.filter((doc) => { + return doc.slug !== "home"; + }) + .map(({ slug }) => { + return { slug }; + }); + + return params; +} + +type Args = { + params: Promise<{ + slug?: string; + }>; +}; + +export default async function Page({ params: paramsPromise }: Args) { + const { isEnabled: draft } = await draftMode(); + + const { slug = "home" } = await paramsPromise; + const url = "/" + slug; + + const page = await queryPageBySlug({ + slug, + }); + + if (!page) { + return ( +
+

EMPTY

+
+ ); + } + + return ; +} + +export async function generateMetadata({ + params: paramsPromise, +}: Args): Promise { + const { slug = "home" } = await paramsPromise; + const page = await queryPageBySlug({ + slug, + }); + + return generateMeta({ doc: page }); +} + +const queryPageBySlug = cache(async ({ slug }: { slug: string }) => { + const { isEnabled: draft } = await draftMode(); + + const payload = await getPayload({ config: configPromise }); + + const result = await payload.find({ + collection: "pages", + draft, + limit: 1, + pagination: false, + overrideAccess: draft, + where: { + slug: { + equals: slug, + }, + }, + }); + + return result.docs?.[0] || null; +}); diff --git a/apps/payload/src/app/(frontend)/globals.css b/apps/payload/src/app/(frontend)/globals.css new file mode 100644 index 00000000..0018e592 --- /dev/null +++ b/apps/payload/src/app/(frontend)/globals.css @@ -0,0 +1,51 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +:root { + --section-margin-base: 24px; + --section-margin-large: 72px; + + --section-padding-base: 16px; + --section-padding-large: 72px; +} + +.light { + --bg: #fff; + --text: #222222; + --text-secondary: #666666; + --primary: #4f46e5; + --primary-light: #e4e1ff; + --primary-2: #ff0765; + --primary-2-light: #ffe6f0; +} + +.dark { + --bg: #222222; + --text: #f6f6f6; + --text-secondary: #999999; + --primary: #4f46e5; + --primary-light: #e4e1ff; + --primary-2: #ff0765; + --primary-2-light: #ffe6f0; +} + +.light-gray { + --bg: #f6f6f6; + --text: #222222; + --text-secondary: #666666; + --primary: #4f46e5; + --primary-light: #e4e1ff; + --primary-2: #ff0765; + --primary-2-light: #ffe6f0; +} + +.dark-gray { + --bg: #5b5b5b; + --text: #f6f6f6; + --text-secondary: #bababa; + --primary: #4f46e5; + --primary-light: #e4e1ff; + --primary-2: #ff0765; + --primary-2-light: #ffe6f0; +} diff --git a/apps/payload/src/app/(frontend)/layout.tsx b/apps/payload/src/app/(frontend)/layout.tsx new file mode 100644 index 00000000..4944af23 --- /dev/null +++ b/apps/payload/src/app/(frontend)/layout.tsx @@ -0,0 +1,45 @@ +import React from "react"; +import type { Metadata } from "next"; + +// import { Providers } from "@/lib/providers"; +import { mergeOpenGraph } from "@/lib/utilities/mergeOpenGraph"; + +import "./globals.css"; + +import { getServerSideURL } from "@/lib/utilities/getURL"; +import Footer from "@/components/Footer"; +import Header from "@/components/Header"; + +export default async function RootLayout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + + + {/* */} + + {/* */} + + + {/* */} +
+ {children} +