Ed: Brady Nord is one of the founders of the popular WordPress theme marketplace, Mojo Themes. Brady offered us a look behind the scenes of their site, which is (of course) built on WordPress. It’s the perfect addition to our ongoing Behind the Site series.
In this series, a WordPress site’s owner walks us through what makes their site unique and how it does what it does. At this point I’ll hand it off to Brady, who wrote in-depth about their popular WordPress marketplace below.
Behind Mojo Themes
When my partner (JR – @jrfarr) and I (Brady – @bradynord) decided to build Mojo Themes we were very passionate about all things WordPress, and made the initial decision that we would build our buy and sell marketplace using WordPress everywhere possible. It was very important for us to educate people that they could use WordPress for more than just a blog.
For those not aware, we are currently on our second framework (theme). When we first launched, you could say that Mojo-Themes was a theme with some digital e-commerce abilities and not much more. We ran with that current system for a year, added a few new features along the way and quickly found out that we needed to re-develop the site with a much more robust and sustainable structure which we currently use. So basically, Mojo Themes is a WordPress theme on steroids.
So basically, Mojo Themes is a WordPress theme on steroids.
To help us manage all the items within the marketplace, we use custom post types to handle all items and use taxonomies along with meta data to handle a lot of the extra information about each sellers item. This allows us to use a lot of WordPress’ built in functionality.
Now, as great of a system as WordPress is, WordPress did not really give us the best set up for our complete development needs. There really wasn’t an MVC model that would satisfy our framework needs as we saw fit. So we decided on building an MVC framework inside of the theme. This allows us to use Models, Controllers and Views to control everything that you see on the front end.
Take a look at some of our large custom applications built into our theme:
Our account center was custom-built to offer as much functionality to our buyers and sellers as possible. Everything from the marketplace activity feed, sellers uploading and checking stats to buyers downloading items purchased.
We built an in-house affiliate program that every user automatically has access to. Along with that, there’s a section within the account center for affiliates to track stats in real-time like clicks, sales and earnings.
Seller Statistics and Features
All Mojo sellers are able to view their item sales statistics and any other applicable information. We’re working hard this year to bring more stats the sellers can use, one feature is about to launch soon. Also, sellers can manage uploads and submit item updates for review like new version changes.
We wanted to find a way to integrate the Mojo community and make everyone more friendly. We made many attempts at using BuddyPress to handle this functionality but could not find an effective way to integrate it into our system without editing the core code which we didn’t want to do. So in essence, we built our own version which we call Mojo Social. Mojo Social includes following users, activity streams, notifications and private messaging. (We have even thought about turning Mojo Social into a plugin for the WordPress community to freely use. ;))
Easily, one of the teams proudest features in the marketplace although we’ve done a poor job promoting it since we launched it almost 2 years ago. Joint Forces is a very cool tool we custom-built into our framework which gives theme designers and theme developers the ability to team up and sell themes together. Our Joint Forces system will divide the earnings among team members and enable the team to provide quality support and updates. Look for us to really push this to a new level this year as we have a few things planned to help designers and developers really leverage this innovative platform.
As the marketplace grows, we’ve built a custom “Options Panel” to help the team manage the day-to-day functions of the marketplace. Inside the options panel, we have quite a few separate areas to manage the site.
- Dashboard: This gives us an eagle eye view of the marketplace. We can see detailed info like recent user sign ups, recent sales, recent deposits, top-selling items, top sellers, etc. Just to make sure things are ticking like normal. All elements are displayed using default WordPress dashboard widgets.
- Uploads: The marketplace lives and breathes with the sellers. Without them and their items we wouldn’t be around so here’s a quick shout out to them! Anyway, we actually review and deny items right in the backend of WP. We can make edits to each part of the upload, send messages to sellers about their item, set pricing and push the item live to the marketplace. In addition to reviewing new uploads we can also review all item updates and compare the new update with the previous version.
- Sales/Statistics: Similar to the dashboard we can see the sales flow by day, week, month, etc. and see how revenue, commissions, refunds, etc. are shaping up for the marketplace.
- Withdrawals: We also have a separate section to manage the sellers/affiliates earnings. We can complete, cancel, decline withdrawals for our users straight from here.
- Misc: There’s a few other tabs we use to manage the site, emails, refunds, etc. but they’re pretty boring so we’ll just leave it at that.
Important Systems and Libraries
To keep the system running faster and smoother, we have began implementing some caching systems and other libraries. We initially tried to use an out of the box plugin such as WP Super Cache and W3 Total Cache which turned out to be a disaster. When dealing with constant uploads, downloads, account center activities, etc we were running into many errors. As of now, we use APC cache as much as possible and we are constantly finding new places where we can integrate APC caching.
- Sidebars: 3
- Menus: 3
- Custom Widgets: 2
- Popular Items
- Latest Items
- Custom Page Templates
- Full Width Page
- Anniversary Bundle
- Cyber Bundle
- Custom Post Types
- Items: 558 Total
- Custom Item Meta Boxes
- Custom Item Taxonomies
- Custom Options Panel
Despite the large number of really great WordPress plugins available, we try very hard to keep all the development out of plugins for control and speed purposes. Regardless, there still are some plugins that we prefer to use.
Hosting and CDN
We went through a lot of troubles with hosting. We started on VPS.net and eventually switched over to Amazon Web Services where we reside now. Transferring a site like Mojo-Themes and matching up all the technologies and new ways of doing things proved to be a big task. We made the switch this past fall and has proven to be a much more effective solution for us.
We use the EC2 hosting solution for our servers and use RDS for our database. We love Amazon’s services and are gradually taking advantage more and more to help keep the site functioning how it should. We also use Amazon CloudFront as a CDN to serve our assets. We are just about to launch a master/slave database environment through AWS to help handle the large database stress we constantly battle.
How we put it all together
I just want to say that we LOVE git. Git has been the best thing to happen to Mojo Themes. We operate on multiple branches and have a dev site (Top Secret) and live site. We started off by using Beanstalkapp for git hosting but eventually switched over to github.com and have never looked back since. We also use a service called deployHQ.com to deploy changes to site. In the future we hope to have our own self hosted git and deploy solutions.
What we use to build Mojo-Themes
All of us here at Mojo Themes have our own way of doing things, but for the most part we all use a lot of the same tools. Here are a list of some of the tools, scripts and apps that helps keep Mojo Themes going.
- Apple Computers.
- Sublime Text 2
- Vim, Nano
- Terminal (bash and ssh)
- Google Chrome
- Google Hangout (Awesome!)
- Google Docs
More about Mojo
We launched Mojo-Themes almost two years ago and had some big goals. We felt growing our Mojoness Inc. network around this industry was important and to this day we have yet to build a project with anything but WordPress at it’s core. I am very excited to announce that we just launched a new design for our Mojoness Inc site and are launching some killer products very soon. Since we built all our sites on WordPress (mojoness.com, support.mojoness.com, mojo-themes.com, wproots.com etc) we want all our users to be able to have access to each site with the same Mojoness user information. We learned a good lesson from Justin Tadlock on how we can integrate our network users to share the same user database. So be sure to keep a lookout for the official announcement and watch for some awesome new WordPress projects and products coming soon.
Behind the Scenes
All this wouldn’t be possible if it were not for our amazing team behind Mojoness.
- Brady Nord – @bradynord
- JR Farr – @jrfarr
- Nick Searle – @nsearle
- Will Ayers – @cointilt
- Mike Miller – @dr1v3n
Be featured on “Behind the Site”
Ed: Thanks for telling us about your site Brady! If you (or someone you know) have a WordPress site with an interesting story, an interesting mix of plugins, or a clever use of a theme, let us know and it just might be the next site we take a peak at behind the scenes.
In the meantime, what do you think of what the Mojo Themes team are doing, and how their site works?