Skip to content

Commit

Permalink
Free and open-source under MIT license (#565)
Browse files Browse the repository at this point in the history
* feat: free and open-source under MIT license
DanRibbens authored May 16, 2022
1 parent 16b7edb commit 4913441
Showing 93 changed files with 332 additions and 585 deletions.
40 changes: 18 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<h1 align="center">Payload</h1>
<p align="center">A self-hosted, TypeScript / JavaScript headless CMS & application framework built with Express, MongoDB and React.</p>
<p align="center">A free and open-source TypeScript headless CMS & application framework built with Express, MongoDB and React.</p>
<p align="center">
<a href="https://github.com/payloadcms/payload/actions">
<img src="https://github.com/payloadcms/payload/workflows/build/badge.svg" />
@@ -21,25 +21,15 @@
<img src="https://payloadcms.com/images/og-image.jpg" alt="Payload headless CMS Admin panel built with React" />
</a>

### Quick Start

```
npx create-payload-app
```

Alternatively, it only takes about five minutes to [create an app from scratch](https://payloadcms.com/docs/getting-started/installation#from-scratch).

### Documentation

Check out the [Payload website](https://payloadcms.com/docs/getting-started/what-is-payload) to find in-depth documentation for everything that Payload offers.

### Features

- Completely free and open-source
- [GraphQL](https://payloadcms.com/docs/graphql/overview), [REST](https://payloadcms.com/docs/rest-api/overview), and [Local](https://payloadcms.com/docs/local-api/overview) APIs
- [Easily customizable ReactJS Admin](https://payloadcms.com/docs/admin/overview)
- [Fully self-hosted](https://payloadcms.com/docs/production/deployment)
- [Extensible Authentication](https://payloadcms.com/docs/authentication/overview)
- [Local file storage & upload](https://payloadcms.com/docs/upload/overview)
- [Version History and Drafts](https://payloadcms.com/docs/versions/overview)
- [Field-based Localization](https://payloadcms.com/docs/configuration/localization)
- [Block-based Layout Builder](https://payloadcms.com/docs/fields/blocks)
- [Extensible SlateJS rich text editor](https://payloadcms.com/docs/fields/rich-text)
@@ -53,18 +43,14 @@ Check out the [Payload website](https://payloadcms.com/docs/getting-started/what

### Code-first

If you know JavaScript, you know Payload. Payload is a _code-first_ CMS, which allows us to do a lot of things right:
Payload is a CMS that has been designed for developers from the ground up to deliver them what they need to build great digital products. If you know JavaScript, you know Payload. It's a _code-first_ CMS, which allows us to do a lot of things right:

- Payload gives you everything you need, but then steps back and lets you build what you want in JavaScript or TypeScript - with no unnecessary complexity brought by GUIs. You'll understand how your CMS works, because you will have written it exactly how you want it.
- Bring your own Express server and do whatever you need on top of Payload. Payload doesn't impose anything on you or your app.
- Completely control the Admin panel by using your own React components. Swap out fields or even entire views with ease.
- Use your data however and wherever you need thanks to auto-generated, yet fully extensible REST, GraphQL and Local Node APIs.

### Free forever for personal use and small projects

Payload is 100% free for personal projects or small use cases where only one admin user is required. You can also get started without an account whatsoever while running on `localhost`.

## Installation
### Quick Start

Before beginning to work with Payload, make sure you have all of the [required software](https://payloadcms.com/docs/getting-started/installation).

@@ -74,8 +60,18 @@ From there, the easiest way to get started with Payload is to use the `create-pa
npx create-payload-app
```

Alternatively, it only takes about five minutes to [write out your own app from scratch](https://payloadcms.com/docs/getting-started/installation#from-scratch).
Alternatively, it only takes about five minutes to [create an app from scratch](https://payloadcms.com/docs/getting-started/installation#from-scratch).

### Documentation

Check out the [Payload website](https://payloadcms.com/docs/getting-started/what-is-payload) to find in-depth documentation for everything that Payload offers.

### Other Resources

##### Discussions

There are lots of good conversations and resources in our [GitHub Discussions board](https://github.com/payloadcms/payload/discussions). If you're struggling with something, chances are, someone's already solved what you're up against. Searching Discussions will often provide very helpful tips and tricks.

## License
##### Discord

Find the Payload license [here](https://github.com/payloadcms/payload/blob/master/license.md).
Join [Payload's Discord channel](https://discord.com/invite/r6sCXqVk3v) to interact with Payload developers in realtime.
2 changes: 2 additions & 0 deletions components/utilities.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
export { default as Meta } from '../dist/admin/components/utilities/Meta';
export { useLocale } from '../dist/admin/components/utilities/Locale';
export { useDocumentInfo } from '../dist/admin/components/utilities/DocumentInfo';
export { useConfig } from '../dist/admin/components/utilities/Config';
export { useAuth } from '../dist/admin/components/utilities/Auth';
7 changes: 1 addition & 6 deletions contributing.md
Original file line number Diff line number Diff line change
@@ -2,10 +2,6 @@

Below you'll find a set of guidelines for how to contribute to Payload CMS.

## Payload is proprietary software

Even though you can read Payload's source code, it's technically not "open source". Payload requires an active license to be used in all production purposes. That said, we do not expect PRs from the public, but we still welcome pull requests of any kind.

## Opening issues

Before you submit an issue, please check all existing [open and closed issues](https://github.com/payloadcms/payload/issues) to see if your issue has previously been resolved or is already known. If there is already an issue logged, feel free to upvote it by adding a :thumbsup: [reaction](https://github.com/blog/2119-add-reactions-to-pull-requests-issues-and-comments). If you would like to submit a new issue, please fill out our Issue Template to the best of your ability so we can accurately understand your report.
@@ -22,12 +18,11 @@ Payload documentation can be found directly within its codebase and you can feel

## Building additional features

If you're an incredibly awesome person and want to help us make Payload even better through new features or additions, we would be thrilled to work with you. If your proposed feature is accepted by our team and is significant enough, pending our discretion, we'd be happy to hook you up with a pro-bono license.
If you're an incredibly awesome person and want to help us make Payload even better through new features or additions, we would be thrilled to work with you.

To help us work on new features, you can reach out to our Development team at [`dev@payloadcms.com`](mailto:dev@payloadcms.com). Be as complete and descriptive as possible regarding your vision and we'll go from there!

## Pull Requests

For all Pull Requests, you should be extremely descriptive about both your problem and proposed solution. If there are any affected open or closed issues, please leave the issue number in your PR message.

By opening a Pull Request against Payload's codebase, you automatically give the entirety of the contribution within your PR to Payload CMS, LLC and retain no personal ownership whatsoever afterward. For more information, please read the full [Payload license](https://github.com/payloadcms/payload/blob/master/license.md).
2 changes: 1 addition & 1 deletion demo/client/components/AfterDashboard/index.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { useConfig } from '@payloadcms/config-provider';
import React from 'react';
import { useHistory } from 'react-router-dom';
import { useConfig } from '../../../../src/admin/components/utilities/Config';

// As this is the demo project, we import our dependencies from the `src` directory.
import Card from '../../../../src/admin/components/elements/Card';
2 changes: 1 addition & 1 deletion demo/client/components/AfterNavLinks/index.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { useConfig } from '@payloadcms/config-provider';
import React from 'react';
import { NavLink } from 'react-router-dom';
import { useConfig } from '../../../../src/admin/components/utilities/Config';

// As this is the demo project, we import our dependencies from the `src` directory.
import Chevron from '../../../../src/admin/components/icons/Chevron';
2 changes: 1 addition & 1 deletion demo/client/components/views/CustomDefault/index.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React, { useEffect } from 'react';
import { Redirect } from 'react-router-dom';
import { useConfig } from '@payloadcms/config-provider';
import { useConfig } from '../../../../../src/admin/components/utilities/Config';

// As this is the demo project, we import our dependencies from the `src` directory.
import DefaultTemplate from '../../../../../src/admin/components/templates/Default';
3 changes: 2 additions & 1 deletion demo/client/components/views/CustomMinimal/index.tsx
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
import React from 'react';
import { useConfig } from '@payloadcms/config-provider';

// As this is the demo project, we import our dependencies from the `src` directory.
import MinimalTemplate from '../../../../../src/admin/components/templates/Minimal';
import Button from '../../../../../src/admin/components/elements/Button';
import { useConfig } from '../../../../../src/admin/components/utilities/Config';

// In your projects, you can import as follows:
// import { MinimalTemplate } from 'payload/components/templates';
// import { Button } from 'payload/components/elements';
// import { useConfig } from 'payload/components/utilities';

import './index.scss';

Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { useConfig } from '@payloadcms/config-provider';
import React, { useCallback } from 'react';
import UploadInput from '../../../../../../../src/admin/components/forms/field-types/Upload/Input';
import { Props as UploadFieldType } from '../../../../../../../src/admin/components/forms/field-types/Upload/types';
import useField from '../../../../../../../src/admin/components/forms/useField';
import { SanitizedCollectionConfig } from '../../../../../../../src/collections/config/types';
import { useConfig } from '../../../../../../../src/admin/components/utilities/Config';

const Text: React.FC<UploadFieldType> = (props) => {
const {
4 changes: 0 additions & 4 deletions docs/admin/overview.mdx
Original file line number Diff line number Diff line change
@@ -69,7 +69,3 @@ This is totally possible. For the above scenario, by specifying `admin: { user:
### Restricting user access

If you would like to restrict which users from a single Collection can access the Admin panel, you can use the `admin` access control function. [Click here](/docs/access-control/overview#admin) to learn more.

## License enforcement

Payload requires a valid license key to be used on production domains. You can use it as much as you'd like locally and on staging / UAT domains, but when you deploy to production, you'll need a license key to activate Payload's Admin panel. For more information, [click here](/docs/production/licensing).
1 change: 0 additions & 1 deletion docs/authentication/operations.mdx
Original file line number Diff line number Diff line change
@@ -20,7 +20,6 @@ Example response:
```js
{
canAccessAdmin: true,
license: 'LICENSE_KEY_HERE',
collections: {
pages: {
create: {
4 changes: 0 additions & 4 deletions docs/getting-started/installation.mdx
Original file line number Diff line number Diff line change
@@ -110,10 +110,6 @@ In contrast to running Mongo locally, a popular option is to sign up for a free

Customize Mongo connection options. Payload will connect to your MongoDB database using default options which you can override and extend to include all the [options](https://mongoosejs.com/docs/connections.html#options) available to mongoose.

##### `license`

Your Payload license key. Not needed for development purposes, but when it's time to deploy to production, you need to add your license key here. More info about how Payload licensing works can be found [here](/docs/production/licensing).

##### `email`

An object used to configure SMTP. [Read more](/docs/email/overview).
84 changes: 0 additions & 84 deletions docs/production/licensing.mdx

This file was deleted.

Loading
Oops, something went wrong.

0 comments on commit 4913441

Please sign in to comment.