All Projects → ketchuphq → Ketchup

ketchuphq / Ketchup

Licence: apache-2.0
A simple CMS 🍅

Programming Languages

go
31211 projects - #10 most used programming language
typescript
32286 projects

Labels

Projects that are alternatives of or similar to Ketchup

Lektor
The lektor static file content management system
Stars: ✭ 3,493 (+795.64%)
Mutual labels:  cms
Roadiz
Roadiz is a polymorphic CMS based on a node system which can handle many types of services.
Stars: ✭ 365 (-6.41%)
Mutual labels:  cms
Halo
✍ 一款优秀的开源博客发布应用。
Stars: ✭ 20,521 (+5161.79%)
Mutual labels:  cms
Podcastgenerator
Open Source Podcast Publishing Solution since 2006
Stars: ✭ 344 (-11.79%)
Mutual labels:  cms
Awesome Cms Core
Awesome CMS Core is an open source CMS built using ASP.Net Core & ReactJS with module seperation concern in mind and provide lastest trend of technology like .Net Core, React, Webpack, SASS, Background Job, Message Queue.
Stars: ✭ 352 (-9.74%)
Mutual labels:  cms
Keystone
The most powerful headless CMS for Node.js — built with GraphQL and React
Stars: ✭ 5,404 (+1285.64%)
Mutual labels:  cms
Kms
Simple and powerful Ruby on Rails CMS for developers
Stars: ✭ 337 (-13.59%)
Mutual labels:  cms
Livestreet
LiveStreet CMS - платформа для коллективных блогов и социальных площадок.
Stars: ✭ 389 (-0.26%)
Mutual labels:  cms
Eleventy Netlify Boilerplate
A template for building a simple website with the Eleventy static site generator
Stars: ✭ 359 (-7.95%)
Mutual labels:  cms
Comcms core
COMCMS_Core 版本
Stars: ✭ 377 (-3.33%)
Mutual labels:  cms
Kunstmaanbundlescms
An advanced yet user-friendly content management system, based on the full stack Symfony framework combined with a whole host of community bundles. It provides a full featured, multi-language CMS system with an innovative page and form assembling process, versioning, workflow, translation and media managers and much more.
Stars: ✭ 346 (-11.28%)
Mutual labels:  cms
Vue Notion
A fast Vue renderer for Notion pages
Stars: ✭ 343 (-12.05%)
Mutual labels:  cms
Feather
Feather is a modern Swift-based content management system powered by Vapor 4.
Stars: ✭ 374 (-4.1%)
Mutual labels:  cms
Ideaspace
😎 Create interactive 3D and VR web experiences for desktop, mobile & VR devices
Stars: ✭ 344 (-11.79%)
Mutual labels:  cms
Joomla Cms
Home of the Joomla! Content Management System
Stars: ✭ 3,995 (+924.36%)
Mutual labels:  cms
Nameless
NamelessMC is a free, easy to use & powerful website software for your Minecraft server, which includes a large range of features.
Stars: ✭ 337 (-13.59%)
Mutual labels:  cms
Graphql Auto Generating Cms
Use your existing graphQL schema to generate CMS in a couple steps. DEMO: http://cms-demo.web4fly.com/
Stars: ✭ 373 (-4.36%)
Mutual labels:  cms
Templatespider
扒网站工具,看好哪个网站,指定好URL,自动扒下来做成模版。所见网站,皆可为我所用!
Stars: ✭ 390 (+0%)
Mutual labels:  cms
Coderedcms
A content management system for marketing websites based on Django and Wagtail.
Stars: ✭ 386 (-1.03%)
Mutual labels:  cms
Leaa
Leaa is a monorepo restful CMS / Admin built with Nest.js (@nestjsx/crud, node.js) and Ant Design.
Stars: ✭ 375 (-3.85%)
Mutual labels:  cms

Ketchup

Go Report Card Coverage Status CircleCI

Ketchup is a developer-first CMS.

  • BYO (bring your own) version-controlled templates. Develop your templates outside of Ketchup, and pull them in with built-in support for git.
  • Customizable editor. Templates declare content fields for frontend to render, so your editorial team can make edits easily.
  • First class JSON API. Use Ketchup as a headless CMS by fetching content programmatically to power your own static websites or single-page webapps.
  • Automatic HTTPS. Let's Encrypt certificate provisioning and renewal built-in.
  • Easy to deploy. One binary, database included.
  • Other features include file uploads, Markdown and WYSIWYG editors, content preview, etc.

