Two Factor Authentication [link]
Goal: give users the ability to protect their account with a higher grade of security. Must integrate with our existing access/permission layer and session handling, work on any mobile device, support recovery codes, work across all of our hosted entities, include reporting and administrative tools, include ops tools like key rotation and feature flags, and be accompanied with clear anti-scam policies for client services.
Tech: Libqrencode for QR generation, Redis for session storage.
HTTPS for Custom Domains [link]
Goal: extend the protection of HTTPS to member websites that use custom domains, without the member needing to do any additional setup or incur any cost. Certs must be generated and renewed automatically.
Tech: Let's Encrypt/Certbot for on-demand cert generation and automated renewals, PostgreSQL for data, OpenSSL for cert debugging, HAProxy for SSL termination, LsyncD for cert distribution.
Departures Board
Goal: modeled after the departures boards at airports, this status board shows scheduled code deployments so stakeholders can see, at a glance, what's shipping. It's displayed on a monitor near PhotoShelter's developers, and embedded in Jira dashboards.
Tech: CSS Grid, Google Calendar API, JWT.
PhotoShelter Member Dashboard [link]
Goal: demonstrate value and create stickiness by building a data-rich member dashboard. As sole dev on the project, my tasks ranged from automating daily API queries and CRUD, to generating compelling graphs and optimizing UI.
Tech: Google Analytics Core Reporting API for data, d3.js for visualization, Isotope for layout.
Design credit: Kim Burgas