Completed Web Application

MyACE JP — Photo Studio Commerce & Design Platform

Japanese photo studios' customers pick their shots, lay out the product themselves, and the studio approves the design before it prints.

MyACE JP — Photo Studio Commerce & Design Platform
01 — THE PROBLEM

A photo studio's business doesn't end at the shoot. The customer then has to choose which images go onto which products — albums, prints, panels, each with its own page count, size and layout — and someone has to lay them out. Done by email and phone, that's a slow loop of proofs going back and forth, and the studio absorbs the labour of designing products the customer could arrange themselves. A generic e-commerce checkout can't handle it: the product doesn't exist until the customer's photos are placed into it, pricing depends on the studio visit and any active campaign, and an order can't go to print until both sides have agreed the design is final.

02 — OUR SOLUTION

A Django REST backend with two separate React frontends — one for customers, one for studio staff — built around an in-browser design editor. Customers browse their studio gallery, mark favourites, and lay their images into product templates, with the composition rendered client-side and captured as a preview. A design moves through explicit states — unedited, saved, edited, re-edit, confirmed, waiting — so the studio can send a layout back for revision and nothing reaches production until it's confirmed. Products are keyed to design pages by product code, with dependent products and per-page sizing. Pricing is campaign-aware in a way that reflects how studios actually sell: a sale can run on fixed dates, or relative to the customer's visit date, so a discount window can open per customer rather than per calendar. Alongside the shop sit an annual pass product with its own cart, order and shipping management with multiple carriers and zone-based charges, studio and plan records with visit registration, and a mail-magazine and templated-email system for customer communication.

Outcome

The largest system in the portfolio, live at myace.shop as three deployable pieces — a Django REST API, a customer-facing React application, and a separate staff admin application — sharing one backend. Customers move from studio gallery to laid-out product to confirmed design without the studio drafting proofs by hand, and nothing reaches production until the studio has approved it. Covers the full commercial cycle behind that: campaign pricing that can run relative to each customer's visit date, an annual pass product with its own cart, multi-carrier shipping with zone-based charges, and templated email plus a mail-magazine system for ongoing customer contact. JWT authentication with Google OAuth sign-in, and Swagger-documented endpoints.

Key features

  • In-browser design editor placing customer photos into product templates
  • Design approval workflow across six states, with studio-initiated re-edit before anything prints
  • Client-side composition capture producing preview images from the live layout
  • Product catalogue keyed by product code with page sizing and dependent products
  • Campaign pricing that can run on fixed dates or relative to each customer's studio visit
  • Personal galleries with favourites, shareable gallery links, and per-image favouriting
  • Annual pass product with its own types and dedicated cart
  • Order management with multiple shipping companies, zone-based charges and payment records
  • Studio, plan and visit registration records
  • Templated transactional email plus a mail-magazine system with received-mail tracking
  • Sales target tracking
  • OTP verification for both customers and admin accounts
  • FAQ management by category, news, and editable homepage design blocks
  • Separate staff admin application, distinct from the customer app
  • JWT authentication with Google OAuth sign-in
  • Swagger and ReDoc API documentation

Tech stack

Django 4.1 Django REST Framework SimpleJWT drf-yasg django-cors-headers MySQL React Redux Toolkit Axios Cropper.js html2canvas dom-to-image JSZip Day.js Google OAuth

Build something similar?

Tell us about your project. We'll share how we'd approach it.

Start a project