.. image:: https://secure.travis-ci.org/stephenmcd/mezzanine.png?branch=master
   :target: http://travis-ci.org/stephenmcd/mezzanine

Created by `Stephen McDonald <http://twitter.com/stephen_mcd>`_

========
Overview
========

Mezzanine is a powerful, consistent, and flexible content management
platform. Built using the `Django`_ framework, Mezzanine provides a
simple yet highly extensible architecture that encourages diving in
and hacking on the code. Mezzanine is `BSD licensed`_ and supported by
a diverse and active community.

In some ways, Mezzanine resembles tools such as `Wordpress`_,
providing an intuitive interface for managing pages, blog posts, form
data, store products, and other types of content. But Mezzanine is
also different. Unlike many other platforms that make extensive use of
modules or reusable applications, Mezzanine provides most of its
functionality by default. This approach yields a more integrated and
efficient platform.

Visit the `Mezzanine project page`_ to see some of the `great sites
people have built using Mezzanine`_.

Features
========

In addition to the usual features provided by Django such as MVC
architecture, ORM, templating, caching and an automatic admin
interface, Mezzanine provides the following:

* Hierarchical page navigation
* Save as draft and preview on site
* Scheduled publishing
* Drag-and-drop page ordering
* WYSIWYG editing
* `In-line page editing`_
* Drag-and-drop HTML5 forms builder with CSV export
* SEO friendly URLs and meta data
* Ecommerce / Shopping cart module (`Cartridge`_)
* Configurable `dashboard`_ widgets
* Blog engine
* Tagging
* `Free Themes`_, and a `Premium Themes`_ Marketplace
* User accounts and profiles with email verification
* Translated to over 35 languages
* Sharing via Facebook or Twitter
* `Multi-lingual sites`_
* `Custom templates`_ per page or blog post
* `Twitter Bootstrap`_ integration
* API for `custom content types`_
* `Search engine and API`_
* Seamless integration with third-party Django apps
* Multi-device detection and template handling
* One step migration from other blogging engines
* Automated production provisioning and deployments
* `Disqus`_ integration, or built-in threaded comments
* `Gravatar`_ integration
* `Google Analytics`_ integration
* `Twitter`_ feed integration
* `bit.ly`_ integration
* `Akismet`_ spam filtering
* Built-in `test suite`_
* `JVM`_ compatible (via `Jython`_)

The Mezzanine admin dashboard:

.. image:: http://mezzanine.jupo.org/docs/_images/dashboard.png


Support
=======

To **report a security issue**, please send an email privately to
`core-team@mezzaninecms.com`_. This gives us a chance to fix the issue
and create an official release prior to the issue being made public.

For **all other Mezzanine support**, the primary channel is the
`mezzanine-users`_ mailing list. Questions, comments, issues, feature
requests, and all other related discussions should take place here.

If you're **certain** you've come across a bug, then please use the
`GitHub issue tracker`_, however it's crucial that enough information
is provided to reproduce the bug, ideally with a small code sample repo
we can simply fork, run, and see the issue with. Other useful
information includes things such as the Python stack trace generated by
error pages, as well as other aspects of the development environment
used, such as operating system, database, and Python version. If
**you're not sure you've found a reproducible bug**, then please try
the mailing list first.

Finally, feel free to drop by the `#mezzanine IRC channel`_ on
`Freenode`_, for a chat! Lastly, communications in all Mezzanine spaces
are expected to conform to the `Django Code of Conduct`_.


Contributing
============

Mezzanine is an open source project managed using both the Git and
Mercurial version control systems. These repositories are hosted on
both `GitHub`_ and `Bitbucket`_ respectively, so contributing is as
easy as forking the project on either of these sites and committing
back your enhancements.

Please note the following guidelines for contributing:

* Before doing anything, discuss it on the `mezzanine-users`_ mailing
  list first.
* Contributed code must be written in the existing style. For Python
  (and to a decent extent, JavaScript as well), this is as simple as
  following the `Django coding style`_ and (most importantly)
  `PEP 8`_. Front-end CSS should adhere to the
  `Bootstrap CSS guidelines`_.
* Contributions must be available on a separately named branch
  based on the latest version of the main branch.
* Run the tests before committing your changes. If your changes
  cause the tests to break, they won't be accepted.
* If you are adding new functionality, you must include basic tests
  and documentation.


Donating
========

If you would like to make a donation to continue development of
Mezzanine, you can do so via the `Mezzanine Project`_ website.


Quotes
======

* "I'm enjoying working with Mezzanine, it's good work"
  - `Van Lindberg`_, `Python Software Foundation`_ chairman
* "Mezzanine looks like it may be Django's killer app"
  - `Antonio Rodriguez`_, ex CTO of `Hewlett Packard`_, founder
  of `Tabblo`_
* "Mezzanine looks pretty interesting, tempting to get me off
  Wordpress" - `Jesse Noller`_, Python core contributor,
  `Python Software Foundation`_ board member
