Alchemy CMS: First User Group (Berlin)
- 2. Welcome to the first Alchemy CMS UG
• Who are we?
• What is Alchemy?
• Alchemy 3.0
• Roadmap for 2014 / 2015
- 3. Who are we?
• magic labs* GmbH
• Berlin & Hamburg
• Core maintainers: @tvdeyen & @robinboening
• Also here with us: @dweinhardt, Niels, @moritzs
• Deep investment in the Open Source community
- 5. • Motivation: flexible like Typo3, but easy to use and w/o PHP
• 2007 to 2010 as proprietary software:
• Maintenance / New Features
• Warranty
• Exploitation Rights
• Since 2010 OpenSource
History
- 6. „Open Source makes me a better developer — since my
work is open to the public I always strive to deliver high
quality code and double-check it“
@tvdeyen
- 7. • Rails 3 & 4 Engine
• Mountable in any Rails App
• SQL Database
• ImageMagick
• BSD New License
• 95% Test Coverage
Facts
- 8. • Alchemy speichert Inhalte einer Web-Seite in kleinsten
Einheiten:
• Atome
• Moleküle
• Zellen
Was macht Alchemy?
@page.body = <<BODY
<h1>Welcome</h1>
<p>
Lorem ipsum dolor
<img style="float: right" src="image.jpg">
</p>
BODY
@page.meta_description = "fancy rails cms"
@page.save
What Alchemy does not do:
- 9. • Alchemy saves Contents of a website in the smallest objects:
• Essences
• Elements
• Cells
What Alchemy actually does:
- 10. • 100% Trennung zwischen Inhalt und Styling
• Extrem flexible Anpassungsmöglichkeiten
• Wie in einem Chemiebaukasten liefert Alchemy nur die
grundlegenden Essenzen
• Welche Elemente daraus zusammengestellt werden ist
komplett dem Entwickler überlassen
What you need is what you get
- 11. Rendering Tree
• Application Layout
➡ app/views/layouts/application.html.erb
• Page
➡ app/views/alchemy/page_layouts/_standard.html.erb
• Cell
➡ app/views/alchemy/cells/_right_column.html.erb
• Element
➡ app/views/alchemy/elements/_article_view.html.erb
• Essence
➡ app/views/alchemy/essences/_essence_text_view.html.erb
RussianDoll
Caching
- 14. Example elements.yml
#config/alchemy/elements.yml
- name: article
contents:
- name: headline
type: EssenceText
validate:
- presence
- format: headline_formatter
- name: text
type: EssenceRichtext
- name: image
type: EssencePicture
!
- name: news
contents:
- name: title
type: EssenceText
- name: date
type: EssenceDate
- name: body
type: EssenceRichtext
- 16. Example page layout partial:
# app/views/alchemy/page_layouts/_standard.html.erb
<div id="main_content">
<%= render_elements(:except => 'right_info') %>
</div>
<div id="right_column">
<%= render_elements(:only => 'right_info') %>
</div>
- 17. Example elements view partial:
# app/views/alchemy/elements/_article_view.html.erb
<% cache element do %>
<%= element_view_for element, tag: 'article' do |el| %>
<h1><%= el.render 'headline' %></h1>
<p>
<%= el.render 'image',
image_size: '80x120',
crop: true %>
<%= el.render 'text' %>
</p>
<% end %>
<% end %>
- 18. Example elements editor partial:
# app/views/alchemy/elements/_article_editor.html.erb
<%= element_editor_for element do |el| %>
<%= el.edit :headline %>
<%= el.edit :text %>
<%= render_picture_editor element,
image_size: "80x120",
crop: true %>
<% end %>
- 19. There is a task for that!
• Create new project
➡ alchemy new fancypage -d postgresql
• Install into existing Rails app
➡ rake alchemy:install
➡ rake -T alchemy
• Upgrade Alchemy
➡ rake alchemy:upgrade
• Deploy script
➡ rails g alchemy:deploy_script
➡ bundle exec cap -T alchemy
➡ bundle exec cap alchemy:import:all
- 20. We want your help <3
We love contributors:
• Development
• Documentation
• Testing
• Bug Reporting
• Community Support
- 22. Alchemy 3.0 - Key facts
• Rails 4 compatibility
• Removes action caching
• Extracts the User class
• Changes authorization library
• Extracts ferret based full text search
• Upgrades to TinyMCE 4.0
• New public JSON API
• Enhances the User Interface
- 23. 3.0 - Last task before we release
• Changed interface:
Add button has new
position
• This leads to
inconsistent / changed
user experience
- 25. Roadmap 2014 / 2015
• Rewrite Alchemy to a content storage API
• Rewrite of admin UI
• Redesign
- 26. Feature whish list
• Versioning
• Editorial publishing workflow
• Visual Element builder
• Element exchange platform
• SOLR/ElasticSearch Integration
• … What would you like?