All work

VIMAGIC.STUDIO

Identity / Web development / Integrations

Design, development & business systems

Brand identity, a bespoke cake website and the integrations behind a Glasgow patisserie studio.

Visit website

The identity

I designed the identity around oat ivory, deep plum and serif typography. I used the same palette and typography for the website and marketing materials.

I documented colour, typography and image direction in a brand book. For the product imagery, I set the direction around warm studio light and uncluttered backgrounds.

From browsing to enquiry

Visitors can browse cake collections and flavours, then open the cake request builder to choose a size and add personal details.

The site shows pricing and advance-notice information before a request. The studio reviews the details and confirms a final quote before payment.

Desktop and mobile

I arranged the desktop pages around large cake photographs, with links to the collections, flavours and request builder. On mobile, I stacked the content to fit the product details and request form onto a narrow screen.

Technical implementation

My work covered the identity, responsive website and the systems behind enquiries, customer email, payments and studio administration. I also handled the domain and business email setup.

The application runs on Cloudflare Workers, with D1 for structured records and R2 for uploaded media. Server-side API endpoints connect the website to Brevo and Stripe. Provider credentials stay in server secrets.

Brevo API & email

I connected Brevo’s v3 API for branded customer communications and marketing email. The integration covers sender configuration, contact synchronisation and HTML email templates, with separate handling for service messages and promotional subscriptions.

Newsletter signup uses double opt-in: requesting updates does not immediately subscribe a visitor. Confirmation and unsubscribe links control the subscription state, including one-click unsubscribe headers. Contact updates preserve marketing exclusions, so making an enquiry or purchase does not automatically add someone to a marketing list.

The studio can preview customer emails, inspect delivery status and review retries. Transactional delivery includes an outbox and idempotency controls to reduce duplicate sends. Rate limits can be retried; an uncertain provider response is held for review rather than treated as a successful delivery. Transactional tracking is disabled in the live configuration.

Stripe API & payments

I handled the Stripe account setup and connected the payment API, with separate test and live credentials and webhook signing secrets. The live configuration explicitly enables real payments against the studio’s merchant account.

The embedded payment flow uses Stripe PaymentIntents created on the server in GBP. Before creating a payment, the application checks the accepted quote, its revision, the availability hold and the configured merchant account. The integration verifies that the account can accept card payments before creating a live intent.

Each intent uses an idempotency key and metadata connecting it to the order and quote revision. Webhooks are verified against the raw request payload with Stripe’s signature verification and timestamp tolerance. Payment status is reconciled from verified provider events; a browser return alone does not mark an order as paid.

Private studio admin

I built a private studio workspace for maintaining the website and managing the work that follows a customer request. It brings content, uploaded media, enquiries, orders and email tools into the same application as the public site.

Access is protected with Cloudflare Access. The backend verifies the signed identity token and checks it against the authorised owner. Write requests also have origin and CSRF checks.

The content workflow supports drafts, previews, publishing and restoring an earlier published version. Revision checks prevent an older editor session from silently overwriting newer changes, and media validation keeps uploads within the supported formats and limits.

Custom analytics

I implemented first-party analytics with a dedicated event endpoint and a private reporting view for the studio. Optional collection starts after consent. Temporary visit identifiers are pseudonymised on the server, and the event schema excludes customer details and form answers.

The dashboard provides 7-, 30- and 90-day views of daily activity, popular pages, viewport categories, broad referral sources and request steps. Events cover navigation, flavour and design selections, image views, request attempts and request errors. Visitor and studio activity are reported separately.

The owner can export aggregate JSON for further analysis, without customer details or visitor identifiers. Reports cover up to 90 days, and access is restricted to the owner.

Domain & business email

I registered and connected vimagic.studio, configured its DNS and HTTPS delivery, and set up business email on the studio’s own domain through Google Workspace.

The email setup includes MX routing, SPF, DKIM and DMARC. Brevo has its own authenticated sending records, alongside branded domains for email links and images. This keeps the customer-facing website, mailbox and marketing communications under the same domain identity.

Next projectFORMA