National Geographic GeoBee - Contest Management Site

National Geographic GeoBee - Contest Management Site

Quoin built a sophisticated site to support the National Geographic Society 'Geography Bee' program. This focused development effort required our dedicated project team to build a complete platform, including registration, invoicing, check/credit card processing, analytics, and supporting an administration site. We delivered the site on time, accommodating significant changes in the project scope that were required by the client.

National Geographic GeoBee - Contest Management Site

Quoin built a sophisticated site to support the National Geographic Society 'Geography Bee' program. This focused development effort required our dedicated project team to build a complete platform, including registration, invoicing, check/credit card processing, analytics, and supporting an administration site. We delivered the site on time, accommodating significant changes in the project scope that were required by the client.

Background

Each year, 12,000 schools in the United States participate in the National Geographic Bee. The contest is designed to encourage teachers to include geography in their classrooms, spark student interest in the subject, and increase public awareness about geography. Schools with students in grades four through eight are eligible for this entertaining and challenging test of geographic knowledge. School winners may qualify for a State Geography Bee. State winners participate in the National Geography Bee held each May at National Geographic headquarters in Washington, D.C. and televised on the National Geographic Channel. Biennially, National Geographic organizes an international geography competition comprising of teams of students from eighteen countries.

Approach

Quoin was responsible for the complete development effort - graphic design, architecture, implementation, testing, and deployment. We will also continue to provide operational support, maintenance, and enhancements for this key site for the National Geographic Society's brand. We deployed a project team of five technologies, including a project manager and technical lead. The Quoin project team progressed from concept to launch-ready in 12 weeks. Although this effort was defined as fixed-cost and fixed-timeline, we maintained an agile approach, collaborating with client stakeholders and adapting to changing requirements. Our engineers applied test-driven and continuous integration  practices. Thus, the system includes full test coverage, automated testing, and automated deployment for both development and production environments.

 

Geo Bee Site

Architecture

We defined a simple, scalable architecture to support the GeoBee application:

  • User-interface implemented in HTML5/JavaScript;
  • Python Django application to support functionality;
  • PostgreSQL database to provide persistent data storage; and,
  • Nginx and Gunicorn WSGI servers to support request handling.

In addition, a customized version of the Django admin module was used to support content management and site administration functions. For example, we changed the normal admin interface to present a global selector for the current year on each admin page, defaulting to the current year. We also added the capability to download the data in formats such as CSV or Excel.

For payment processing we originally recommended using the Stripe payment processor. This system works by creating an opaque token in the browser that is passed to our back-end server to charge the user via a server-side API. This obviates the users' credit card information ever leaving the browser and the resultant regulatory burden for the application server. The Stripe service meets PCI Level 1 compliance and its fees are competitive to all other top-notch payment processors. It also offers the ability to postpone payment in the case of delays for home-school approval, while still avoiding the credit card data to reside on the application server. Stripe also has very good documentation and a solid client base, which will help support its long-term viability. We are by no means locked into using this payment processor, but we do believe it will be a solid choice. However, on consultation with the client, we elected to use PayPal to support payment processing. This vendor was already used for other sites at NGS, and provided a complete API. Our team was able to make this change during the project, and overcame a number of discrepancies between the service documentation and its actual implementation.

 

School Registration

To handle the various email tasks, the Celery task queue system was used, with a RabbitMQ messaging back-end. This provided easy integration with Django and supports robust error-handling capabilities to help ensure email delivery. To process the actual email delivery, we used the Simple Email Service (SES), another great AWS offering.

 

Payment