Jump to content

Replacing Nation Builder with ProcessWire for Justice Party (political party)


JusticeParty
 Share

Recommended Posts

Hello,

I've used a good number of CMS/Blogs over the years (Mambo, Joomla, WordPress Expression Engine, etc). This past Nov. I joined a new political party called the Justice Party (http://justicepartyusa.org) and now find myself running their website. The previous designer/developer selected 'Nation Builder' (http://nationbuilder.com) to run the party's website. Nation Builder is a hosted content management system that lends itself to organizations. It has typical functions such as blogs, polls and so on. It took me about two days to pick it up. I can see for organizations, political parties and political candidates, it has a lot to offer. Especially the areas related to campaign donations and fund raising.

The downside to Nation Builder is that it is hosted (which is an upside to others) so I can't get under the hood so much. In addition, the monthly fees can be high for a new political party just starting out (different when you have millions coming in like Democrats and Republicans do... lol)

I've been recommending that the Justice Party pick up a VPS and run its own CMS. I looked over the major candidates in 2012 and a good number of their sites are running on Drupal or Word Press. I have tried Drupal on and off over the years and never liked it. But I do realize its power. Drupal has a very nice CRM called CivicCRM that also interests me. This 'module' is now available for Word Press but perhaps not so feature rich. I do like how upgrading WordPress is pretty straight forward. And no one can deny the many plugins (good and bad ones).

I was out of touch with Expression Engine after 1.7 and have recently looked over the 2.x. I thought to play around with the new Core for a bit. I see in this forum there are many former EE users due to their new licensing issues. I would say my skill is 90% design, 10% PHP.

That said, I also have pondered using a PHP framework like CI, YII, etc to build exactly what we need for the party.

I am interested in ProcessWire and will try out the demo more extensively this weekend. Some of the areas that I need to explore:

1) How does it handle massive traffic. During an election year or after TV coverage on CNN, we have the potential to get a huge spike in traffic. So caching, etc will be vital.

2) I need to weigh whether to run a separate CRM app like SugarCRM or to build CRM like functions in ProcessWire. No doubt the custom fields will help in this. CRM will mostly be used to track donations, helps us better target members with ad campaigns/communications. CRM will also need to track 'no-members', such as the media.

3) The majority of the site will be static pages like About, Contact, Articles. The multi-site function may be helpful to run our state party websites. For polls, we can probably use Survey Monkey.

4) I might use MailChimp for deployment. But for smaller campaign, a built-in newsletter module would be handy.

5) We are running a 3rd-party hosted forum now. I don't think ProcessWire has a built-in forum. You are using IP Board here? I've used EE forum and vBulletin in the past. Having one sign-in for site and forum would be very good. Are there plans to roll a forum into this CMS or one available by 3rd-party? I've never been a fan of one DB for site and one for forum. Even if they integrate, there can always be problems. Anyone using Vanilla and PW?

6) One reason for using WordPress would be the BuddyPress plugin. I like the idea of users having a Facebook-like profile. Add in Buddypress and it all seems to integrate nicely.

7) Our donation form (hosted by WePay) can be added with an include/JS easily enough. I have to ponder a store plugin/module as well. Might want to sell other party items.

Thanks for any input.

p.s. If any of you live in Connecticut, please contact me directly.

Carlos Camacho

Connecticut Justice Party

Acting Chairman

http://justicepartyct.org

  • Like 1
Link to comment
Share on other sites

HI Carlos

Just a couple of thoughts which are possibly a little less about ProcessWire and more about the possible construction of the site. These come from personal (and quite recent) experience dealing with a campaign.

The general rule is that Political Party Websites are always vulnerable and WILL get attacked - this I know from personal experience. So, if you want intranet type functions for party members, host them separately and securely so if your campaigning site gets attacked, that is all that happens. Bare in mind that CRMs inevitably hold confidential information - political party contact lists are highly prized!

Although Buddy press type functions can seem a lot of fun and give lots of freedom, they are far better aimed at a general community than a political party. 

A party website should have very strict editorial control so that articles are submitted for publication and then go through an editorial process before they are published. This stops accidental mixed messages, undermining party policy, bending the brand and so on. The Party website is a huge advert at the end of the day (and there is nothing wrong in that) but like any form of advertising if it is not consistent with its messaging it backfires very quickly.

