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
Built pages — logic not implemented
- Shipping page
- Payment page
- 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.
View original diagram at full resolution
Scroll within the figure to inspect its original labels and connections.

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.
