Filebased cms that integrates into rails workflow
Go to file
2022-12-15 15:19:07 +02:00
app implement item alignment (justify on flex) for sections 2022-12-15 15:19:07 +02:00
bin ad tailwind, generate and export css to be used in app 2022-12-07 18:02:27 +02:00
config implement item alignment (justify on flex) for sections 2022-12-15 15:19:07 +02:00
lib rename Option to OptionDefinition to be full Rails compliant 2022-12-11 14:39:32 +02:00
spec rename align to text_align, so we can have item_align 2022-12-15 14:25:57 +02:00
test nicely working delete tests 2022-12-11 22:50:50 +02:00
.gitignore rails new plugin, see readme for command 2022-11-28 19:22:50 +02:00
.rspec add rspec, fix dummy railties to do it 2022-11-28 22:30:00 +02:00
Gemfile test harness is back, and pages fixed after refactor 2022-12-08 17:16:29 +02:00
Gemfile.lock images get ratios 2022-12-14 13:11:36 +02:00
Guardfile test harness is back, and pages fixed after refactor 2022-12-08 17:16:29 +02:00
merged.gemspec images get ratios 2022-12-14 13:11:36 +02:00
MIT-LICENSE rails new plugin, see readme for command 2022-11-28 19:22:50 +02:00
Rakefile rails new plugin, see readme for command 2022-11-28 19:22:50 +02:00
README.md start on forms 2022-12-09 00:53:15 +02:00

Merged

A CMS that integrates into the rails workflow. Ie it is file based not db based.

Changes propagate in the normal development cycle, with git, possible branches, possible staging, possible reviews and controlled deploys.

Usage

Merged is designed for developers to give limited editing facilities to users. As with rails, there is great flexibility how this can be achieved, a basic example below.

Concepts

Merged has simple but powerful concepts and structures to define the interactions users may have.

Page

The core entity that may be edited is a Page. Pages contain Sections (below) in a way defined by developers.

A Page has a type, different types may define different layouts, or rather types of Sections they may include.

A page has a name which is it's Url, Merged is not designed for nesting currently.

All data that users change is stored in the Pages' Yaml, which get committed and merged to propagate to the site.

A Page also has data, attributes and options, see below.

Sections

Merged itself defines many styles of sections, and off course developers may define more. For example a Header with text is a section, a hero section is a section, and a card section is a different style.

The only defining characteristic of a section is really that it is full width, and it has a template that renders the content.

A Page may contain as many sections as the Page definition allows.

A Section in turn may contain cards.

Like a Page, a Section may have options.

Cards

Cards, as in general css lingo, are usually smaller html snippets, usually contained in a grid (defined by the Section).

Cards have data and options like the other elements.

Image

Merged also manages images, adding deleting, renaming, which are stored in the assets folder. With the Pages (and their data) they define the content that users can change.

Images merge into the upstream in the same way as the pages, through git actions (partially done by Merged)

Change (-sets)

As data is in files, all change happens by git. Merged partially manages this, by making changes visible to the users, ie what Pages and Images were added/removed or edited. Merged can commit and in the future maybe even push.

Basic setup

A developer set up a machine on a intranet/lan. Ie access is restricted by physical access.

The machine is set up as a developer machine, on a "feature" branch. A User may use the machine to edit and commit and push (the branch).

The developer reviews, merges changes and deploys.

Installation

Add this line to your application's Gemfile:

gem "merged"

And then execute:

$ bundle

Mount engine in routes for editing.

mount Merged::Engine => "/merged"

Create route to serve content.

get ":id" , to: "merged/view#view" , id: :id

If Merged served the root:

root "merged/view#view" , id: 'index'

Include merged stylesheet to your layout (NOT asset pipeline).

= stylesheet_link_tag "application"
= stylesheet_link_tag "merged/merged"
= stylesheet_link_tag "tailwind" , "inter-font", "data-turbo-track": "reload"

If you use tailwind with the basic install, add it before tailwind, and switch preflight off in the apps tailwind config file (config/tailwind.config.js). Otherwise tailwind will reset the styles from merged or the other way around.

corePlugins: {
  preflight: false,
}

Contributing

Ask first.

License

The gem is available as open source under the terms of the MIT License.