Introduction

illustration of an amphora

"A new way to organize, edit, and deliver the web, one component at a time."

CircleCIarrow-up-right Coverage Statusarrow-up-right

Powering New York Magazinearrow-up-right, Vulturearrow-up-right, The Cutarrow-up-right, Grub Streetarrow-up-right. Created by New York Media.

Table of Contents

Introduction

Amphora is a mixin for Expressarrow-up-right that:

  • Composes components into renderable pages

  • Uses any key-value store of your choice (e.g., Mongo, Redis, LevelDB, etc.)

  • Provides an API for managing instances of components, uris, and pages

Components are reusable, configurable, self-contained bits of the web.arrow-up-right

Amphora is a core part of New York Media's Clay project, an open-source content management system.

It follows semver and is stable as of v1.0.0.

Installation

Usage

Clay separates concerns into two main areas: components and sites. Create two new directories in your project:

In your project's main server file (e.g. app.js), instantiate a new Amphora instance.

For additional configuration, you may pass in an Express app / router. You can also override the default templating engine(s) with your own.

How to create a component

Components in Clay have the following structure:

All of these files are optional.

How to create a template

The template you create is dependent on whichever renderer you'd like to use. The Clay Core team supports an HTML rendererarrow-up-right using Handlebarsarrow-up-right template, but the choice is yours. Either request a renderer or build one on your own!

How to create a schema

Kilnarrow-up-right uses a component's schema.yml to determine how it is edited. Visit the Kiln wikiarrow-up-right for examples of how to write schema files for your components.

Contribution

Fork the project and submit a PR on a branch that is not named master. We use linting tools and unit tests, which are built constantly using continuous integration. If you find a bug, it would be appreciated if you could also submit a branch with a failing unit test to show your case.

Advanced Topics

Last updated