Table of contents

Usage

  • If you’re interested in using Ketchup, please check out the documentation at ketchuphq.com/docs (which is itself built with Ketchup — dogfood!).
  • If you want to download the latest release, visit the Releases page.
  • If you want to learn how to develop your own theme, read the Theme Documentation.
  • If you'd like to see some screenshots, see here.

This readme will focus on how to build and develop Ketchup.

Development

1. Getting started

These instructions assume you're using OS X, but they should work on Linux as well. The only exception to this is that Homebrew is used to install protoc on OS X. You won't need protoc unless you're planning to modify the API (see the Protobuf section below).

To get started, you’ll first need to install the following dependencies, which are used to compile the backend and frontend respectively.

  • Go >=1.9
  • Node >= 8 with NPM and Yarn

Then, run the following to download frontend and backend dependencies:

make prepare

2. Compiling

Now you should be able to compile the ketchup binary:

make

This will first run the frontend compilation (a Gulp task), then embed the frontend assets into admin/bindata.go, and finally run go build. The result will be a ketchup binary in the top-level.

If you want to modify the API, see below for instructions for how to update the proto files and regenerate the corresponding Go structs and Typescript classes.

Watching

For ongoing development, it can be a hassle to keep recompiling. There's a gulp watch task which you can run in the admin folder to recompile Typescript and SASS and output bindata.go on changes to frontend code. See admin/README.md for more details.

For backend code, there's ./scripts/dev-watch.sh, which will start a Ketchup server and recompile+restart it on changes to .go files.

3. Development

Protobuf API

Protobufs are used to describe the API as well as being the serialization for data stored in BoltDB.

To change the API, you’ll need to install the protobuf compiler, protoc. If you have Homebrew, running make prepare-protos will install it using brew, as well as a custom plugin for generating Go output.

You should never edit *.pb.go and ./admin/src/js/lib/api.ts directly. Instead, you should edit the relevant .proto protobuf file, and then regenerate those files:

make protos

After regenerating, you can recompile the frontend and backend to view your changes.

4. Releasing new versions

This section is for completeness; you probably won't have to do this.

make release-nr # dry run, only outputs to ./dist

# tag a release, goreleaser uses the latest tag
git tag -a v0.3.0 && git push origin v0.3.0
make release

Ketchup uses goreleaser to create and release new builds. The goreleaser.yml config file is dynamically generated in order to interpolate $GOPATH into the config, which is used to remove the $GOPATH that would otherwise appear in stack traces.

The version of the release is read from the latest git tag.

Extending Ketchup

This is a work in progress. The long-term goal is to make it easy to swap out, configure, or add modules, using a custom main.go file. The following features are intended to be pluggable:

  • authentication
  • database
  • template rendering engine
  • additional API endpoints
  • admin/authoring interface

The module system is documented here.

Architectural decisions

A brief run through of the things without which this project would not exist:

  • Go, powerful in its simplicity.
  • Typescript, types are great.
  • SASS, who even writes CSS.
  • React, you already know what this is.
  • Protobufs, autogenerating Go structs and Typescript interfaces for the API is kind of magical (shameless plug). Version 2 is used because it is nice to be able to differentiate between missing fields and set fields.
  • BoltDB, embeddable and needs no additional setup.

Changelog

0.3.0 - Relaxed React

  • Migrated frontend to React.
  • Added live preview when editing content.
  • Added drag-and-drop file uploads.
  • Added users:list CLI to list all users from command line.
  • Added /admin/logout endpoint for logging out.
  • Increased server test coverage significantly.
  • Fixed #11
  • 0.3.1 - Fixed blank compose page

0.2.0 - Tranquil Themes

Major changes

  • Upgrade mithril to 1.1.
    • Upgrade component class hierarchy to conform to 1.1 style.
    • Kudos to mithril for #1922!
  • Lots of progress on theme installation
    • Install themes via git; update with git pull; and check latest git version.
  • Rework theme store, now supports nested templates via {{ template "helper.html"}} (closes #6)
  • Reworked rendering to add additional context in templates, e.g. {{ .Page.Content }}
    • .Page context: Content, PublishedAt, Theme, Template, Route
    • .Site context: Pages (sorted in published order).
    • Page functions from sprig: date, dateModify, dateInZone, now, and also custom dateParseMillis.
  • Add support for global data variables and specifying global data variables in top-level placeholders field in theme.json.
  • Remove bower, update deps.

0.1.0 - Initial Release!

License

ASLv2

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].