When it comes to code, Ohanah is not your typical Joomla component. It’s well organized, highly extendable, modular web application powered by a modern framework that offers HMVC code organization, consisted object oriented design patterns and RESTful architecture out-of-the-box.
Ohanah was built with an idea that the Ohanah extension itself should provide only what is necessary and essential for managing the events. Everything else can be built on top of that. That’s the reason Ohanah architecture is highly optimized for extensibility.
Each view in Ohanah has a JSON output. By simply adding
format=json at the end of the string, you will get the same data that is rendered in the view as a JSON encoded string.
This feature is used internally by Ohanah calendars to fetch the events. If you wish to build an application that will use Ohanah as a source for the data, there is literally no code required for you to build endpoints. Making a specific endpoint is as easy as making new menu item. For example, if you want to fetch the events and display it on venue’s external website, all you need to do is make a menu item of type Event list, put it in the hidden menu, open the URL of that menu item and suffix it with format=json. That’s it! This approach can also be used by your mobile application that fetch the events from your website. You will save precious developing hours with Ohanah’s out-of-the-box features.
Component based architecture
As stated above, Ohanah uses approach called Component based architecture meaning that is adapted for extensibility. Again, we use this approach internally. From the end user point of view, Ohanah is one extension, but under the hood, it’s actually 3 components: com_ohanah itself, com_emails that is used for email notifications and com_forms that is used for form builder. That means that you can build a component that, for example, will send SMS notifications without any modifications in the core code. No more mess after the update.
Angular powered backend
You may notice that there are a lot of dynamic fields in Ohanah backend (and some in the frontend). Instead of spaghetti jQuery code, there is a beautiful Angular based application powering all the dynamics. Example:
While making base Ohanah CSS we took the BEM approach. It makes Ohanah’s core CSS more understandable and thus more extendable. Ohanah has minimal CSS to pick as much template’s CSS as possible. Of course, this doesn’t work always, but the minimalistic, verbose and easy to understand CSS ease the process of changing the look of Ohanah to match look and feel of your site exactly.
Ohanah uses very simple templates that are modular and easy to override. Data is always available in very easy to understand the format ($event->title, $event->category->title, etc.) so you can embed it in a markup of your choice.
Modern Developer Tools
Do you still develop in WAMP/LAMP/MAMP environment? Manual configuration of tools, manual backups, manual debugging, no way to collaborate? Really? We’ll, we don’t. We use modern tools, made for productivity.
Ohanah is developed and tested in a Joomlatools Vagrant box. It’s a Ubuntu virtual machine with all the tools already in and configured properly. You can share your Vagrant box output with others very easy, which is great to show work in progress to fellow developer or a client.
Among other standard tools, Vagrant box is packed with the Joomla Console which makes testing a breeze. Creating and destroying Joomla sites is super easy, and navigating all the sites is done from Dashboard.
One of the advantages of developing for Joomla in Vagrant box is the built-in debugger. With a full stack trace, it’s easy to find where did you made a mistake.
Developer friendly environment ready for extension
HMVC architecture, easily extendable, REST API available out of the box. Build your custom solutions around Ohanah's powerful core.