ProcessWire has good user functions which would allow you to set up an editorial process and, of course, you can create any sort of content and a huge variation of templates.

Scalability wise, Ryan mentioned on another thread that it can handle huge applications without a problem - probably more a case of making your server solution scalable, perhaps, but I am no expert on this!

So, my thought would be to separate out the promotional site from the community site so there is less confusion.

I am sure there will be plenty more technically helpful solutions coming along shortly! :)

Joss

(Who is a whole ocean away from Connecticut!)

  • Like 3
Link to comment
Share on other sites

Welcome to the ProcessWire forums Carlos. 

I've been recommending that the Justice Party pick up a VPS and run its own CMS.

Good idea. Even better might be to go managed dedicated (like what we're using here from ServInt), or one of the platforms that can scale like StormOnDemand. 

I looked over the major candidates in 2012 and a good number of their sites are running on Drupal or Word Press.

Drupal and WordPress = Republicans and Democrats :) 

1) How does it handle massive traffic. During an election year or after TV coverage on CNN, we have the potential to get a huge spike in traffic. So caching, etc will be vital.

It should handle massive traffic better than most. It's certainly lighter weight than the others you are considering. ProcessWire performs very nicely without any caching features turned on. But as your needs to handle higher traffic increase, you'll want to take advantage of more caching features.

ProcessWire includes some very nice full-page caching features (controlled in the template settings), and partial-page caching features (controlled by the MarkupCache module). I am also working on a so-called "Supercache" that completely bypasses the PHP/MySQL and enables delivery of high traffic pages as quickly as plain HTML files. This is not yet ready, but is in the works. 

Beyond caching, you may also want to move your static assets (CSS files, JS files, image files) to a CDN, so that your main server doesn't have to do anything other than render and serve markup.

I have not personally had to manage a site that needs to deal with CNN mentions, so I'd recommend calling ServInt and asking what they'd advise, as they do host a lot of high traffic stuff there and know what's necessary. They are in the DC metro area, and have both DC and NoVA data centers, so are experienced with high traffic government/political related sites as well.  

2) I need to weigh whether to run a separate CRM app like SugarCRM or to build CRM like functions in ProcessWire. No doubt the custom fields will help in this. CRM will mostly be used to track donations, helps us better target members with ad campaigns/communications. CRM will also need to track 'no-members', such as the media.

While you can make ProcessWire do just about anything (and it'll make a great CRM), I would suggest keeping your website focused purely on delivery of web pages and use SalesForce (or something else) as your CRM. ProcessWire will integrate easily with SalesForce, at least with regard to submitting form data into it. 

3) The majority of the site will be static pages like About, Contact, Articles. The multi-site function may be helpful to run our state party websites. For polls, we can probably use Survey Monkey.

Given your potential traffic considerations, I would probably separate your main site from your state party websites. Perhaps run all the state party websites from a separate server or VPS, and enable either to be a backup for the other. 

4) I might use MailChimp for deployment. But for smaller campaign, a built-in newsletter module would be handy.

Stick with MailChimp. Don't bother with a built-in newsletter module from another system. This will save you from having to deal with a lot of annoyance, server, DNS and potential blacklist issues. 

5) We are running a 3rd-party hosted forum now. I don't think ProcessWire has a built-in forum. You are using IP Board here? I've used EE forum and vBulletin in the past. Having one sign-in for site and forum would be very good. Are there plans to roll a forum into this CMS or one available by 3rd-party? I've never been a fan of one DB for site and one for forum. Even if they integrate, there can always be problems. Anyone using Vanilla and PW?

In my opinion, the currently available forum software (especially the one we're using IP.Board) is so good that I wouldn't even consider a CMS forum add-on from EE or the like. IP.Board provides lots of API connections that can be used with ProcessWire. Pete (our administrator) has has written modules that connect IP.Board with ProcessWire. They are not released, but are in use on his site and will eventually be in use here as well. The only reason they aren't already is just that there isn't a lot of crossover between what happens in the forums and rest of the site here, so we're finishing the site redesign before doing it, but will get done. Perhaps Pete could reply to explain a little more about what's possible between IP.Board and ProcessWire. 

6) One reason for using WordPress would be the BuddyPress plugin. I like the idea of users having a Facebook-like profile. Add in Buddypress and it all seems to integrate nicely.

