Code Monkey home page Code Monkey logo

keystone-1's Introduction

KeystoneJS


A scalable platform and CMS to build Node.js applications.

schema => ({ GraphQL, AdminUI })


Keystone comes with first-class GraphQL support, a highly extensible architecture, and a wonderful Admin UI.

Looking for Keystone v4.x / Keystone Classic? Head over to keystone-classic.

Build Status slack Supported by Thinkmill

Contents

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 KeystoneJS' 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 authentication & 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, Gatsby and Next.js websites, Mobile applications and more. It also makes a great Headless CMS.

Getting Started

To get up and running with a basic project template, run the following commands.

yarn create keystone-app my-app
cd my-app
yarn start

For more details and system requirements, check out the 5 Minute Quick Start Guide.

Documentation

The API documentation contains a reference for all KeystoneJS packages.

For walk-throughs and discussions, see the Guides documentation.

Contributing

This project follows the all-contributors specification.

Contributions of any kind are welcome!

You will find the set-up steps in this readme and full release processes and project guidelines in CONTRIBUTING.md.

Contributors

We'd like to start by thanking all our wonderful contributors: (emoji key):


Jed Watson

๐Ÿ’ป

Jess Telford

๐Ÿ’ป

Tim Leslie

๐Ÿ’ป

Mitchell Hamilton

๐Ÿ’ป

Joss Mackison

๐Ÿ’ป

Nathan Simpson

๐Ÿ’ป

Mike

๐Ÿ’ป

John Molomby

๐Ÿ’ป ๐Ÿ›

Dominik Wilkowski

๐Ÿ’ป

Ben Conolly

๐Ÿ’ป ๐Ÿšง ๐Ÿ”ง

Jared Crowe

๐Ÿ’ป

Gautam Singh

๐Ÿ’ป

lukebatchelor

๐Ÿ’ป

Ticiana de Andrade

๐Ÿ’ป

aghaabbasq

๐Ÿ’ป

Ajay Narain Mathur

๐Ÿ’ป

mshavliuk

๐Ÿ› ๐Ÿ’ป

Wes Bos

๐Ÿ“– ๐Ÿค” ๐Ÿšง

vlad-elagin

๐Ÿ“–

Olya-Yer

๐Ÿ›

1337cookie

๐Ÿ“–

Mike

๐Ÿค” ๐Ÿ“† ๐Ÿ‘€ ๐Ÿ’ป

Jordan Overbye

๐Ÿ’ป ๐Ÿ“–

prvit

๐Ÿ“–

Kennedy Baird

๐Ÿ“–

Thiago De Bastos

๐Ÿ“–

Daniel Cousens

๐Ÿ“–

Simon Vrachliotis

๐Ÿ’ก โœ… ๐Ÿ“น

Charles Dang

๐Ÿ’ป ๐Ÿ“–

dzigg

๐Ÿ“–

Cristian Mos

๐Ÿ“–

Arnaud Zheng

๐Ÿ“–

Ashinze Ekene

๐Ÿ“–

Fabyao

๐Ÿ“–

Marcos RJJunior

๐Ÿ’ป

Ginkgoch

๐Ÿ“–

MaisaMilena

๐Ÿ“–

Martin Pham

๐Ÿ›

Justin Smith

๐Ÿ“–

Gabriel Petrovay

๐Ÿ’ป ๐Ÿ“–

Liam Clarke

๐Ÿ“–

Vladimir Barcovsky

๐Ÿ’ป

Demo Projects

These projects are designed to show off different aspects of KeystoneJS features at a range of complexities (from a simple Todo App to a complex Meetup Site).

See the demo-projects/README.md docs to get started.

Development Practices

All source code should be formatted with Prettier. Code is not automatically formatted in commit hooks to avoid unexpected behaviour, so we recommended using an editor plugin to format your code as you work. You can also run yarn format to prettier all the things. The lint script will validate source code with both ESLint and prettier.

Setup

Keystone 5 is set up as a monorepo, using Yarn Workspaces. Make sure to install Yarn if you haven't already.

First, clone the Keystone 5 repository

git clone https://github.com/keystonejs/keystone-5.git

Also make sure you have a local MongoDB server running (instructions).

Then install the dependencies and start the test project:

yarn
yarn dev

See demo-projects/README.md for more details on the available demo projects.

Note For Windows Users

While running yarn on Windows, the process may fail with an error such as this:

Error: EPERM: operation not permitted, symlink 'C:\Users\user\Documents\keystone-5\packages\arch\packages\alert\src\index.js' -> 'C:\Users\user\Documents\keystone-5\packages\arch\packages\alert\dist\alert.cjs.js.flow'

This is due to permission restrictions regarding the creation of symbolic links. To solve this, you should enable Windows' Developer Mode and run yarn again.

Testing

Keystone uses Jest for unit tests and Cypress for end-to-end tests. All tests can be run locally and on CircleCI.

Unit Tests

To run the unit tests, run the script:

yarn jest

Unit tests for each package can be found in packages/<package>/tests and following the naming pattern <module>.test.js. To see test coverage of the files touched by the unit tests, run:

yarn jest --coverage

To see test coverage of the entire monorepo, including files which have zero test coverage, use the special script:

yarn coverage

End-to-End Tests

Keystone tests end-to-end functionality with the help of Cypress. Each project (ie; test-projects/basic, test-projects/login, etc) have their own set of Cypress tests. To run an individual project's tests, cd into that directory and run:

yarn cypress:run

Cypress can be run in interactive mode from project directories with its built in GUI, which is useful when developing and debugging tests:

cd test-projects/basic && yarn cypress:open

End-to-end tests live in project/**/cypress/integration/*spec.js. It is possible to run all cypress tests at once from the monorepo root with the command:

yarn cypress:run

NOTE: The output from this command will mix together the output from each project being tested in parallel. This is only recommended as sanity check before pushing code.

Running a CI environment locally

Setting up CircleCI CLI tool

Install the circleci cli tool:

If you've already got Docker For Mac installed (recommended)

brew install --ignore-dependencies circleci

If you do not have Docker installed

brew install circleci

Then make sure docker is able to share the following directories (in Docker for Mac, go Preferences > File Sharing):

  • The keystone 5 repo
  • /Users/<your username>/.circleci

Run CI tests locally

Make sure Docker is running.

Execute the tests:

# Clean up the node_modules folders so everything is installed fresh
yarn clean

# Run the circle CI job
circleci local execute --job simple_tests

Where simple_tests can be replaced with any job listed in .circleci/config.yml under the jobs: section.

Code of Conduct

KeystoneJS adheres to the Contributor Covenant Code of Conduct.

License

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

keystone-1's People

Contributors

allcontributors[bot] avatar barrythepenguin avatar bartduisters avatar dcousens avatar dhuang612 avatar dominikwilkowski avatar emmatown avatar gautamsi avatar github-actions[bot] avatar jaredcrowe avatar jedwatson avatar jesstelford avatar jordanoverbye avatar jossmac avatar liamattclarke avatar madebymike avatar mikehazell avatar molomby avatar nathsimpson avatar noviny avatar sarneaud avatar seandoylegit avatar simonswiss avatar singharmani avatar thiagodebastos avatar ticidesign avatar timl628 avatar timleslie avatar vultraz avatar wesbos avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.