The British Columbia Institute of Agrologists (BCIA) is a public authority which promotes competent and ethical practice of agrology in BC.
Deck Fifty was contracted to develop a new Drupal website for BCIA which serves as both their public facing website as well as their internal members database. Working together with Redbird Communications for branding and design, we were able to deliver a fresh new look while at the same time developing a robust backend for reliable operations into the future.
A key aspect of development was ensuring that all features be easy to use for the staff administering the site, and equally importantly, easy for members. To achieve this goal we prioritized accessibility and ease of use for each feature that was implemented. We chose a crisp easy to read typeface, and created a fully responsive layout for full function on any screen size. In addition to the public facing menu system, we also included a persistant member menu for logged in users with quick access to all major member functionality.
Drupal was chosen for the site platform because of its extremely flexibile configuration and scalable architecture. The BCIA member profiles feature called for a robust permissions system and complex data structure which Drupal handled perfectly. Drupal is open source and is maintained by thousands of developers which means that it is constantly updated to ensure security and up to date features. The large number of community contributed modules allow for fast deployment of complex features without breaking the bank.
Challenges & Solutions
Permissions: Each BCIA member has an optional on-site public member profile and can choose to expose it to the built in public searchable database. Member profiles can contain everything from pictures, contact information, and personal bios, to education/employment and current status information. In addition, each piece of member content has individual privacy settings which allow users to choose exactly who sees what.
Performance & Scalability: The BCIA website serves thousands of members and provides unique content to each logged in user. To ensure smooth operations, advanced caching methods were implemented to ensure site performance would be maintained even during peak traffic. In addition to Drupal's built-in page and block cache, the site also takes advantage of views argument and entity caching as well as the Redis key-value store for a quicker alternative to MySQL.
Data migration: After an extensive review of BCIA's legacy database and website, Deck Fifty developed a custom migration script to help transition hundreds of thousands of unique peieces of content to the newly constructed website. Leveraging the Drupal Migrate API, the migration included membership data, ecommerce sales history, user privacy settings, photo galleries, public pages, and more.
Ecommerce: A custom ecommerce framework allows members to update their membership, pay dues and register for paid events. To facilitate online payments, Deck Fifty created a custom payment processor module using the Beanstream Payments API.
Custom code: We attempt to use drupal.org contributed modules wherever possible, but due to the highly specific nature of BCIA's member database a good amount of custom code was written. To remain as future friendly as possible, we strictly adhered to all Drupal coding standards and relied heavily upon Drupal's many core API's. Including our custom data import script, close to 10,000 lines of code were produced during this build.
Key modules/theme/distribution used
- Content Access
- Mime Mail
- Mail System
- Views argument cache
- Views content cache
- Views data export
Throughout the course of development comments and solutions were submitted against bug reports for various contributed Drupal modules.