New here?

Our Getting Started tutorial will get you up to speed with Hippo development.

Follow the Hippo Trail

Architecture

The relations between repository, CMS and delivery tier.

How it all fits together

Developer Info

Source code, forge, license, roadmap and system requirements.

Developer Info

Careers

Interested? We're always on the lookout for new talent.

Have a look

What is Hippo CMS?

Hippo CMS is an open source Java CMS. We built it so you can easily integrate it into your existing architecture.

Open Platform

We are big believers in open source. We use and contribute to many open source components - and our entire core is available under the Apache License

Java Stack

What you'd expect from a Java environment: easy to integrate, testable, ready for continuous integration, and sticking to familiar Java standards such as JCR 2.0 and JAX-RS

Scalability

Highly scalable platform which supports both clustering and replication

Performance

Performance matters to us! Hippo CMS  scales both  horizontally and vertically and makes use of  multi-layered caching to squeeze the most out of your implementation

Integrations

Query content using REST, or import content from somewhere else into Hippo. Hook up an external application into the rendering phase via Spring. Build a Mobile app or an AngularJS app that consumes content from Hippo. Use external data systems to feed our personalisation engine

Security

Protect your content with fine grained authorizations,  LDAP support and secure replication

The CMS Features You'd Expect

Content editing, workflow, history, version control, image library, user management, out of the box

Multi-lingual, Multi-site, Multi-channel

Out of the box support for multi-language, multi-site and multi-channel implementations. Cross-domain, cross-site, cross-language and cross-channel linking between documents are resolved automatically.

Separate Content from Presentation

Break free from page oriented development. Redesign your website without modifying content and reuse your content across websites, mobile  apps, etc. Use Hippo's  fully customizable document oriented model and built-in modelling tools to separate content from presentation.

Deployments

Deploy on-premise or in the cloud on your preferred servlet container

Extensible Components

Use or extend existing components from the Hippo Feature Library or build your own. Use JSP, Freemarker or AngularJS to render your components

Give Control To End Users

End users can manage page configurations, menus, URL structures and component mappings. Without you having to go into code

Personalisation

Deliver personalized pages to visitors with the Relevance module

Your HTML

We don't mess with your HTML output. Use whatever web framework you like; Bootstrap, AngularJS, it's up to you

Search

Out of the box querying, facetting and full text search capabilities based on Apache Lucene - or hook up Elasticsearch if you need more power

 

Can I try it out?

Yes! Try the online demo of  Hippo Enterprise Edition or create your own  project with Hippo Community Edition.

Look under the hood if you like, we share our source code.

Gallery Media Banner

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s

Did you see this?

Meet Hippo CMS 10 for Developers
May 27, 2015

Last week, we announced the release of Hippo CMS 10. Now we want to take the time to truly introduce this new release.

Simplify Upgrades with Hippo's Synchronization Add-on
June 15, 2015

Use the Synchronization Add-on you to smoothen the process of continuous delivery.

Re: [hippo-community] Re: mvn -Pcargo hangs for a long duration Stating Unable to remove Lock property for jcr repository , is there any way we can avoid this
by: a.douma | 06-07-15 21:17:04 (CEST)

is > already present and i restart the mvn -Pcargo Without more concrete logging info it is difficult to tell which lock your startup is stuck on, so I'm for now 'guessing' it might be related to the following: The known/fixed issue I referred to before also is fixed for hippo-repository-2.2

Re: [hippo-community] Re: REST service with "_type=xml"
by: b.leunis | 06-07-15 16:19:49 (CEST)

Hi Vlad, Are you using the Rest service feature of Essentials? I believe that the setup used for that is not built for serving XML. It was originally built for 7.9, and is using HippoBeans instead of Representations. 7.9 had a restriction on using HippoBeans and exposing the output as XML. That

Re: [hippo-community] Iterate over a Resource Bundle
by: Jasper Floor | 06-07-15 16:05:40 (CEST)

Hi, On Mon, Jul 6, 2015 at 3:38 PM, Mike Trinh <mike....@incentro.com> wrote: Hello, > > So i just made a Resource Bundle and i was wondering if it was possible to > iterate over a RBD to get all te possible keys. I am able to retrieve the > data by using > > <fmt:message key="event" bundle="${t

Iterate over a Resource Bundle
by: Mike Trinh | 06-07-15 15:38:00 (CEST)

Hello, So i just made a Resource Bundle and i was wondering if it was possible to iterate over a RBD to get all te possible keys. I am able to retrieve the data by using <fmt:message key="event" bundle="${type}" /> With a forEach i want to iterate over the bundle and get the different keys. Gr

Re: [hippo-community] How to determine whether a catalog component has been trigged by the Targeting & Relevance module
by: a.schrijvers | 06-07-15 14:36:17 (CEST)

Hey Jeffrey, from code, you can access the profile for the current visitor via com.onehippo.cms7.targeting.ProfileProvider#get . From 10.0 and higher the previous method is deprecate (still works), you should use TargetingStateProvider.get().getProfile(), also see [1] and [2]. From TargetingSt

How to determine whether a catalog component has been trigged by the Targeting & Relevance module
by: Jeffrey Houben | 06-07-15 14:10:12 (CEST)

Hi, We were wondering if there is a method to determine whether a catalog component has been triggered by the Targeting & Relevance module and if so, which Persona and/or Target Group was responsible for the trigger. So we actually want to be able to have access to this information from inside

Looking for assistance? You're welcome to ask for help. We have a very active mailing list! Please do check the tutorials and the guidelines first, though.