Back to selected work

Case study / Custom commerce

Chimpee — Custom Print-on-Demand E-Commerce Platform

Custom print-on-demand commerce with social photo import and ordering workflows.

  • CodeIgniter
  • PyroCMS
  • MySQL

Project at a glance

  1. Device upload
  2. Unified photo picker — custom PyroCMS module
  3. Live order wizard: product options and cart
View the full project diagram

Project context

A Technical Case Study — CodingBeings

Role: Full-Stack Developer | Timeline: 2017–2018 (~1 year) | Stack: PHP, CodeIgniter, PyroCMS, MySQL, Facebook Graph API, Instagram API, jQuery, Bootstrap, CamanJS

The Idea

Chimpee's product is a physical frame with a removable, replaceable canvas insert. Instead of buying a whole new framed print every time you want to display a new photo, the frame is a one-time purchase — only the printed canvas insert needs replacing. The client's own tagline summed up the customer journey in three steps: Snap a photo, Click through size and package options, Hang the finished canvas once it arrives. The client needed a custom e-commerce web application to sell this: customers pick a size and package, upload or import a photo, customize it, and place an order.

What I Built

I was brought on to build the platform from the ground up on top of PyroCMS, a modular CMS built on the CodeIgniter PHP framework, since it gave the client a CMS-managed marketing site plus the flexibility to bolt on fully custom commerce logic as PyroCMS modules.

Core ordering flow

A multi-step wizard modeled on the product's "Pick a Size → Pick a Package → Upload & Customize your image" concept: product selection, image upload/customization, cart, shipping details, shipping options, payment, and order confirmation, implemented as a custom PyroCMS module (create_and_order) with its own controllers, models, and views.

Social photo import

Rather than limiting customers to uploading a file from their computer, I integrated Facebook Login + Graph API, using the official Facebook PHP SDK, so customers could browse and select directly from their existing Facebook photos, and Instagram OAuth + API, via a custom-built API client, so customers could pull an image straight from their recent Instagram posts.

Responsive front-end

Implemented the client's custom visual design (delivered as static HTML/CSS mockups) as a fully responsive PyroCMS theme using Bootstrap, tailored specifically for mobile devices to keep the experience simple for customers, with a homepage image slider (Jssor) and client-side photo-filtering tools (CamanJS) so customers could adjust their image before ordering.

Admin & catalog management

Built out the product-catalog side (products module) with its own admin screens for managing sizes, packages, and product metadata, backed by PyroCMS's built-in admin, permissions, and settings systems.

Photo Import & Order Flow Architecture

Two different social platforms and a plain device-upload path all feed into one unified photo picker inside the custom PyroCMS module. From there, the order wizard's product-configuration steps were live and working; the final checkout leg was built as pages only, with the underlying shipping, payment, and confirmation logic not yet implemented when the project wrapped. FireSale, a mature third-party PyroCMS e-commerce addon, was evaluated in parallel as a possible alternative checkout engine but was never connected to this flow.

Photo import and order flow

Device upload
Facebook Graph API
Instagram OAuth and API
Unified photo picker — custom PyroCMS module
Live order wizard: product options and cart

Built pages — logic not implemented

  1. Shipping page
  2. Payment page
  3. Confirmation page

The live flow ends at the cart. Shipping, payment and confirmation pages were built but their calculation/gateway/confirmation logic was not implemented. FireSale was evaluated as an alternative and not connected to this flow.

Responsive representation of the supplied figure.
View original diagram at full resolution

Scroll within the figure to inspect its original labels and connections.

Photo import and order flow
Download original figure

Figure 1 — Chimpee photo import and order flow, showing what shipped end-to-end versus what remained unbuilt or evaluation-only.

Technical Highlights

Designed and built two custom PyroCMS modules (products and its successor create_and_order) end-to-end: schema, controllers, models, views, and admin CRUD.

Implemented OAuth-based integrations with two third-party platforms (Facebook and Instagram), including session-based token handling and API response parsing into a unified photo-picker UI.

Evaluated and integrated FireSale, a third-party PyroCMS e-commerce addon, for potential use as the underlying cart/catalog/shipping engine alongside the custom ordering wizard — a deliberate build-vs-buy decision rather than a default one.

Translated static design mockups into a maintainable, responsive CMS theme, keeping marketing content editable by non-developers through PyroCMS's page/widget system.

Where the Project Landed

Over roughly a year, the build reached approximately 85% completion. The parts that shipped and worked end-to-end: the marketing site, product browsing, the full photo upload/import flow (device, Facebook, and Instagram), image customization, and the product-configuration steps of the order wizard. What remained unfinished at the time the project was shelved: the final leg of checkout — live shipping-rate calculation, payment-gateway processing, and order confirmation logic.

The client ultimately decided not to continue the project after about a year, choosing to step back from the idea rather than compete against an established competitor offering lower fees. The decision was a business one, not a reflection of build quality or progress — the remaining scope was well-understood and estimable, not a case of the project stalling technically.

Takeaways

This project is a good example of scoping and delivering a non-trivial custom feature — multi-provider social photo import, a multi-step commerce wizard, CMS-integrated theming — inside a legacy but still-widely-used CMS framework, and of making pragmatic build-vs-buy calls (evaluating a ready-made e-commerce addon vs. custom checkout logic) under real client constraints.

Have a platform or integration to discuss?

Tell us about your project

Cookie settings

Optional analytics and marketing tracking are not active on this version of the website. Essential enquiry security may still use a session cookie.

Cookie information · Privacy information