* "I think I'm your newest fan. Love these frameworks"
  - `Emile Petrone`_, integrations engineer at `Urban Airship`_
* "Mezzanine is amazing" - `Audrey Roy`_, founder of `PyLadies`_
  and `Django Packages`_
* "Mezzanine convinced me to switch from the Ruby world over
  to Python" - `Michael Delaney`_, developer
* "Like Linux and Python, Mezzanine just feels right" - `Phil Hughes`_,
  Linux For Dummies author, `The Linux Journal`_ columnist
* "Impressed with Mezzanine so far" - `Brad Montgomery`_, founder
  of `Work For Pie`_
* "From the moment I installed Mezzanine, I have been delighted, both
  with the initial experience and the community involved in its
  development" - `John Campbell`_, founder of `Head3 Interactive`_
* "You need to check out the open source project Mezzanine. In one
  word: Elegant" - `Nick Hagianis`_, developer


.. _`Django`: http://djangoproject.com/
.. _`Django Code of Conduct`: https://www.djangoproject.com/conduct/
.. _`Wordpress`: http://wordpress.org/
.. _`BSD licensed`: http://www.linfo.org/bsdlicense.html
.. _`great sites people have built using Mezzanine`: http://mezzanine.jupo.org/sites/
.. _`Mezzanine project page`: http://mezzanine.jupo.org
.. _`In-line page editing`: http://mezzanine.jupo.org/docs/inline-editing.html
.. _`custom content types`: http://mezzanine.jupo.org/docs/content-architecture.html#creating-custom-content-types
.. _`Cartridge`: http://cartridge.jupo.org/
.. _`Search engine and API`: http://mezzanine.jupo.org/docs/search-engine.html
.. _`dashboard`: http://mezzanine.jupo.org/docs/admin-customization.html#dashboard
.. _`Free Themes`: https://github.com/thecodinghouse/mezzanine-themes
.. _`Premium Themes`: http://mezzathe.me/
.. _`@abhinavsohani`: https://twitter.com/abhinavsohani
.. _`@joshcartme`: https://twitter.com/joshcartme
.. _`Custom templates`: http://mezzanine.jupo.org/docs/content-architecture.html#page-templates
.. _`test suite`: http://mezzanine.jupo.org/docs/packages.html#module-mezzanine.core.tests
.. _`Multi-lingual sites`: http://mezzanine.jupo.org/docs/multi-lingual-sites.html
.. _`JVM`: http://en.wikipedia.org/wiki/Java_virtual_machine
.. _`Jython`: http://www.jython.org/
.. _`Twitter Bootstrap`: http://getbootstrap.com/
.. _`Disqus`: http://disqus.com/
.. _`Gravatar`: http://gravatar.com/
.. _`Google Analytics`: http://www.google.com/analytics/
.. _`Twitter`: http://twitter.com/
.. _`bit.ly`: http://bit.ly/
.. _`Akismet`: http://akismet.com/
.. _`GitHub`: http://github.com/stephenmcd/mezzanine/
.. _`Bitbucket`: http://bitbucket.org/stephenmcd/mezzanine/
.. _`mezzanine-users`: http://groups.google.com/group/mezzanine-users/topics
.. _`core-team@mezzaninecms.com`: mailto:core-team@mezzaninecms.com?subject=Mezzanine+Security+Issue
.. _`GitHub issue tracker`: http://github.com/stephenmcd/mezzanine/issues
.. _`#mezzanine IRC channel`: irc://irc.freenode.net/mezzanine
.. _`Freenode`: http://freenode.net
.. _`Django coding style`: https://docs.djangoproject.com/en/dev/internals/contributing/writing-code/coding-style/
.. _`PEP 8`: http://www.python.org/dev/peps/pep-0008/
.. _`Bootstrap CSS guidelines`: https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md#css
.. _`Mezzanine Project`: http://mezzanine.jupo.org

.. _`Python Software Foundation`: http://www.python.org/psf/
.. _`Urban Airship`: http://urbanairship.com/
.. _`Django Packages`: http://djangopackages.com/
.. _`Hewlett Packard`: http://www.hp.com/
.. _`Tabblo`: http://www.tabblo.com/
.. _`The Linux Journal`: http://www.linuxjournal.com
.. _`Work For Pie`: http://workforpie.com/
.. _`Van Lindberg`: http://www.lindbergd.info/
.. _`Antonio Rodriguez`: http://an.ton.io/
.. _`Jesse Noller`: http://jessenoller.com/
.. _`Emile Petrone`: https://twitter.com/emilepetrone
.. _`Audrey Roy`: http://cartwheelweb.com/
.. _`Michael Delaney`: http://github.com/fusepilot/
.. _`John Campbell`: http://head3.com/
.. _`Phil Hughes`: http://www.linuxjournal.com/blogs/phil-hughes
.. _`Nick Hagianis`: http://hagianis.com
.. _`Brad Montgomery`: http://blog.bradmontgomery.net
.. _`Head3 Interactive`: http://head3.com
.. _`PyLadies`: http://www.pyladies.com
