Case study Service commerce / Production platform
Spider Digitizing
A framework-free PHP production platform linking public rates and quote tickets to customer accounts, staff permissions, and delivery workflows.
Problem statement
Explain a technical service clearly, then keep artwork requests, pricing, production assignments, customer communication, and billing connected after the quote.
Proof / A quick look
See the product before the detail.
01 / Overview
The brief.
Spider Digitizing brings a production-floor website and a working service application together. The public ledger and ticket explain the offer before asking for artwork. Customer accounts then carry quotes, offers, conversations, orders, revisions, and invoices; staff tools carry the job into pricing and production. My work includes the site’s visual direction and the PHP application behind it, with an explicit permission model that gives support, production, finance, and content staff their own working responsibilities.
02 / Situation
What was already true.
The public site presents digitizing, vector work, and patches with rate, turnaround, format, and production context. Guest quote entry lets a new customer begin directly from the public ticket. The deeper product supports customers returning to offers, message threads, orders, revisions, and invoices, plus staff who need to price and deliver those jobs.
03 / Tension
The competing needs.
A short public ticket must collect enough detail for a production decision. Once work is accepted, support, production, finance, and content tasks need different actions on the same application. The customer needs a continuous account of the job, while each staff role needs the queue, record, and controls relevant to its part of the handoff.
04 / Decision
The choice that set the shape.
Use the public ledger and quote ticket as the entry layer, then carry requests into customer and staff workflows. Structure the PHP application into routed surfaces and domain code, with explicit permissions for quoting, orders, commercial records, publishing, settings, and staff management.
05 / Responsibilities
What I designed and built.
My implementation covers the production-led art direction, responsive public pages, guest quote and cart/bundle entry, customer account workflows, and staff operations. That includes quote offers and conversion to orders, assignments, deliverables and revisions, message threads, invoice access, billing exports, and outgoing mail handling. I also built the application’s content and administration paths so maintaining public information is a named responsibility alongside support, production, and finance.
06 / Architecture
The implementation behind the interface.
The application is framework-free PHP 8.2+ with a custom router, PSR-4 application structure, and MySQL accessed through PDO. Separate admin, customer, and shop route files organise the main surfaces. Domain repositories handle the data behind quotes, orders, accounts, and permissions. Composer supplies PHPMailer 7 for mail and PHPUnit 10 for tests. Staff queues and customer views meet on persistent job records; billing/export and mail-outbox paths support the follow-up around those jobs. Routing, domain data access, and browser-facing pages give each part of the service journey a defined place in the application.
07 / Access control
Who can do what.
RbacRepository resolves permissions through user_roles, role_permissions, and permissions. The super_admin role has all permissions, including staff management. The administrator covers operational administration and settings; refund permissions belong to finance and super_admin. A support_agent views and assigns quotes, changes quote status, and views customers. A production_manager converts quotes and manages order assignments, status, and deliverables. Digitizer and designer roles can view orders and upload deliverables; finance can also view payments and orders. The content_editor has both content.edit and content.publish, which remain distinct permissions. Separate permissions cover audit access. Customer and guest journeys have their own routes alongside the staff permission model.
08 / System
How the pieces fit.
A guest supplies a production request; staff review and price it as an offer. Customer account views keep the quote and conversation accessible, while approved work moves into an order and assignment. Production attaches deliverables and handles revision work. Invoices, billing views, exports, and queued mail support the commercial follow-up. The public rate story and operational record are two parts of the same service journey.
09 / Evidence
What the shipped interface can show.
The public ledger presents rates, turnaround, and file-format context beside the quote ticket. Customer routes carry quotes, offers, messages, orders, revisions, and invoices; staff queues provide assignment and quote-conversion actions. The role/permission seed maps those staff responsibilities to named permissions. Billing exports and the mail outbox support the commercial records and communications that accompany production.
10 / Next iteration
The next question.
Review the information carried from a guest ticket into an offer, production assignment, revision, and invoice. Compare support, production, finance, and content tasks against their permission sets, and simplify duplicated explanations while preserving the context that the next person needs.
11 / Feature list
Features.
- Public rates and production-led service pages
- Guest quote and cart/bundle flows
- Customer quotes, offers, and message threads
- Quote-to-order conversion
- Staff production queues and assignments
- Deliverables and revisions
- Invoices, billing, and exports
- Mail outbox
- Database-backed roles and permissions
- Separate content-edit and publish permissions
Gallery
Project images.
Open an image to view it. The full-image link still works when scripts are unavailable.