Much of this is also possible with IP.Board. Ultimately though, your users are going to still go to Facebook regardless of what you setup. So I'd focus on Facebook integration more than BuddyPress. 

7) Our donation form (hosted by WePay) can be added with an include/JS easily enough. I have to ponder a store plugin/module as well. Might want to sell other party items.

I highly recommend Shopify, should you want to step beyond the donation form to sell other party items. BrainTree is an excellent merchant account/gateway to go with it (and avoid PayPal, obviously). This is a lot simpler and more secure than trying to self host. At least in the US, the laws/rules (PCI compliance) governing servers involved in any kind of data collection as it relates to transactions are something you want to let an expert provider run for you, unless you want to spend the rest of your life doing nothing but PCI compliance. :) 

Btw, since you run that Justice Party site: very attractive site, but took me awhile to get the message. I was sure this was something tea party related, until I saw the nice table on this page that clarified it all. Might be nice to see that table, or some variation of it, right on the homepage. I would bet that it would decrease the bounce rate significantly. 

  • Like 2
Link to comment
Share on other sites

Spot on with your advice Ryan!

I'm also thinking of all the attacks we will get, especially from the PACs/minions that support our two major US parties.

I think you have a good point about separation of the content part from the crm part. I suppose we can export from the cms member registration and import into an independent crm.

I know with Wordpress, there is a list of ToDos to 'hide' it as much as possible. Can anyone point me to such lists for ProcessWire? I tend to always rename the admin folders and strip out 'generated by' type of code.

Such advice is very very welcomed!

Cheers

Carlos

Link to comment
Share on other sites

Joss posted at the same time as me, so I missed his post when I was writing. But he makes excellent points. You should expect the site to be under attack when it gets popular. The more you can separate the tasks of the site, the better off you will be. Even if your site is totally secure, you can expect DDOS attacks, and dictionary attacks to any login forms, among other monkey business.

Keep your community, main site, CRM, store and e-newsletter each separate and quarantined from each other. There are plenty of things you can do to make a site "look" integrated, without having them run side by side. For instance, you'll see the PW main site referencing latest posts in the forums, and it just does that with the RSS Loader module. Most good systems and services can talk each other these days, in a secure manner. So they don't need to run together. 

Link to comment
Share on other sites

Hello Ryan,

Yes, ServInt is on my short list. I am thinking of a managed VPS because the traffic isn't great during none-election years. And during the peak times, we can pay for the greater VPS resources.

>Drupal and WordPress = Republicans and Democrats 

Nice!!! Well, our new party is central so is ProcessWire a middle road? ;-)

SuperCache sounds good. Especially when our candidate goes into the TV debates. I don't want to look foolish for a crashing site. lol

Need to read more on CDN. I heard of it, but I don't know what it is. Like Amazon services?

>ProcessWire will integrate easily with SalesForce, at least with regard to submitting form data into it. 

Anyone already doing this that you know of?

Good tip on state parties and MailChimp.

