From ccd9e0a10cf65814a99bff6190a2c6f8650596cc Mon Sep 17 00:00:00 2001 From: Jessica Parsons Date: Wed, 8 Feb 2017 09:43:52 -0800 Subject: [PATCH] Intro docs (#233) * Draft of Intro/Core Concepts + partial draft of Quick Start * Revise Intro doc * Quick Start draft complete * Revise Quick Start * Fix editorial workflow description in intro.md --- docs/images/github-oauth.png | Bin 0 -> 60380 bytes docs/intro.md | 112 ++++++++++++++++++++ docs/quick-start.md | 199 +++++++++++++++++++++++++++++++++++ 3 files changed, 311 insertions(+) create mode 100644 docs/images/github-oauth.png create mode 100644 docs/intro.md create mode 100644 docs/quick-start.md diff --git a/docs/images/github-oauth.png b/docs/images/github-oauth.png new file mode 100644 index 0000000000000000000000000000000000000000..e7cf7d23cb07d745f438977f06ba6b95de38316a GIT binary patch literal 60380 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 bLl81#()C$?{rN0WkeiBv`nxK*FG2qcYA`U? literal 0 HcmV?d00001 diff --git a/docs/intro.md b/docs/intro.md new file mode 100644 index 00000000..c2b7b7dc --- /dev/null +++ b/docs/intro.md @@ -0,0 +1,112 @@ +# Introduction + +Netlify CMS is a Content Management System for static sites, allowing collaborators to create, edit, review, and publish content without writing code or dealing with version control. It brings the ease of WordPress-style editing to the simplicity and speed of static sites. + +At its core, Netlify CMS is an open-source React app that acts as a wrapper for the Git workflow, using the GitHub API. This allows for many advantages, including: + +* **Fast, web-based UI** - with rich-text editing, real-time preview, and drag-and-drop media uploads +* **Platform agnostic** - works with most static site generators +* **Easy installation** - add two files to your site and hook up the backend by including in your build process or linking to our CDN +* **Modern authentication** - using GitHub and JSON web tokens +* **Flexible content types** - specify an unlimited number of content types with custom fields +* **Fully extensible** - create custom-styled previews, UI widgets, and editor plugins + +# Core Concepts + +## The Admin Interface + +The admin interface is a single-page app with the entry point stored in a static `/admin` folder you add to the root of your site. You can include it with a simple `index.html` file that loads the necessary CSS and JS files from from a CDN: + +``` html + + + + + + Content Manager + + + + + + + + +``` + +The JS is also available via npm and can be integrated into your regular build process. + +### Editorial Workflow + +Netlify CMS has an optional [editorial workflow](https://github.com/netlify/netlify-cms/blob/master/docs/editorial_workflow.md) that translates common Git commands into familiar language in a simple UI: + +Actions in Netlify UI... | Perform these Git actions +--- | --- +Save draft | Commits to a new branch, and opens a pull request +Edit draft | Pushes another commit to the draft branch/pull request +Approve and publish draft | Merges pull request and deletes branch + +## Configuration + +All configuration is handled in a single `config.yml` file, also stored in the `/admin` folder. A simple version might look like this: + +``` yaml +backend: + name: github + repo: owner/repo # Path to your Github repository + branch: master # Branch to update (master by default) + +media_folder: "img/uploads" # Folder where user uploaded files should go + +collections: # A list of collections the CMS should be able to edit + - name: "post" # Used in routes, ie.: /admin/collections/:slug/edit + label: "Post" # Used in the UI, ie.: "New Post" + folder: "_posts" # The path to the folder where the documents are stored + create: true # Allow users to create new documents in this collection + fields: # The fields each document in this collection have + - {label: "Title", name: "title", widget: "string", tagname: "h1"} + - {label: "Body", name: "body", widget: "markdown"} + - {label: "Foo", name: "foo", widget: "foo"} + - {label: "Publish Date", name: "date", widget: "datetime"} +``` + +### Backend + +Because Netlify CMS is a wrapper for the GitHub API, the "backend" is a repo stored on GitHub. *(Using a different Git host? File a [feature request](https://github.com/netlify/netlify-cms/issues), or [help us add it](https://github.com/netlify/netlify-cms/blob/master/CONTRIBUTING.md)!)* For authentication, you can connect to GitHub using Netlify’s [Authentication Provider feature](https://www.netlify.com/docs/authentication-providers), or you can roll your own. + +### Collections + +All content managed by Netlify CMS is organized in Collections—groups of files such as: + +* blog posts +* portfolio samples +* product listings +* podcast episodes + +You point to where the files are stored, and specify the fields that define them. The `body` field typically stores the main text of a file, while any other fields are included at the top of the document in the front matter. They can be required, optional, or hidden, and can have preset defaults. + +### Widgets + +Widgets define the data type and interface for entry fields. Netlify CMS comes with several built-in widgets, including: + +Widget | UI | Data Type +--- | --- | --- +`string` | text input | string +`number` | text input with `+` and `-` buttons | number +`markdown` | rich text editor with raw option | markdown-formatted string +`datetime` | date picker widget | ISO date string +`image` | file picker widget with drag-and-drop | file path saved as string, image uploaded to media folder + +We’re always adding new widgets, and you can also create your own. + +## Customization + +Netlify CMS exposes a `window.CMS` global object that you can use to register custom widgets, previews, and editor plugins. The available methods are: + +* `registerPreviewStyle` - register a custom stylesheet to match the editor preview pane to your site style + +* `registerPreviewTemplate` - registers a template to determine how fields are displayed in the preview, customizable for each collection + +* `registerWidget` - registers a custom widget + +* `registerEditorComponent` - adds a block component to the Markdown editor diff --git a/docs/quick-start.md b/docs/quick-start.md new file mode 100644 index 00000000..32df5442 --- /dev/null +++ b/docs/quick-start.md @@ -0,0 +1,199 @@ +# Quick Start + +There are many ways to add Netlify CMS to your static site. This guide will take you through one of the quickest, which takes advantage of Netlify's hosting and authentication provider services. + +## Storage and Authentication + +Netlify CMS relies on the GitHub API for managing files, so you'll need to have your site stored in a GitHub repo. (If you're partial to another Git hosting service, you can file a [feature request](https://github.com/netlify/netlify-cms/issues), or [help us add it](https://github.com/netlify/netlify-cms/blob/master/CONTRIBUTING.md).) To connect to the repo and make changes, the app needs to authenticate with the GitHub API. You can roll your own service for doing this, but we're going to use Netlify. + +### Hosting with Netlify + +In order to use Nelify's authentication provider service, you'll need to connect your site repo with Netlify. Netlify has published a general [Step-by-Step Guide](https://www.netlify.com/blog/2016/10/27/a-step-by-step-guide-deploying-a-static-site-or-single-page-app/) for this, along with detailed guides for many popular static site generators, including [Jekyll](https://www.netlify.com/blog/2015/10/28/a-step-by-step-guide-jekyll-3.0-on-netlify/), [Hugo](https://www.netlify.com/blog/2016/09/21/a-step-by-step-guide-hugo-on-netlify/), [Hexo](https://www.netlify.com/blog/2015/10/26/a-step-by-step-guide-hexo-on-netlify/), [Middleman](https://www.netlify.com/blog/2015/10/01/a-step-by-step-guide-middleman-on-netlify/), and more. + +### Authenticating with GitHub + +In order to connect Netlify CMS with your GitHub repo, you'll first need to register it as an authorized application with your GitHub account: + 1. Go to your account **Settings** page on GitHub, and click **Oauth Applications** under **Developer Settings** (or use [this shortcut](https://github.com/settings/developers)). + 2. Click **Register a new application**. + 3. For the **Authorization callback URL**, enter `https://api.netlify.com/auth/done`. The other fields can contain anything you want. + +![GitHub Oauth Application setup example](images/github-oauth.png?raw=true) + +When you complete the registration, you'll be given a **Client ID** and a **Client Secret** for the app. You'll need to add these to your Netlify project: + 1. Go to your [**Netlify dashboard**](https://app.netlify.com/) and click on your project. + 2. Click the **Access** tab. + 3. Under **Authentication Providers**, click **Install Provider**. + 4. Select GitHub and enter the **Client ID** and **Client Secret**, then save. + +## App File Structure +All Netlify CMS files are contained in a static `admin` folder, stored at the root of the generated site. Where you store this in the source files depends on your static site generator. Here's the the static file location for a few of the most popular static site generators: + +These generators... | store static files in +--- | --- +Jekyll, GitBook | `/` (project root) +Hugo | `/static` +Hexo, Middleman | `/source` + +If your generator isn't listed here, you can check its documentation, or as a shortcut, look in your project for a `CSS` or `images` folder. They're usually processed as static files, so it's likely you can store your `admin` folder next to those. (When you've found the location, feel free to add it to these docs!). + +Inside the `admin` folder, you'll create two files: + +``` +admin + ├ index.html + └ config.yml +``` + +The first file, `admin/index.html`, is the entry point for the Netlify CMS admin interface. This means that users can navigate to `yoursite.com/admin` to access it. On the code side, it's a basic HTML starter page that loads the necessary CSS and JavaScript files. In this example, we pull those files from a public CDN: + +``` html + + + + + + Content Manager + + + + + + + + +``` + +The second file, `admin/config.yml`, is the heart of your Netlify CMS installation, and a bit more complex. The next section covers the details. + +## Configuration +Configuration will be different for every site, so we'll break it down into parts. All code snippets in this section will be added to your `admin/config.yml` file. + +### Backend +Because we're using GitHub and Netlify for our hosting and authentication, backend configuration is fairly strightforward. You can start your `config.yml` file with these lines: + +``` yaml +backend: + name: github + repo: owner-name/repo-name # Path to your Github repository + branch: master # Branch to update +``` + +This names GitHub as the authentication provider, points to the repo location on github.com, and declares the branch where you want to merge changes. If you leave out the `branch` declaration, it will default to `master`. + +### Editorial Workflow +By default, saving a post in the CMS interface will push a commit directly to the branch specified in `backend`. However, you also have the option to enable the [Editorial Workflow](editorial_workflow.md), which adds an interface for drafting, reviewing, and approving posts. To do this, simply add this line to your `config.yml`: + +``` yaml +publish_mode: editorial_workflow +``` + +### Media and Public Folders +Netlify CMS allows users to upload images directly within the editor. For this to work, the CMS needs to know where to save them. If you already have an `images` folder in your project, you could use its path, possibly creating an `uploads` sub-folder, for example: + +``` yaml +media_folder: "images/uploads" # Media files will be stored in the repo under images/uploads +``` + +If you're creating a new folder for uploaded media, you'll need to know where your static site generator expects static files. You can refer to the paths outlined above in [App File Structure](#app-file-structure), and put your media folder in the same location where you put the `admin` folder. + +Note that the`media_folder` file path is relative to the project root, so the example above would work for Jekyll, GitBook, or any other generator that stores static files at the project root. It would not, however, work for Hugo, Hexo, Middleman, or others that use a different path. Here's an example that could work for a Hugo site: + +``` yaml +media_folder: "static/images/uploads" # Media files will be stored in the repo under static/images/uploads +public_folder: "/images/uploads" # The src attribute for uploaded media will begin with /images/uploads +``` + +This configuration adds a new setting, `public_folder`. While `media_folder` specifies where uploaded files will be saved in the repo, `public_folder` indicates where they can be found in the generated site. This path is used in image `src` attributes and is relative to the file where it's called. For this reason, we usually start the path at the site root, using the opening `/`. + +>If `public_folder` is not set, Netlify CMS will default to the same value as `media_folder`, adding an opening `/` if one is not included. + +### Collections +Collections define the structure for the different content types on your static site. Since every site is different, the `collections` settings will be very different from one site to the next. Let's say your site has a blog, with the posts stored in `_posts/blog`, and files saved in a date-title format, like `1999-12-31-lets-party.md`. Each post +begins with settings in yaml-formatted front matter, like so: + +``` yaml +--- +layout: blog +title: "Let's Party" +date: 1999-12-31 11:59:59 -0800 +thumbnail: "/images/prince.jpg" +rating: 5 +--- + +This is the post body, where I write about our last chance to party before the Y2K bug destroys us all. +``` + +Given this example, our `collections` settings would look like this: + +``` yaml +collections: + - name: "blog" # Used in routes, e.g. /admin/collections/blog + label: "Blog" # Used in the UI + folder: "_posts/blog" # The path to the folder where the documents are stored + create: true # Allow users to create new documents in this collection + slug: "{{year}}-{{month}}-{{day}}-{{slug}}" # Filename template i.e. YYYY-MM-DD-title.md + fields: # The fields for each document, usually in front matter + - {label: "Layout", name: "layout", widget: "hidden", default: "blog"} + - {label: "Title", name: "title", widget: "string"} + - {label: "Publish Date", name: "date", widget: "datetime"} + - {label: "Featured Image", name: "thumbnail", widget: "image"} + - {label: "Rating (scale of 1-5)", name: "rating", widget: "number"} + - {label: "Body", name: "body", widget: "markdown"} +``` + +Let's break that down: + + + + + + + + + + + + + + + + + + + + + + + + + +
namePost type identifier, used in routes. Must be unique.
labelWhat the post type will be called in the admin UI.
folderWhere files of this type are stored, relative to the repo root.
createSet to true to allow users to create new files in this collection. +
slugTemplate for filenames. {{year}}, {{month}}, and {{day}} will pull from the post's date field or save date. {{slug}} is a url-safe version of the post's title. Default is simply {{slug}}. +
fieldsFields listed here are shown as fields in the content editor, then saved as front matter at the beginning of the document (except for body, which follows the front matter). Each field contains the following properties: +
    +
  • label: Field label in the editor UI
  • +
  • name: Field name in the document front matter
  • +
  • widget: Determines UI style and value data type (details below)
  • +
  • default (optional): Sets a default value for the field
  • +
+
+ +As described above, the `widget` property specifies a built-in or custom UI widget for a given field. The first field in the example, `layout`, uses a `hidden` widget. This widget will not show in the editor UI, but will be saved with the `default` value (assuming it's been set) in the document front matter. The rest of the widgets work as follows: + +Widget | UI | Data Type +--- | --- | --- +`string` | text input | string +`datetime` | date picker widget | ISO date string +`image` | file picker widget with drag-and-drop | file path saved as string, image uploaded to media folder +`number` | text input with `+` and `-` buttons | number +`markdown` | rich text editor with raw option | markdown-formatted string + + + +Based on this example, you can go through the post types in your site and add the appropriate settings to your `config.yml` file. Each post type should be listed as a separate node under the `collections` field. + +## Accessing the App + +With your configuration complete, it's time to try it out! Go to `yoursite.com/admin` and complete the login prompt to access the admin interface. To add users, simply add them as collaborators on the GitHub repo. + +Happy posting! \ No newline at end of file