Payments are simulated. No card is ever charged. Singapore / SGD

Phase 1 · frontend foundation

A storefront with room for what comes next.

42Factors is the working visual foundation for the INF2006 ecommerce experience: warm surfaces, clear states and an interface that stays useful when the network or the catalogue is having a hard day.

Presentation sample · no catalogue, account or checkout data is connected yet.

The point of view

Simple signals. Thoughtful details.

Every shared choice should make the next feature easier to understand, test and trust.

01

Warm by default

Cream canvas, ceramic surfaces and layered greens give the storefront a confident, grounded rhythm.

02

Clear under pressure

Empty, validation and dependency states are designed as first-class moments instead of afterthoughts.

03

Ready for real data

Presentation samples are labelled plainly so live catalogue and account work can slot in without guesswork.

Shared system

The next layer should feel inevitable.

These tokens, components and states are deliberately small. They make room for real account, catalogue and checkout work without asking every page to reinvent its language.

HTTP-first Rendered by Django
Token-led Shared CSS vocabulary
Mobile-ready Keyboard-friendly layout

Built for the whole journey

States are part of the product.

Presentation samples below show the visual language for moments that will become live once the corresponding backend contracts exist.

Empty state

No saved items yet

A quiet starting point makes it clear what belongs here when a real account is connected.

Presentation sample · no action attached

Validation sample

Keep the next step clear.

Preview

Enter a valid email address. Presentation sample only.

Disabled until the authentication and notification contracts land.

Presentation sample, clearly marked.

Live messages will be attached to the relevant Django form or HTMX fragment once those backend contracts are implemented.

Small live interaction

Load the design notes without leaving the page.

HTMX GET

Press the button to load a presentation fragment from Django.

Loading…