In my opinion, the currently available forum software (especially the one we're using IP.Board) is so good that I wouldn't even consider a CMS forum add-on from EE or the like. IP.Board provides lots of API connections that can be used with ProcessWire. Pete (our administrator) has has written modules that connect IP.Board with ProcessWire. They are not released, but are in use on his site and will eventually be in use here as well. The only reason they aren't already is just that there isn't a lot of crossover between what happens in the forums and rest of the site here, so we're finishing the site redesign before doing it, but will get done. Perhaps Pete could reply to explain a little more about what's possible between IP.Board and ProcessWire. 

> I was sure this was something tea party related, until I saw the nice table on this page that clarified it all. Might be nice to see that >table, or some variation of it, right on the homepage. I would bet that it would decrease the bounce rate significantly. 

Good tip. The previous 'template' looked like it was made in 1988! I simply used a stock template from Nation Builder to get the site a little more modern. I didn't want to put any further work into the site as I really want to move them away from Nation Builder. A good deal of the content is missing or old as the various party committees work on re-writing them. For sure, we are NOTHING like the Tea Party people. Might consider us Progressives... more centralist party.

Cheers!

Carlos Camacho

Connecticut Justice Party

Acting Chairman

http://justicepartyct.org

  • Like 1
Link to comment
Share on other sites

I know with Wordpress, there is a list of ToDos to 'hide' it as much as possible. Can anyone point me to such lists for ProcessWire? I tend to always rename the admin folders and strip out 'generated by' type of code.

CMSs like WordPress and Drupal generate markup and as a result shamelessly reveal themselves all over the place. I don't think there's anything you can do to completely hide that something is running on WordPress, for example. And I don't think you'd even want to bother trying, because the people that can do real damage can identify WordPress and other platforms in so many other ways that go beyond just output. 

ProcessWire hides itself quite well, as it generates no markup and lets you hide your administrative page wherever you want. The only way I know of to identify a site running ProcessWire is by looking for things like "/site/assets/files/" in paths to images. Like with any system, another way is to get familiar with the directory structure and start trying to request files that are known to be protected and see if you get the expected HTTP error response code. Should someone choose to name their /site/ and /wire/ directories something else (and update their /index.php to reflect it) then I don't know of any way to detect ProcessWire from the outside. Though ProcessWire is not yet "known" enough to be a target for any of this. Automated hacks are looking primarily for WordPress, for the same reason that most viruses are written for Windows. And most of these hacks are targeting vulnerable versions of WordPress plugins and themes, since WordPress itself is fairly secure by now. 

Link to comment
Share on other sites

In my opinion, the currently available forum software (especially the one we're using IP.Board) is so good that I wouldn't even consider a CMS forum add-on from EE or the like. IP.Board provides lots of API connections that can be used with ProcessWire. Pete (our administrator) has has written modules that connect IP.Board with ProcessWire. They are not released, but are in use on his site and will eventually be in use here as well. The only reason they aren't already is just that there isn't a lot of crossover between what happens in the forums and rest of the site here, so we're finishing the site redesign before doing it, but will get done. Perhaps Pete could reply to explain a little more about what's possible between IP.Board and ProcessWire. 

There are a couple of things to bear in mind with this - some of them are the reason why I've not yet released it as a module.

Their API was a bit basic, so I've not gone the API route at all with the module - it actually initializes the forum software itself and calls on classes and functions where required (so it doesn't load everything, but there is obviously some overhead like if you bootstrapped ProcessWire). This isn't a downside from a functionality point of view as that's how other apps from Invision Power work to some degree so I'm not doing anything the system isn't designed to do (one of the first things in the module is that it declares IN_IPB = false; for example to tell the forum classes not to load everything unnecessarily).

The potential problem for me is that if they release a version 4 of the software or even a minor version, many of the classes and functions could change, so I need to think about supporting the module. It's reasonably advanced and I'm actually doing some work on it with another site to make it easier to roll out, but just integrating things like the member bar at the very top of the forums here into a PW site has all kinds of styling and Javascript issues that I'm hoping to get around so installation is just of a case of copying and pasting some snippets of code into templates.

The bottom line though is that there is going to be some work on the part of the developer working on your ProcessWire project (you in this case) in terms of implementing things in the PW templates, so I will probably release it as a paid module so I can handle support. Plus I'm being a bit selfish in that it took me a hell of a long time to build as their code didn't make it straightforward :)

No price estimate yet, but it wouldn't be extortionate.

As a quick feature list:

  • Member bar template for inclusion in your PW templates - member bar functionality carries across seamlessly between forums and CMS
  • "Latest topics" function can pull from a news forum or any forum you choose. Caches for X minutes so you're not overloading the server.
  • Create Topic function can be tied to PW page creation so you can handle comments inside the forum software (alternative to PW's comments module). Delete function will be called if the page is deleted.
  • Add/Edit/Delete reply functions as well (so you can comment on a page that has a topic linked to it)
  • Login/Registration (planned functionality coming soon)

I know it doesn't sound like a lot, but you have access to all of the member's forum information as well, so you can really tailor the experience for them without having to create a user account in PW for them - I do have some experimental code that will do that as well though :)

  • Like 1
