Blue Bridge has built several web applications (and many, many extensions) using Joomla during our years in business. Joomla is an outstanding application development environment because it has commonly needed features built-in, a large extension directory addressing a cornucopia of needs, and a modern underlying framework for custom Joomla development. We've used all of these features to help businesses build solutions and through our experiences have gained some hard earned lessons on how to successfully build a web application with Joomla. In this post, I'm going to share two key principals that have a dramatic effect on a Joomla application development project’s success.
For Joomla, web applications will leverage several existing extensions to accomplish blocks of functionality – membership subscriptions, user directories, and etc. It's of critical importance that for core web application functionality good extensions are used. If you can’t find a quality extension, you should consider hiring a professional for custom development (more on this below.) Mediocre extensions that fulfill core functions set you up for headaches, lost revenue, brand devaluation, workflow costs, website downtime, hacks, slow responses, and etc.
It's well-designed. By design, I don't mean how it looks, although that can be an indicator of what’s underneath the hood, but that the extension is well-organized and works well. Extensions that have odd workflows often represent amateur code.
It utilizes Joomla conventions. Most extensions that accomplish core functionality within Joomla are components. How well the component is developed according to Joomla's conventions will impact how easy it is to maintain, integrate, and extend. These last three aspects are very common needs which is why it's so important for extensions to follow conventions. Unfortunately, many extension developers choose to come up with their own system creating code bloat and limiting the benefits that Joomla’s flexibility enables (such as layout overrides.)
It's well supported. Ideally, you want to see a thriving community behind the extension with regular updates. This ensures that this piece of functionality for your Joomla web application will continue to be available to you in the future with up-to-date code.
General utility. Many Joomla applications will use near exact functionality for various function categories. For example, your application might have a list of recipes with pictures on one part of the website and a list of users with their pictures in another. You want the extension you choose to be flexible enough to cover these different areas. What you don't want is to install two very similar extensions to cover minor differences because doing so will make the site more difficult to maintain and manage; the overlap in functionality represents waste.
Using an existing solution generally saves money and time, but when accuracy is needed and not being met the cost of using an existing solution can quickly surmount the cost of custom development.
I used to recommend that if there is an existing solution available to meet a requirement then you should use it. Now, I recommend the same but with a caveat: be very careful when it comes to business logic and complex data sets. Some extensions may seem to solve 95% of what a business needs but turn into development traps when it comes to implementing them due to business logic or nuanced workflows, expanding needs, or a complex data set to test and manage. In these situations, you can waste hundreds of hours trying to push an extension to do what custom Joomla development is needed for. We've had projects where that last 5% cost us more than the total we billed for (fortunately for our clients, we provide fixed quotes and they weren’t affected by these additional costs.) The key to avoiding this is to exercise caution and diligence about core functionality requirements and potential future needs. If you can’t compromise on how a feature is enacted, you need to go with custom joomla development.
In addition to increased development costs, these types of scenarios can also result in poor application performance due to non-optimized use of the server’s resources. I won’t name any names here, but there is a popular CRM that suffers serious performance problems stemming from trying to utilize various existing solutions to meet all requirements.
I hope this post adds another dimension to your joomla application development plans. If you found it helpful please share it with someone else or ping it out into the social sphere using one of the buttons below.