Everything Is A Cms

Alternatives To Everything Is A Cms
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Feather513
2 years ago5mitSwift
Feather is a modern Swift-based content management system powered by Vapor 4.
Eloquent Driver82
14 days ago2January 11, 202112mitPHP
A package that allows you to store Statamic entries in a database.
Everything Is A Cms53
3 years agoJavaScript
Cockpit Sql Driver29
a year ago6April 27, 2021mitPHP
SQL Driver for Cockpit CMS
Cloudcms Server19
17 days ago4otherJavaScript
Cloud CMS application server module for Node.js / Express. This module provides middleware for virtualized content retrieval, cluster-wide caching and broadcasting, tag processing and much more. It is available to be used in building Node.js-based applications that run against Cloud CMS.
Past15
4 years agootherJavaScript
Static7 基础管理系统
Gitana Javascript Driver112a month ago3March 21, 20216apache-2.0JavaScript
Cloud CMS JavaScript Driver Library
Kirby Mandrill Driver9
8 years agomitPHP
The missing mail driver for the awesome Kirby CMS.
10layer Ls7
9 years ago1otherPHP
10Layer LS
Fal Flysystem5
7 years agogpl-3.0PHP
[WIP] File Abstraction Layer driver for TYPO3 CMS that uses Flysystem
Alternatives To Everything Is A Cms
Select To Compare


Alternative Project Comparisons
Readme

Everything is a CMS!

This code supports the demo from the Everything is a CMS! talk from Next.js Conf 2020.

Its purpose is to demonstrate that we can easily swap data sources in and out by building abstracted and normalized engines. There are two types of engines, both which are shown within this project:

  • API-Based
  • File-Based

Currently, the supported data sources are:

Getting Started

Note: This project is built to run in development mode for demo purposes. I haven't tested the build and deploy processes.

To run the project, start the Next server:

$ npm run dev

And then visit your browser at localhost:3000.

See below for working with the various data engines and their drivers (i.e. sources).

Environment Variables

There are a series of environment variables that are required to work with various data sources:

Data Source Required Environment Variables Notes
Bear BEAR_DATABASE_PATH Local absolute path to Bear's SQLite database.
BEAR_TAG Notes are filtered by tag. This is the name of the tag without the #.
Contentful CONTENTFUL_ACCESS_TOKEN
CONTENTFUL_CONTENT_TYPE_ID This is a word you control when creating the content type. Usually, if the type is called Sandwich, the ID will be sandwich.
CONTENTFUL_SPACE_ID
Dropbox DROPBOX_ACCESS_TOKEN Create an app to generate a token.
DROPBOX_FILES_DIR Sandwich files are filtered by directory. The path to the directory in which your files are stored should begin with a slash (e.g. /everything-is-a-cms.
Fauna FAUNA_API_KEY
FAUNA_INDEX_NAME The items are pulled from an index you create with Fauna. This is the name of that index.
Google Sheets GOOGLE_CREDENTIALS Create a service account and then a JSON key. Download the key and store it as an env var, escaping quotes and other characters as necessary.
GOOGLE_SHEET_ID You can pull this from the URL when viewing the sheet.
Trello TRELLO_ACCESS_TOKEN You can find your API key and generate a token for your user here.
TRELLO_API_KEY

API-Based Engine

The API-based engine example here is an Apollo GraphQL server. Its contents live in the api-engine directory.

All drivers for this engine live in the api-engine/lib/drivers directory and are plugged into the api-engine/index.js entry file.

The server must be running to see it in action on the front-end. You can start the server by running:

$ node api-engine/index.js

You can then work with any of the API-based examples. You can also visit a playground for your GraphQL queries at localhost:4000.

File-Based Engine

The file-based engine has a reader and a writer. The reader is used by the front-end templates to read local markdown files. The writer pulls data from the data sources and writes them to markdown files in the _data directory.

You can import files by running the appropriate command-line script:

$ npm run import:[driver]

Supported drivers are (i.e. replace [driver] with one of the following):

  • bear
  • contentful
  • dropbox
  • fauna
  • sheets
  • trello

Questions and Feedback

If you have question regarding the implementation here or want to talk about the approach, the quickest way to get ahold of me is on Twitter: @seancdavis29.

Popular Driver Projects
Popular Content Management System Projects
Popular Libraries Categories

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Javascript
Driver
Cms
Dropbox
Trello