Link to comment
Share on other sites

Need to read more on CDN. I heard of it, but I don't know what it is. Like Amazon services?

Content delivery network, like Akamai (and Amazon too, you are right). 

Anyone already doing this that you know of?

I've developed several sites that do it. It's also supported by Form Builder. There's really not much to pushing data to Salesforce though, they make it pretty easy. 

Link to comment
Share on other sites

One thing that has just struck me looking at your existing sites, your new one should be a responsive design so that it is nicely viewable on both tablets and smart phones as well as normal screens.

Thankfully, since ProcessWire is agnostic when it comes to how you output data into your templates, you can use any sort of responsive template or framework you wish with ease.

For instance, this demo mockup (sorry, very incomplete) is using Twitter Boostrap more or less straight out of the box

http://pwdemo1.stonywebsites.co.uk/

Sorry, a bit off your original question, but still useful

Joss

Link to comment
Share on other sites

Joss, totally agree. For the national site I'm just using a default template. I haven't looked it that much via a mobile phone. For my state site, justicepartyct.org, its really a simple one page site and also considered VERY VERY temporary. I'll use Bootstrap or Foundation to redo both templates. We are still working on our branding (ie logos, colors, etc) so need to get that sorted out then I can dive into building nice templates that are responsive.

I'm enjoying everyone's input.

Cheers

Carlos

Link to comment
Share on other sites

Should someone choose to name their /site/ and /wire/ directories something else (and update their /index.php to reflect it) then I don't know of any way to detect ProcessWire from the outside.

Hey Ryan. So we can rename the /site and /wire directories to anything we want?! Is it possible to change the images path aswell?

Link to comment
Share on other sites

Have a look in index.php and you should see what is possible.

Only issue I can see is you would have to remember to make the changes every upgrade so I wouldn't bother personally as there's no security reason for doing it that I know of (changing the admin URL is upgrade-friendly though).

Link to comment
Share on other sites

Hey Ryan. So we can rename the /site and /wire directories to anything we want?! Is it possible to change the images path aswell?

Technically you can, as those paths are defined in /index.php and nowhere else. I haven't actually tried it since PW 2.0 pre-release, when I was experimenting with different defaults. Though ProcessWire was designed to be "invisible", as much as possible, so the intention was that people who needed to change that stuff, could. 

If you do change those, you have to be aware of upgrades to /index.php as Pete mentioned. But you also have to be aware of the .htaccess file, which has those paths hard-coded (as they have to be). You would need to replace references to "site" and "wire" in that file with whatever you had renamed them to. And you'd want to double check that all the security blocking access to the directories was still working correctly. 

When ProcessWire gets big enough to be something that automated tools would be hunting for, then we'll take this further with real testing and documentation on how to completely disguise your site. But I think it is kind of wasted effort at this point in time. Meaning, I would avoid changing your /site/ or /wire/ directories. 

Link to comment
Share on other sites

I think CloudFlare would be a perfect fit for your needs: it is both a cheap (the free version is very, very good) CDN and a formidable ally against all kinds of attacks: https://www.cloudflare.com/

In their blog, they've mentioned many times how they've protected political organisations against attacks. And it looks like Wikileaks has been able to avoid massive DoS attacks thanks to CloudFlare. 

Link to comment
Share on other sites

Hi

I use Cloud Flare all the time for my own sites - the free version.

It is very customisable and has a very good and intuitive UI.

At its basic level it just hosts your zone files and uses their name server.

But if you go via their full system, it filters out a lot of potential problems as jacmaes points out above.

In addition it can cache various elements of your site - for instance your JavaScript files - so that they are not being served from your server. On a quiet site that does not make a huge difference, but on a busy site can be quite substantial.

  • Like 1
Link to comment
Share on other sites

It basically takes the load off in terms of your images, CSS and JS (from memory) and serves these from the server closest to the person making the page request - they generally have a lot of servers all around the world.

Last time I tried Cloudflare I had some issues with it and ProcessWire - I probably could have fixed them but time was against me on that project and I haven't tried again yet, so there may be some testing required to get it to work.

EDIT: Joss beat me to it. I need to write less :D

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...