Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Copy updates #903

Merged
merged 4 commits into from
Mar 22, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
94 changes: 56 additions & 38 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,69 @@
# KeystoneJS

[![CircleCI](https://circleci.com/gh/keystonejs/keystone-5.svg?style=shield&circle-token=6b4c9e250b2b61403b64c9b66ab7f4de6b0b4dde)](https://circleci.com/gh/keystonejs/keystone-5) [![All Contributors](https://img.shields.io/badge/all_contributors-16-orange.svg?style=flat-square)](#contributors)
[![CircleCI](https://circleci.com/gh/keystonejs/keystone-5.svg?style=shield&circle-token=6b4c9e250b2b61403b64c9b66ab7f4de6b0b4dde)](https://circleci.com/gh/keystonejs/keystone-5)

Welcome to Keystone 5, the development project for the future of KeystoneJS.

`schema => ({ api, adminUI })`
`schema => ({ GraphQL, AdminUI })`

KeystoneJS is a platform which takes a user defined schema and builds a server which provides a GraphQL CRUD API backed by a database, along with an Admin UI for interacting with the database.
KeystoneJS is a scalable platform and CMS for Node.js applications.

- [WARNING](#WARNING)
- [Getting Started](#Getting-Started)
- [Developing](#Developing)
- [License](#License)
Keystone 5 introduces first-class GraphQL support, a new extensible architecture, and an improved Admin UI.

It is currently in alpha and under intensive development by [Thinkmill](https://www.thinkmill.com.au) and contributors around the world.

### What's new?

Keystone 5 is a complete re-imagining of KeystoneJS for the future. It builds on the lessons we learned over the last 5 years of the Keystone's history and focuses on the things we believe are the most powerful features for modern web and mobile applications.

This means less focus on hand-holding Node.js template-driven websites and more focus on flexible architecture, a powerful GraphQL API with deep access control features, an extensible Admin UI and plugins for rich field types, file and database adapters, and session management.

We believe it's the ideal back-end for rich React / Vue / Angular applications, Next.js websites, Mobile applications and more. It also makes a great Headless CMS.

## WARNING

This project is currently very much in the `alpha` phase of development.
There are known bugs, missing features, and limited documentation.
APIs have not been finalised and may change with each release (although SemVer will always be respected when this happens).
If you use the Knex adapter, KeystoneJS _will_ delete your database every time you restart your application.
This project is currently very much in the **alpha** phase of development. There are known bugs, missing features, and limited documentation. APIs have not been finalised and may change with each release.

To make this clear, we're currently publishing all packages to the `@keystone-alpha` scope on npm.

## Getting Started

If you're interested in checking out our progress, the simplest way to do so is to clone this repo and run one of the demo projects.

_NOTE: You must have a [working version of `mongo`
installed](https://docs.mongodb.com/manual/installation/#mongodb-community-edition)._

### Demo Projects

First, you'll need Bolt installed:

```bash
yarn global add bolt
```

You'll also need MongoDB installed. If you need help check out our [MongoDB Guide](https://v5.keystonejs.com/quick-start/mongodb)

Then clone this repo and use Bolt to install the dependencies:

```bash
git clone https://github.com/keystonejs/keystone-5.git
cd keystone-5
bolt
```

Finally, run the build and start a project:

```bash
yarn build
yarn start
```

There are currently two projects available: `todo` and `blog`. You can specify the project you want to start:

```bash
yarn start blog
```

### Quick start

To get up and running with a basic project template, run the following commands.
Expand All @@ -38,9 +80,6 @@ yarn start
npm install --save @keystone-alpha/keystone @keystone-alpha/fields @keystone-alpha/adapter-mongoose @keystone-alpha/admin-ui
```

_NOTE: You must have a [working version of `mongo`
installed](https://docs.mongodb.com/manual/installation/#mongodb-community-edition)._

Add a script to your `package.json`:

```json
Expand Down Expand Up @@ -282,7 +321,8 @@ The `lint` script will validate source code with both ESLint and prettier.

### Setup

Keystone 5 is set up as a monorepo, using [Bolt](http://boltpkg.com)
Keystone 5 is set up as a monorepo, using [Bolt](http://boltpkg.com).

First, clone the Keystone 5 repository

```
Expand Down Expand Up @@ -415,32 +455,10 @@ circleci local execute --job simple_tests
Where `simple_tests` can be replaced with any job listed in
[`.circleci/config.yml`](./.circleci/config.yml) under the `jobs:` section.

### Arch - Keystone UI Kit

Resources, tooling, and design guidelines by KeystoneJS using [GastbyJS](https://www.gatsbyjs.org/)

To start, run

```sh
bolt arch
```

## Code of Conduct

KeystoneJS adheres to the [Contributor Covenant Code of Conduct](code-of-conduct.md).

## License

Copyright (c) 2018 Jed Watson. Licensed under the MIT License.

## Contributors

Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):

<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore -->
<table><tr><td align="center"><a href="http://www.thinkmill.com.au"><img src="https://avatars3.githubusercontent.com/u/872310?v=4" width="100px;" alt="Jed Watson"/><br /><sub><b>Jed Watson</b></sub></a><br /><a href="https://github.com/keystonejs/keystone-5/commits?author=JedWatson" title="Code">💻</a></td><td align="center"><a href="http://jes.st/about"><img src="https://avatars1.githubusercontent.com/u/612020?v=4" width="100px;" alt="Jess Telford"/><br /><sub><b>Jess Telford</b></sub></a><br /><a href="https://github.com/keystonejs/keystone-5/commits?author=jesstelford" title="Code">💻</a></td><td align="center"><a href="http://www.timl.id.au"><img src="https://avatars0.githubusercontent.com/u/616382?v=4" width="100px;" alt="Tim Leslie"/><br /><sub><b>Tim Leslie</b></sub></a><br /><a href="https://github.com/keystonejs/keystone-5/commits?author=timleslie" title="Code">💻</a></td><td align="center"><a href="https://hamil.town"><img src="https://avatars1.githubusercontent.com/u/11481355?v=4" width="100px;" alt="Mitchell Hamilton"/><br /><sub><b>Mitchell Hamilton</b></sub></a><br /><a href="https://github.com/keystonejs/keystone-5/commits?author=mitchellhamilton" title="Code">💻</a></td><td align="center"><a href="https://twitter.com/JossMackison"><img src="https://avatars3.githubusercontent.com/u/2730833?v=4" width="100px;" alt="Joss Mackison"/><br /><sub><b>Joss Mackison</b></sub></a><br /><a href="https://github.com/keystonejs/keystone-5/commits?author=jossmac" title="Code">💻</a></td><td align="center"><a href="http://nathansimpson.design"><img src="https://avatars2.githubusercontent.com/u/12689383?v=4" width="100px;" alt="Nathan Simpson"/><br /><sub><b>Nathan Simpson</b></sub></a><br /><a href="https://github.com/keystonejs/keystone-5/commits?author=nathansimpsondesign" title="Code">💻</a></td><td align="center"><a href="https://github.com/mikehazell"><img src="https://avatars0.githubusercontent.com/u/814227?v=4" width="100px;" alt="Mike"/><br /><sub><b>Mike</b></sub></a><br /><a href="https://github.com/keystonejs/keystone-5/commits?author=mikehazell" title="Code">💻</a></td></tr><tr><td align="center"><a href="https://github.com/molomby"><img src="https://avatars0.githubusercontent.com/u/2416367?v=4" width="100px;" alt="John Molomby"/><br /><sub><b>John Molomby</b></sub></a><br /><a href="https://github.com/keystonejs/keystone-5/commits?author=molomby" title="Code">💻</a></td><td align="center"><a href="https://dominik-wilkowski.com"><img src="https://avatars3.githubusercontent.com/u/1266923?v=4" width="100px;" alt="Dominik Wilkowski"/><br /><sub><b>Dominik Wilkowski</b></sub></a><br /><a href="https://github.com/keystonejs/keystone-5/commits?author=dominikwilkowski" title="Code">💻</a></td><td align="center"><a href="https://github.com/Noviny"><img src="https://avatars1.githubusercontent.com/u/15622106?v=4" width="100px;" alt="Ben Conolly"/><br /><sub><b>Ben Conolly</b></sub></a><br /><a href="https://github.com/keystonejs/keystone-5/commits?author=Noviny" title="Code">💻</a></td><td align="center"><a href="https://github.com/jaredcrowe"><img src="https://avatars1.githubusercontent.com/u/4995433?v=4" width="100px;" alt="Jared Crowe"/><br /><sub><b>Jared Crowe</b></sub></a><br /><a href="https://github.com/keystonejs/keystone-5/commits?author=jaredcrowe" title="Code">💻</a></td><td align="center"><a href="https://www.linkedin.com/in/gautamsi"><img src="https://avatars2.githubusercontent.com/u/5769869?v=4" width="100px;" alt="Gautam Singh"/><br /><sub><b>Gautam Singh</b></sub></a><br /><a href="https://github.com/keystonejs/keystone-5/commits?author=gautamsi" title="Code">💻</a></td><td align="center"><a href="https://github.com/lukebatchelor"><img src="https://avatars2.githubusercontent.com/u/18694878?v=4" width="100px;" alt="lukebatchelor"/><br /><sub><b>lukebatchelor</b></sub></a><br /><a href="https://github.com/keystonejs/keystone-5/commits?author=lukebatchelor" title="Code">💻</a></td><td align="center"><a href="http://www.ticidesign.com"><img src="https://avatars2.githubusercontent.com/u/289889?v=4" width="100px;" alt="Ticiana de Andrade"/><br /><sub><b>Ticiana de Andrade</b></sub></a><br /><a href="https://github.com/keystonejs/keystone-5/commits?author=ticidesign" title="Code">💻</a></td></tr><tr><td align="center"><a href="https://github.com/aghaabbasq"><img src="https://avatars2.githubusercontent.com/u/17919384?v=4" width="100px;" alt="aghaabbasq"/><br /><sub><b>aghaabbasq</b></sub></a><br /><a href="https://github.com/keystonejs/keystone-5/commits?author=aghaabbasq" title="Code">💻</a></td><td align="center"><a href="http://ajaymathur.github.io/"><img src="https://avatars1.githubusercontent.com/u/9667784?v=4" width="100px;" alt="Ajay Narain Mathur"/><br /><sub><b>Ajay Narain Mathur</b></sub></a><br /><a href="https://github.com/keystonejs/keystone-5/commits?author=ajaymathur" title="Code">💻</a></td></tr></table>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will this make a comeback later?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep, just taking it out of the readme because the formatting is gross. We're planning to publish a page on the website for it so this is absolutely an interim step!

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We're moving it to CONTRIBUTING.md 👍
https://github.com/keystonejs/keystone-5/pull/904


<!-- ALL-CONTRIBUTORS-LIST:END -->

This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
Copyright (c) 2019 Jed Watson. Licensed under the MIT License.
6 changes: 6 additions & 0 deletions demo-projects/blog/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,9 @@ You can change the port that this demo runs on by setting the `PORT` environment
```sh
PORT=5000 bolt start blog
```

## TODO: Permissions and Authorisation

Although the "Password" auth strategy is enabled for the Admin UI on this project, we haven't implemented any restrictions on the GraphQL API yet. So unauthenticated users are able to create and destroy admin users (!)

See the [Access Control](https://v5.keystonejs.com/guides/access-control) documentation for information on how to do this.
8 changes: 6 additions & 2 deletions website/src/components/Header.js
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ const Logo = () => (
<abbr
css={{
cursor: 'help',
fontSize: '1.66em',
fontSize: '1.2em',
marginLeft: '0.2em',
textDecoration: 'none',
}}
Expand Down Expand Up @@ -134,7 +134,11 @@ const Nav = ({ toggleMenu }) => (
{name}
</NavItem>
))}
<NavItem href="https://github.com/keystonejs/keystone-5" title="Opens in new window">
<NavItem
href="https://github.com/keystonejs/keystone-5"
title="Opens in new window"
target="_blank"
>
GitHub
<NewWindowIcon />
</NavItem>
Expand Down
28 changes: 23 additions & 5 deletions website/src/pages/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -55,12 +55,27 @@ const Hero = () => (
})}
>
<InnerLayout>
<Heading>Keystone 5</Heading>
<Heading>
Keystone 5
<abbr
css={{
cursor: 'help',
// fontSize: '0.8em',
marginLeft: '0.2em',
textDecoration: 'none',
fontWeight: 'normal',
}}
title="Keystone 5 is currently in alpha"
>
(α)
</abbr>
</Heading>

<div css={{ color: colors.N80 }}>
<p>A scalable platform and CMS to build Node.js applications.</p>
<p>
Includes first-class GraphQL support, a modular architecture and an improved Admin UI.
Keystone 5 introduces first-class GraphQL support, a new extensible architecture, and an
improved Admin UI.
</p>
</div>
<ButtonWrapper>
Expand Down Expand Up @@ -88,9 +103,12 @@ const Hero = () => (
</Button>
</ButtonWrapper>
<SmDeviceIllustration />
<p css={{ color: colors.N40, fontSize: '0.85em' }}>
Keystone 5 is currently in alpha release and under intensive development by{' '}
<a href="https://www.thinkmill.com.au">Thinkmill</a> and contributors around the world.
<p css={{ color: colors.N40, fontSize: '0.9em' }}>
Keystone 5 is currently in alpha and under intensive development by{' '}
<a css={{ color: colors.N80 }} href="https://www.thinkmill.com.au">
Thinkmill
</a>{' '}
and contributors around the world.
</p>
<div css={mq({ display: 'flex', margin: [`2em auto`, `2em auto`, `2em 0`] })}>
<IconTwitter href="https://twitter.com/keystonejs" target="_blank" title="Twitter" />
Expand Down