+ {{ partial "edit-link" . }} +
+ {{ .Content }} +diff --git a/netlify.toml b/netlify.toml deleted file mode 100644 index aafbe6d1..00000000 --- a/netlify.toml +++ /dev/null @@ -1,3 +0,0 @@ -[build] -Command = "npm run build && cp example/* dist/" -Publish = "dist" diff --git a/website/.babelrc b/website/.babelrc new file mode 100644 index 00000000..a1b6bb78 --- /dev/null +++ b/website/.babelrc @@ -0,0 +1,7 @@ +{ + "presets": ["es2015"], + "plugins": [ + "syntax-object-rest-spread", + "transform-object-rest-spread" + ] +} \ No newline at end of file diff --git a/website/.nvmrc b/website/.nvmrc new file mode 100644 index 00000000..64f5a0a6 --- /dev/null +++ b/website/.nvmrc @@ -0,0 +1 @@ +node diff --git a/website/README.md b/website/README.md new file mode 100755 index 00000000..e6797129 --- /dev/null +++ b/website/README.md @@ -0,0 +1,19 @@ +# Netlify CMS Website & Docs + +This directory builds netlifycms.org. If you'd like to propose changes to the site or docs, you'll find the source files in here. + +## Local development + +The site is built with [Hugo](https://gohugo.io/), managed as an npm dependency via [hugo-bin](https://www.npmjs.com/package/hugo-bin). + +To run the site locally, you'll need to have [Node](https://nodejs.org) and [Yarn](https://yarnpkg.com/en/) installed on your computer. + +From your terminal window, `cd` into the `website` directory of the repo, and run + +```bash +yarn +yarn start +``` + +Then visit http://localhost:3000/ - BrowserSync will automatically reload CSS or +refresh the page when stylesheets or content changes. \ No newline at end of file diff --git a/website/config/variables.js b/website/config/variables.js new file mode 100644 index 00000000..96fec710 --- /dev/null +++ b/website/config/variables.js @@ -0,0 +1,45 @@ +// if you change these you must restart the server + +module.exports = { + + // colors + lightestGrey: '#E6E6E6', + lighterGrey: '#F7F8F8', + lightGrey: '#F6F6F6', + grey: '#313D3E', + darkGrey: '#2F3132', + darkerGrey: '#1C1E1E', + lightGreen: '#97bf2f', + green: '#C9FA4B', + darkGreen: '#7CA511', + + // typography + thin: 100, + light: 300, + regular: 400, + semibold: 500, + bold: 700, + black: 900, + + // fonts + roboto: "'Roboto', -apple-system, BlinkMacSystemFont, Helvetica, Arial, sans-serif", + + // padding + micro: '8px', + tiny: '16px', + small: '24px', + medium: '40px', + large: '64px', + xl: '104px', + xxl: '168px', + + // border radius + borderRadius: '4px', + largeBorderRadius: '10px', + + // responsive breakpoints + mobile: '480px', + tablet: '768px', + desktop: '960px', + display: '1200px' +} diff --git a/website/gulpfile.babel.js b/website/gulpfile.babel.js new file mode 100755 index 00000000..ee52417e --- /dev/null +++ b/website/gulpfile.babel.js @@ -0,0 +1,94 @@ +import gulp from "gulp"; +import cp from "child_process"; +import hugoBin from "hugo-bin" +import gutil from "gulp-util"; +import postcss from "gulp-postcss"; +import cssImport from "postcss-import"; +import neatgrid from "postcss-neat"; +import nestedcss from "postcss-nested"; +import colorfunctions from "postcss-colour-functions"; +import hdBackgrounds from "postcss-at2x"; +import cssvars from "postcss-simple-vars-async"; +import cssextend from "postcss-simple-extend"; +import styleVariables from "./config/variables"; +import BrowserSync from "browser-sync"; +import webpack from "webpack"; +import webpackConfig from "./webpack.conf"; + +const browserSync = BrowserSync.create(); +const defaultArgs = ["-d", "../dist", "-s", "site", "-v"]; + +gulp.task("hugo", (cb) => buildSite(cb)); +gulp.task("hugo-preview", (cb) => buildSite(cb, ["--buildDrafts", "--buildFuture"])); + +gulp.task("build", ["css", "js", "fonts", "images", "hugo"]); +gulp.task("build-preview", ["css", "js", "fonts", "images", "hugo-preview"]); + +gulp.task("css", () => ( + gulp.src("./src/css/**/*.css") + .pipe(postcss([ + cssImport({from: "./src/css/main.css"}), + neatgrid(), + nestedcss(), + colorfunctions(), + hdBackgrounds(), + cssextend(), + cssvars({variables: styleVariables})])) + .pipe(gulp.dest("./dist/css")) + .pipe(browserSync.stream()) +)); + +gulp.task("js", (cb) => { + const myConfig = Object.assign({}, webpackConfig); + + webpack(myConfig, (err, stats) => { + if (err) throw new gutil.PluginError("webpack", err); + gutil.log("[webpack]", stats.toString({ + colors: true, + progress: true + })); + browserSync.reload(); + cb(); + }); +}); + +gulp.task("fonts", () => ( + gulp.src("./src/fonts/**/*") + .pipe(gulp.dest("./dist/fonts")) + .pipe(browserSync.stream()) +)); + +gulp.task("images", () => ( + gulp.src("./src/img/**/*") + .pipe(gulp.dest("./dist/img")) + .pipe(browserSync.stream()) +)); + +gulp.task("server", ["hugo", "css", "js", "fonts", "images"], () => { + browserSync.init({ + server: { + baseDir: "./dist" + }, + notify: false + }); + gulp.watch("./src/js/**/*.js", ["js"]); + gulp.watch("./src/css/**/*.css", ["css"]); + gulp.watch("./src/img/**/*", ["images"]); + gulp.watch("./src/fonts/**/*", ["fonts"]); + gulp.watch("./site/**/*", ["hugo"]); +}); + +function buildSite(cb, options) { + const args = options ? defaultArgs.concat(options) : defaultArgs; + + return cp.spawn(hugoBin, args, {stdio: "inherit"}).on("close", (code) => { + if (code === 0) { + browserSync.reload(); + cb(); + } else { + browserSync.notify("Hugo build failed :("); + cb("Hugo build failed"); + } + }); +} + diff --git a/website/package.json b/website/package.json new file mode 100755 index 00000000..94f0cf82 --- /dev/null +++ b/website/package.json @@ -0,0 +1,53 @@ +{ + "name": "victor-hugo", + "version": "1.0.0", + "description": "Victor Hugo is a Hugo boilerplate for creating truly epic websites!", + "main": "index.js", + "scripts": { + "hugo": "gulp hugo", + "webpack": "gulp webpack", + "build": "gulp build", + "build-preview": "gulp build-preview", + "start": "gulp server", + "lint": "eslint src" + }, + "author": "", + "license": "MIT", + "dependencies": { + "autoprefixer": "^6.3.7", + "babel-eslint": "^6.1.2", + "babel-loader": "^6.2.4", + "babel-plugin-syntax-object-rest-spread": "^6.13.0", + "babel-plugin-transform-class-properties": "^6.10.2", + "babel-plugin-transform-object-assign": "^6.8.0", + "babel-plugin-transform-object-rest-spread": "^6.8.0", + "babel-preset-es2015": "^6.9.0", + "babel-register": "^6.11.6", + "browser-sync": "^2.13.0", + "css-loader": "^0.23.1", + "eslint": "^3.1.1", + "eslint-plugin-import": "^1.11.1", + "exports-loader": "^0.6.3", + "file-loader": "^0.9.0", + "gulp": "^3.9.1", + "gulp-babel": "^6.1.2", + "gulp-postcss": "^6.1.1", + "gulp-util": "^3.0.7", + "hugo-bin": "^0.18.0", + "imports-loader": "^0.6.5", + "postcss-at2x": "^2.0.0", + "postcss-colour-functions": "^1.5.1", + "postcss-cssnext": "^2.7.0", + "postcss-import": "^8.1.2", + "postcss-loader": "^0.9.1", + "postcss-neat": "^2.5.2", + "postcss-nested": "^1.0.0", + "postcss-simple-extend": "^1.0.0", + "postcss-simple-vars-async": "^1.2.1", + "url-loader": "^0.5.7", + "webpack": "^1.13.1", + "whatwg-fetch": "^1.0.0", + "yamljs": "^0.2.8" + }, + "devDependencies": {} +} diff --git a/website/site/config.yaml b/website/site/config.yaml new file mode 100755 index 00000000..63fa782b --- /dev/null +++ b/website/site/config.yaml @@ -0,0 +1,6 @@ +baseurl: "/" +languageCode: "en-us" +title: "Netlify CMS | Open-Source Content Management System" +disable404: true +pluralizeListTitles: false +metaDataFormat: "yaml" \ No newline at end of file diff --git a/website/site/content/.keep b/website/site/content/.keep new file mode 100755 index 00000000..e69de29b diff --git a/docs/architecture.md b/website/site/content/docs/architecture.md similarity index 98% rename from docs/architecture.md rename to website/site/content/docs/architecture.md index c0886eac..19f07cd7 100755 --- a/docs/architecture.md +++ b/website/site/content/docs/architecture.md @@ -1,3 +1,8 @@ +--- +title: Architecture +position: 90 +--- + # Technical Architecture Netlify CMS is a React application, using Redux for state management with immutable data structures (immutable.js). @@ -57,4 +62,4 @@ The control component receives three (3) callbacks as props: `onChange`, `onAddA Both control and preview widgets receive a `getAsset` selector via props. Displaying the media (or its URI) for the user should always be done via `getAsset`, as it returns an AssetProxy that can return the correct value for both medias already persisted on the server and cached media not yet uploaded. -The actual persistence of the content and medias inserted into the control component is delegated to the backend implementation. The backend will be called with the updated values and a list of assetProxy objects for each field of the entry, and should return a promise that can resolve into the persisted entry object and the list of the persisted media URIs. +The actual persistence of the content and medias inserted into the control component is delegated to the backend implementation. The backend will be called with the updated values and a list of assetProxy objects for each field of the entry, and should return a promise that can resolve into the persisted entry object and the list of the persisted media URIs. \ No newline at end of file diff --git a/docs/authentication-backends.md b/website/site/content/docs/authentication-backends.md similarity index 99% rename from docs/authentication-backends.md rename to website/site/content/docs/authentication-backends.md index 8fe4a917..0c379ae7 100644 --- a/docs/authentication-backends.md +++ b/website/site/content/docs/authentication-backends.md @@ -1,3 +1,8 @@ +--- +title: Authentication & Backends +position: 25 +--- + # Authentication & Backends Netlify CMS stores content in your GitHub repository. (GitLab and Bitbucket coming soon!) In order for this to work, you need to authenticate with GitHub, and that requires a server. We have a few options for handling this. diff --git a/docs/contributor-guide.md b/website/site/content/docs/contributor-guide.md similarity index 86% rename from docs/contributor-guide.md rename to website/site/content/docs/contributor-guide.md index d8c61225..9d59df31 100644 --- a/docs/contributor-guide.md +++ b/website/site/content/docs/contributor-guide.md @@ -1,3 +1,8 @@ +--- +title: Contributing +position: 100 +--- + # Welcome, contributors! We're hoping that Netlify CMS will do for the [JAMstack](https://www.jamstack.org) what WordPress did for dynamic sites back in the day. We know we can't do that without building a thriving community of contributors and users, and we'd love to have you join us. @@ -6,4 +11,4 @@ While we work on building this page (and you can help!), here are some links wit * [Project Milestones](https://github.com/netlify/netlify-cms/milestones) * [Code of Conduct](https://github.com/netlify/netlify-cms/blob/master/CODE_OF_CONDUCT.md) -* [Setup instructions and Contribution Guidelines](https://github.com/netlify/netlify-cms/blob/master/CONTRIBUTING.md) +* [Setup instructions and Contribution Guidelines](https://github.com/netlify/netlify-cms/blob/master/CONTRIBUTING.md) \ No newline at end of file diff --git a/docs/customization.md b/website/site/content/docs/customization.md similarity index 99% rename from docs/customization.md rename to website/site/content/docs/customization.md index 02d8b429..fa668dfd 100644 --- a/docs/customization.md +++ b/website/site/content/docs/customization.md @@ -1,3 +1,8 @@ +--- +title: Custom Previews +position: 50 +--- + # Customizing the Preview Pane The NetlifyCMS exposes a `window.CMS` global object that you can use to register custom widgets, previews and editor plugins. The available customization methods are: @@ -191,4 +196,4 @@ Registers a template for a collection. } } - ``` + ``` \ No newline at end of file diff --git a/docs/editorial-workflow.md b/website/site/content/docs/editorial-workflow.md similarity index 96% rename from docs/editorial-workflow.md rename to website/site/content/docs/editorial-workflow.md index 3ecf048e..089369ef 100755 --- a/docs/editorial-workflow.md +++ b/website/site/content/docs/editorial-workflow.md @@ -1,3 +1,8 @@ +--- +title: Editorial Workflow +position: 40 +--- + # Editorial Workflow ## Overview @@ -36,4 +41,4 @@ Actual data are stored in individual `json` files committed to this tree. Instead of adding logic to `CollectionPage` and `EntryPage`, the Editorial Workflow is implemented as Higher Order Components, adding UI and dispatching additional actions. -Furthermore, all editorial workflow state is managed in Redux - there's an `actions/editorialWorkflow.js` file and a `reducers/editorialWorkflow.js` file. +Furthermore, all editorial workflow state is managed in Redux - there's an `actions/editorialWorkflow.js` file and a `reducers/editorialWorkflow.js` file. \ No newline at end of file diff --git a/docs/examples.md b/website/site/content/docs/examples.md similarity index 92% rename from docs/examples.md rename to website/site/content/docs/examples.md index f570073a..0660a96f 100644 --- a/docs/examples.md +++ b/website/site/content/docs/examples.md @@ -1,3 +1,8 @@ +--- +title: Examples +position: 110 +--- + # Examples Do you have a great example? Submit a pull request to this page. @@ -5,4 +10,4 @@ Do you have a great example? Submit a pull request to this page. Name | Tools | Type | Example | More info | --- | --- | --- | --- | --- This Developing Journey | middleman | blog | [briandouglas.me](https://briandouglas.me) | [blog post](https://deploy-preview-496--www.netlify.com/blog/2017/04/18/blog-with-middleman-and-the-netlifycms/) -JAMstack Recipes | Hugo, Azure | demo | [jamstack-cms.netlify.com](http://jamstack-cms.netlify.com) | [blog post](http://conductofcode.io/post/managing-content-for-a-jamstack-site-with-netlify-cms/) +JAMstack Recipes | Hugo, Azure | demo | [jamstack-cms.netlify.com](http://jamstack-cms.netlify.com) | [blog post](http://conductofcode.io/post/managing-content-for-a-jamstack-site-with-netlify-cms/) \ No newline at end of file diff --git a/docs/extending.md b/website/site/content/docs/extending.md similarity index 98% rename from docs/extending.md rename to website/site/content/docs/extending.md index 35a803f6..940f8306 100755 --- a/docs/extending.md +++ b/website/site/content/docs/extending.md @@ -1,3 +1,8 @@ +--- +title: Extending Widgets +position: 60 +--- + # Extending With Widgets The NetlifyCMS exposes an `window.CMS` global object that you can use to register custom widgets, previews, and editor plugins. The available widget extension methods are: @@ -109,5 +114,4 @@ CMS.registerEditorComponent({ **Result:** -![youtube-widget](/img/youtube-widget.png) - +![youtube-widget](/img/youtube-widget.png) \ No newline at end of file diff --git a/docs/intro.md b/website/site/content/docs/intro.md similarity index 98% rename from docs/intro.md rename to website/site/content/docs/intro.md index f2494a09..3de7c032 100755 --- a/docs/intro.md +++ b/website/site/content/docs/intro.md @@ -1,3 +1,8 @@ +--- +title: Introduction +position: 0 +--- + # 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. @@ -99,5 +104,4 @@ Netlify CMS exposes a `window.CMS` global object that you can use to register cu * `registerWidget`: registers a custom widget. -* `registerEditorComponent`: adds a block component to the Markdown editor. - +* `registerEditorComponent`: adds a block component to the Markdown editor. \ No newline at end of file diff --git a/docs/quick-start.md b/website/site/content/docs/quick-start.md similarity index 99% rename from docs/quick-start.md rename to website/site/content/docs/quick-start.md index dad6bf34..613c8438 100755 --- a/docs/quick-start.md +++ b/website/site/content/docs/quick-start.md @@ -1,3 +1,8 @@ +--- +title: Quick Start +position: 20 +--- + # Quick Start Netlify CMS is adaptable to a wide variety of projects. The only inflexible requirement is that your site content must be written in markdown, JSON, YAML, or TOML files, stored in a repo on [GitHub](https://github.com/). (If you're partial to another Git hosting service, check out the PRs in progress for [GitLab](https://github.com/netlify/netlify-cms/pull/517) and [Bitbucket](https://github.com/netlify/netlify-cms/pull/525) support.) @@ -227,4 +232,4 @@ If you set your registration preference to "Invite only," you'll need to invite If you left your site registration open, or for return visits after comfirming an email invitation, you can access your site's CMS at `yoursite.com/admin`. -Happy posting! +Happy posting! \ No newline at end of file diff --git a/docs/test-drive.md b/website/site/content/docs/test-drive.md similarity index 98% rename from docs/test-drive.md rename to website/site/content/docs/test-drive.md index 90a5857c..4e697e34 100644 --- a/docs/test-drive.md +++ b/website/site/content/docs/test-drive.md @@ -1,3 +1,8 @@ +--- +title: Test Drive +position: 10 +--- + # Take a test drive Netlify CMS can run in any frontend web environment, but the quickest way to try it out is by running it on a pre-configured starter site with Netlify. Our example here is the [Kaldi coffee company template](https://github.com/netlify-templates/one-click-hugo-cms). Use the button below to build and deploy your own copy of the repository: @@ -25,4 +30,4 @@ Try adding and editing posts, or changing the content of the Products page. When ## More paths to explore - If you’d like to learn more about how it all works, check out the [Intro](/docs/intro). - To see how to integrate Netlify CMS into an existing project, go to the [Quick Start](/docs/quick-start). -- If you’d like to change how users log in to your site, read up on [Netlify Identity service](https://www.netlify.com/docs/identity). +- If you’d like to change how users log in to your site, read up on [Netlify Identity service](https://www.netlify.com/docs/identity). \ No newline at end of file diff --git a/docs/validation.md b/website/site/content/docs/validation.md similarity index 97% rename from docs/validation.md rename to website/site/content/docs/validation.md index 9b5b77ce..edb61a7a 100755 --- a/docs/validation.md +++ b/website/site/content/docs/validation.md @@ -1,3 +1,8 @@ +--- +title: Validation +position: 70 +--- + # Collection Field Validation ## Available validations to use on `config.yml`: @@ -51,4 +56,4 @@ You can also return a promise from `isValid`. While the promise is pending, the }; ``` -Note: Do not create a promise inside `isValid` - `isValid` is called right before trying to persist. This means that even if a previous promise was already resolved, when the user hits 'save', `isValid` will be called again. If it returns a new promise, it will be immediately marked as "in error" until the new promise resolves. +Note: Do not create a promise inside `isValid` - `isValid` is called right before trying to persist. This means that even if a previous promise was already resolved, when the user hits 'save', `isValid` will be called again. If it returns a new promise, it will be immediately marked as "in error" until the new promise resolves. \ No newline at end of file diff --git a/docs/widgets.md b/website/site/content/docs/widgets.md similarity index 98% rename from docs/widgets.md rename to website/site/content/docs/widgets.md index 66e1c159..eb2297ce 100644 --- a/docs/widgets.md +++ b/website/site/content/docs/widgets.md @@ -1,6 +1,9 @@ -# Configuring your site +--- +title: Widgets +position: 30 +--- -## Widgets +# Widgets Widgets define the data type and interface for entry fields. Netlify CMS comes with several built-in widgets, including: @@ -126,4 +129,4 @@ The following field configuration properties are specific to fields using the da Property | Accepted Values | Description --- | --- | --- `format` | string | format string uses Moment.js [tokens](https://momentjs.com/docs/#/parsing/string-format/) -`default` | boolean, string | can be a date string, or else an empty string - defaults to current date +`default` | boolean, string | can be a date string, or else an empty string - defaults to current date \ No newline at end of file diff --git a/website/site/content/pages/community.md b/website/site/content/pages/community.md new file mode 100644 index 00000000..faefcb17 --- /dev/null +++ b/website/site/content/pages/community.md @@ -0,0 +1,29 @@ +--- +title: Community +layout: community +url: /community + +headline: Be a part of building the CMS of the future. +subhead: We're serious about being community driven, so everyone is welcome to join our open, bi-weekly planning sessions. +primarycta: "[Register on Eventbrite →](https://www.eventbrite.com/e/netlify-cms-planning-session-bi-weekly-tickets-35794058994)" + +upcomingevent: + hook: The next development planning session is on + +howitworks: Every other week we have public development planning sessions. They're web based, last about an hour, and are geared toward contributors and those interested in contributing. Sessions currently take place every other Wednesday, 9am - 10am PT. + +howtojoin: | + **On the web:** + + 1. https://bluejeans.com/278173690 + + **By phone:** + + 1. [+1.408.740.7256](tel:+14087407256) (United States) + + [+1.408.317.9253](tel:+14083179253) (Alternate number) + + (http://bluejeans.com/numbers) + + 2. Enter Meeting ID: 278173690 +--- \ No newline at end of file diff --git a/website/site/data/.keep b/website/site/data/.keep new file mode 100755 index 00000000..e69de29b diff --git a/website/site/data/docs.yml b/website/site/data/docs.yml new file mode 100644 index 00000000..cbc20bb1 --- /dev/null +++ b/website/site/data/docs.yml @@ -0,0 +1,13 @@ +--- +styleoverrides: '/docs.css' +headline: Netlify builds, deploys, and hosts your front end. +bottomcta: + hook: Want to get started quick? + btns: + - type: primary + btntext: View our Templates + linksto: https://app.netlify.com/signup/templates + - type: secondary + btntext: Read our Tutorials + linksto: /tags/tutorial/ +--- \ No newline at end of file diff --git a/website/site/data/global.yaml b/website/site/data/global.yaml new file mode 100644 index 00000000..58255cc0 --- /dev/null +++ b/website/site/data/global.yaml @@ -0,0 +1,13 @@ +--- +footer: + hook: | + Host faster. + Manage easier. + Smile bigger. + headline: "Netlify is your one-stop web dev solution." + body: "Vestibulum rutrum quam vitae fringilla tincidunt. Suspendisse nec tortor urna. Ut laoreet sodales nisi, quis iaculis nulla iaculis vitae. Donec sagittis faucibu." + cta: + secondarycta: + copy: "Try it now FREE" + link: "/intro" +--- diff --git a/website/site/data/landing.yaml b/website/site/data/landing.yaml new file mode 100644 index 00000000..28dc6e36 --- /dev/null +++ b/website/site/data/landing.yaml @@ -0,0 +1,50 @@ +--- +hero: + headline: An open-source CMS for your Git workflow + subhead: | + - Content management in a single-page app + - Built in React.js with extensible components + - Integrate with any build tool + - Plug in to any static site generator + ctas: | + - [Take it for a test drive →](/docs/test-drive) +productvideo: + thumbnail: "/img/hero-graphic.jpg" + mp4: "/img/demo.mp4" + ogg: "/img/demo.ogg" + webm: "/img/demo.webm" + +thanksdevs: "**Thanks to all our contributors.**Keep shooting for the stars with Netlify CMS." + +collab: + hook: "Integrate the roles of developers, writers, and editors." + body: "Writers can focus on writing. Editors can approve content and publish with ease. Developers can use their favorite tools and libraries. **Netlify CMS keeps all of their contributions together, in Git.**" + graphicpath: "/img/collab.svg" + +featureshook: "Designed with developers in mind - it’s in our DNA." + +features: + - feature: "Fast, web-based UI" + description: "Built with React, featuring rich-text editing, real-time preview, and drag-and-drop media uploads." + - feature: "Platform agnostic" + description: "Works with most static site generators for sites stored in GitHub." + - feature: "Easy installation" + description: "Add two files to your site, include or link to the JS, and add your custom configuration." + - feature: "Modern authentication" + description: "Connect with Netflify's authentication service or roll your own, using GitHub and JSON web tokens." + - feature: "Flexible content types" + description: "Specify an unlimited number of content types with custom fields." + - feature: "Fully extensible" + description: "Create custom-styled previews, UI widgets, and editor plugins." + +featuresgraphic: "/img/helix.svg" + +inspiration: | + Netlify CMS is part of a long evolution in content management for the web. Even in the budding realm of the [JAMstack](https://www.jamstack.org) and [static site generators](https://www.staticgen.com), developers have a variety [“headless” CMS](http://www.headlesscms.org) options to choose from. + + Proprietary services like Contentful and DatoCMS provide the ease and polish of a concierge provider, while simple open source projects like Prose and Google Drive CMS provide targeted functionality for limited use cases. We love that these other projects help advance the modern web, and we believe there will always be a place for them in the JAMstack ecosystem. + + With Netlify CMS, we hope to carve a different niche. We aim to do for the JAMstack what WordPress did for dynamic sites back in the day. In other words, we want to build a CMS that is open-source but fully-featured and production-ready, that’s as easy to customize as it is to use, and that developers and content editors can build a community around. + + [Help us make it happen!](/docs/contributor-guide) +--- diff --git a/website/site/data/notifications.yml b/website/site/data/notifications.yml new file mode 100644 index 00000000..ec99f1b7 --- /dev/null +++ b/website/site/data/notifications.yml @@ -0,0 +1,16 @@ +notifications: + - loud: true + message: >- + Register to join us online for our next community dev meeting, every other + Wednesday at 9am-10am PT! + published: false + title: Netlify CMS Development Planning Sessions Promo + url: >- + https://www.eventbrite.com/e/netlify-cms-planning-session-bi-weekly-tickets-35794058994 + - loud: true + message: >- + We have a community on Gitter - join now to ask questions and discuss the + project with other devs! + published: true + title: Gitter shoutout + url: 'https://gitter.im/netlify/netlifycms' diff --git a/website/site/layouts/_default/list.html b/website/site/layouts/_default/list.html new file mode 100644 index 00000000..309272f4 --- /dev/null +++ b/website/site/layouts/_default/list.html @@ -0,0 +1,35 @@ +{{ partial "header" . }} + +
+ {{ partial "edit-link" . }} +
+ {{ .Content }} ++ As seen on... + +
+{{ .Site.Data.landing.collab.body | markdownify }}
+{{ .description | markdownify }}
+{{ .Site.Data.landing.inspiration | markdownify }}
+{{ .Params.howitworks | markdownify }}
+{{ .Params.howtojoin | markdownify }}
+