Project Summary
National Geographic Society, GeoBeeContest Management
National Geographic Society
Online Media
Practice Area
Digital Transformation

Quoin led the development effort for a new site to manage the National Geographic Society Geo Bee program. This focused effort required our dedicated project team to build a complete platform, including registration, invoicing, check/credit card processing, analytics, and contest administration site. We delivered the site on time, accommodating significant changes in the project scope required by the client.

Each year, 12,000 schools in the United States participate in the National Geographic Society's Geo Bee. The contest is designed to encourage teachers to include geography in their curriculum, 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 teams of students from eighteen countries.

Quoin was responsible for the complete development effort - visual design, architecture, implementation, testing, and deployment. Since the launch of the site, we also continued 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 technologists, 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

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 residing 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.

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.

School Registration Portal