Page 1 of 27
System Requirements Document for clothing-brand
1. Introduction
FIFFTH is a young Indian direct-to-consumer casual apparel label whose product is a joke printed in bold type on a t-shirt. The brand's existing website at https://fiffth.com/ is the authoritative brand and domain context for this project. The user's requirement is to take that existing site and make it a professional clothing brand website — one that presents the label credibly to its audience while keeping the loud, ironic, self-aware streetwear register that defines the product.
The product intent is therefore twofold and inseparable:
- Present the brand professionally. The site must read as a real, trustworthy label — a real catalog, real product pages, real policies (free shipping across India, cash on delivery and online payment via UPI/card, 7-day easy returns) — rather than a hobby page.
- Keep the sentence as the hero. FIFFTH sells the sentence before it sells the fabric. The graphic text on each tee is the product's defining asset and must be treated as such throughout the public experience.
The audience is consumers in India seeking casual apparel, primarily 18–30, phone-first, arriving with Instagram energy, paying by UPI or cash on delivery. The site must serve two accepted human roles: the Brand Owner, who must be able to establish and maintain the brand's public presence and confirm the site reflects the brand as intended, and the Shopper, who browses the brand's clothing offerings, reviews product details and imagery, and decides whether to engage with the brand.
Page 2 of 27
2. System Overview
The system is a first-party web application for the FIFFTH clothing brand, delivered as a custom user interface with application-owned identity. It has two distinct halves that share one brand surface:
- A public half — an anonymous landing experience, a browsable product catalog, focused product detail views, and a contact destination — where a Shopper learns what FIFFTH is, reads the jokes, examines the garments, and takes the next step toward obtaining them.
- A protected owner half — a brand content workspace and a product management workspace — where the Brand Owner maintains the brand's identity and public presentation and maintains the durable clothing product catalog.
The public half is anonymous and requires no account. The protected half requires the Brand Owner to establish identity on first use and to verify identity on return.
Page 3 of 27
2a. Product Interpretation and Delivery Boundary
Delivery ownership. The site is a first-party application. All accepted pages — public and protected — are owned and rendered by the application itself. There is no provider-owned storefront, no external marketplace surface, and no headless delivery boundary established by the source. The existing fiffth.com site supplies brand and domain context only; it does not supply a third-party platform that owns any accepted behavior.
Access ownership. The public destinations (Landing, Products, Product Details, Contact) are anonymously reachable and require no identity. The protected destinations (Brand Content, Product Management) are restricted to the Brand Owner. Because the Brand Owner is self-starting and no invitation, provisioning, or deployment bootstrap boundary is established by the source, identity is established by self-service enrollment and re-established by returning verification. The enrollment and verification interactions are themselves anonymously reachable — a protected destination cannot own the interaction that grants access to itself.
Current versus future. Everything specified in this document is current. No future-horizon requirements were accepted. Nothing in this document should be read as authorizing adjacent conventional e-commerce capability that the source did not accept — in particular, no cart, no checkout, no payment processing, no order management, no customer accounts, and no shipping or returns workflow are specified here. The source's stated policies (free shipping across India, cash on delivery and online payment via UPI/card, 7-day easy returns) are brand facts that the site presents; they are not, in this document, a transaction system.
Page 4 of 27
2b. Source Content Inventory
The reference directive for https://fiffth.com/ declares uses: ["domain_context", "brand_source"] and does not declare content_source. No source content inventory is therefore included.
2c. Page Content and Component Coverage
Landing
- Information and state. The anonymous first impression of the FIFFTH brand. Presents the wordmark, the brand's defining product quote, a featured garment, the drop identity and price of that garment, and a continuous band of the brand's other tee jokes. No identity required; no protected state is visible.
- Primary actions. Proceed to the product catalog ("Shop the drop"). Proceed to the featured product's detail view.
- Supporting actions. Navigate to Products, Drops, About, and Contact from the fixed top bar; open the full-screen navigation overlay on mobile.
- Domain entities. Brand identity (wordmark, brand name FIFFTH), product quote, product photograph, drop number, price, brand joke ticker entries.
- Component responsibilities. Fixed top bar with wordmark, uppercase navigation links, hairline rule, and a pinned shop block; hero type block carrying the oversized wordmark and the stacked quoted product line; hero product plate carrying the featured garment photograph with its drop tag and price tag; marquee ticker band of brand jokes; section dividers.
- States. Loading: hero type block and hero product plate resolve to final state; ticker begins its continuous pass. Empty: if no featured product is available, the hero product plate is omitted and the hero type block and shop action remain intact. Success: wordmark, quote, featured garment, drop tag, price, and shop action all render whole and legible at 375px, 768px, and 1280px. Error: if the featured product cannot be resolved, the hero degrades to the type block plus the shop action with no broken image frame. Recovery: the Shopper can always reach Products from the top bar regardless of hero state.
Sign Up
- Information and state. Anonymous self-service enrollment for the Brand Owner. Collects the minimum identity information needed to establish an owner account. No protected state is visible before enrollment completes.
- Primary actions. Submit enrollment to establish the owner account.
- Supporting actions. Move to Login if an account already exists; return to Landing.
- Domain entities. Owner account identity, enrollment submission.
- Component responsibilities. Enrollment form with labeled fields and inline validation messaging; submit block; link to Login.
- States. Loading: submit block shows a pending state and prevents duplicate submission. Empty: form renders with empty fields and no error messaging. Success: account is established and the Brand Owner is taken into the protected workspace. Error: invalid or incomplete input is reported inline against the specific field; a submission failure is reported at form level with the entered values preserved. Recovery: the Brand Owner can correct the reported field and resubmit without re-entering the rest of the form.
Page 5 of 27
Login
- Information and state. Anonymous returning verification for the Brand Owner. Collects the credentials that re-establish the owner's identity. No protected state is visible before verification succeeds.
- Primary actions. Submit credentials to verify identity and resume protected work.
- Supporting actions. Move to Sign Up if no account exists; return to Landing.
- Domain entities. Owner account identity, verification submission.
- Component responsibilities. Verification form with labeled fields; submit block; link to Sign Up; verification failure messaging.
- States. Loading: submit block shows a pending state and prevents duplicate submission. Empty: form renders with empty fields and no error messaging. Success: identity is verified and the Brand Owner is taken into the protected workspace. Error: incorrect credentials are reported without disclosing which element was wrong; a submission failure is reported at form level with the entered values preserved. Recovery: the Brand Owner can retry verification; the form remains usable and no protected state is exposed on failure.
Products
- Information and state. The public catalog of the brand's clothing products. Each entry presents the garment image plate and a bordered spec block carrying the product name, its quote in quotation marks, the available size row, and the price. No identity required.
- Primary actions. Open a product's detail view.
- Supporting actions. Navigate to Landing, Drops, About, and Contact; open the full-screen navigation overlay on mobile.
- Domain entities. Product (name, quote, sizes, price, image, alternate image, drop number).
- Component responsibilities. Product grid of industrial spec-label cards; card image plate with drop tag; card spec block with name, quoted line, size row, price, and view block; fixed top bar; section dividers.
- States. Loading: the grid renders its card frames and resolves product content into them. Empty: when no products are published, the catalog shows a plain statement that no products are currently listed and keeps navigation intact. Success: every card renders its image plate and full spec block whole and legible at 375px, 768px, and 1280px. Error: if the catalog cannot be resolved, the page reports the failure and offers a retry. Recovery: retry re-requests the catalog; navigation to other destinations remains available throughout.
Product Details
- Information and state. The focused public view of one garment. Presents the product's imagery — including the alternate shot — and its clothing details: name, the quote in quotation marks, available sizes, price, and drop number. No identity required.
- Primary actions. Proceed to Contact to take the next step toward obtaining the garment.
- Supporting actions. Return to Products; navigate to Landing, Drops, About, and Contact.
- Domain entities. Product (name, quote, sizes, price, image, alternate image, drop number).
- Component responsibilities. Product image plate with drop tag and alternate-shot swap; bordered spec block with name, quoted line, size row, price, and drop number; contact action block; fixed top bar.
- States. Loading: the image plate and spec block render their frames and resolve product content into them. Empty: if the requested product does not exist, the page states that the product is unavailable and offers a return to Products. Success: image plate, quoted line, sizes, price, and drop number all render whole and legible at 375px, 768px, and 1280px. Error: if the product cannot be resolved, the page reports the failure and offers a retry alongside the return to Products. Recovery: retry re-requests the product; the return to Products is always available.
Page 6 of 27
Contact
- Information and state. The public continuation destination for taking the next step toward obtaining or engaging with the brand's clothing. Presents the brand's stated policies — free shipping across India, cash on delivery available, pay online via UPI/card, 7-day easy returns — and the means of reaching the brand.
- Primary actions. Send an enquiry to the brand.
- Supporting actions. Return to Products or to the product the Shopper came from; navigate to Landing, Drops, About, and Contact.
- Domain entities. Enquiry (sender details, message), brand policy statements, brand contact channel.
- Component responsibilities. Enquiry form with labeled fields and inline validation; submit block; policy statement block; fixed top bar.
- States. Loading: submit block shows a pending state and prevents duplicate submission. Empty: form renders with empty fields and no error messaging. Success: the enquiry is accepted and the page confirms receipt to the Shopper. Error: invalid or incomplete input is reported inline against the specific field; a submission failure is reported at form level with the entered values preserved. Recovery: the Shopper can correct the reported field and resubmit without re-entering the rest of the form.
Brand Content
- Information and state. The protected owner workspace for maintaining the brand identity and public presentation. Presents the current brand identity content — wordmark and brand name, the brand's story and presentation copy, the brand's joke lines used in the public ticker, and the featured garment selection used on the public entry — and the state of each. Restricted to the Brand Owner.
- Primary actions. Edit and save brand identity content; set the featured garment for the public entry.
- Supporting actions. Move to Product Management; verify identity when returning.
- Domain entities. Brand identity content (wordmark, brand name, story and presentation copy, joke lines, featured garment reference).
- Component responsibilities. Brand identity editing surface with labeled fields; save block; featured garment selection control; protected-workspace navigation.
- States. Loading: the workspace renders its field frames and resolves current brand content into them. Empty: when brand content has not yet been established, the workspace presents empty fields with a clear indication that nothing is published yet. Success: saved content is confirmed and the public destinations reflect it. Error: a save failure is reported with the edited values preserved so no work is lost. Recovery: the Brand Owner can retry the save; unsaved edits remain in the form.
Product Management
- Information and state. The protected owner workspace for the durable clothing product catalog. Lists the brand's products with their name, quote, sizes, price, drop number, and imagery, and shows the state of each. Restricted to the Brand Owner.
- Primary actions. Create a product; edit an existing product's name, quote, sizes, price, drop number, and imagery.
- Supporting actions. Move to Brand Content; verify identity when returning.
- Domain entities. Product (name, quote, sizes, price, image, alternate image, drop number).
- Component responsibilities. Product list with per-product state; product editing surface with labeled fields for name, quote, sizes, price, drop number, primary image, and alternate image; save block; protected-workspace navigation.
- States. Loading: the list renders its row frames and resolves product content into them. Empty: when no products exist, the workspace states that the catalog is empty and presents the create action. Success: a created or edited product is confirmed and appears in the public catalog. Error: a save failure is reported with the edited values preserved so no work is lost. Recovery: the Brand Owner can retry the save; unsaved edits remain in the form.
Page 7 of 27
3. Functional Requirements
Page 8 of 27
Public brand presentation
FR-1 — Anonymous brand entry (explicit)
As a Shopper, I should be able to arrive at the FIFFTH site anonymously and immediately understand that this is a clothing brand selling statement graphic tees, so that I can decide whether to browse the catalog.
- Trigger/input: The Shopper opens the site with no identity established.
- Observable result: The Landing page renders the FIFFTH wordmark, a single product quote in quotation marks, a featured garment photograph with its drop number and price, a shop action, and a continuous band of the brand's other tee jokes.
- Access state: Anonymous; no identity required.
- Failure/recovery: If the featured garment cannot be resolved, the hero degrades to the wordmark, quote, and shop action with no broken image frame.
- Continuation: The Shopper proceeds to the product catalog or to the featured product's detail view.
FR-2 — Brand identity and voice on the public surface (explicit)
As a Shopper, I should encounter the FIFFTH brand as an informal, expressive, youthful label that encourages self-expression through bold messages on apparel, so that the brand reads as a coherent statement-tee label rather than a generic store.
- Trigger/input: Any public page render.
- Observable result: The brand name FIFFTH, the playful and edgy graphic tone, and the brand's joke lines are consistently present across the public destinations.
- Access state: Anonymous.
- Failure/recovery: Not applicable; this is a presentation obligation carried by every public render.
- Continuation: The Shopper continues browsing with a consistent sense of the brand.
FR-3 — Brand policy visibility (explicit)
As a Shopper, I should be able to see the brand's stated policies — free shipping across India, cash on delivery available, pay online via UPI/card, and 7-day easy returns — so that I can judge whether engaging with the brand is safe and convenient.
- Trigger/input: The Shopper reaches the Contact destination.
- Observable result: All four policy statements are presented as brand facts.
- Access state: Anonymous.
- Failure/recovery: Not applicable; policy statements are static brand content.
- Continuation: The Shopper proceeds to send an enquiry or returns to browsing.
Page 9 of 27
Catalog browsing
FR-4 — Browse the clothing catalog (explicit)
As a Shopper, I should be able to browse the brand's clothing products in a catalog, so that I can see what the label actually sells.
- Trigger/input: The Shopper opens the Products destination.
- Observable result: Each product appears as a card carrying its image plate and a bordered spec block with the product name, its quote in quotation marks, the available size row, and the price.
- Access state: Anonymous.
- Failure/recovery: If the catalog cannot be resolved, the page reports the failure and offers a retry; navigation to other destinations remains available.
- Continuation: The Shopper opens a product's detail view.
FR-5 — Empty catalog state (required_inference)
As a Shopper, I should be told plainly when no products are currently listed, so that I do not mistake an empty catalog for a broken page.
- Trigger/input: The Shopper opens the Products destination while no products are published.
- Observable result: The catalog shows a plain statement that no products are currently listed, with navigation intact.
- Access state: Anonymous.
- Failure/recovery: Not applicable; this is the defined empty state.
- Continuation: The Shopper navigates elsewhere or returns later.
FR-6 — Review a product's imagery and details (explicit)
As a Shopper, I should be able to open a single product and review its imagery and clothing details, so that I can decide whether this is the garment I want.
- Trigger/input: The Shopper selects a product from the catalog or from the landing hero.
- Observable result: The Product Details page presents the product's image plate with its drop tag, the alternate shot, the product name, the quote in quotation marks, the available sizes, the price, and the drop number.
- Access state: Anonymous.
- Failure/recovery: If the requested product does not exist, the page states that the product is unavailable and offers a return to Products; if the product cannot be resolved, the page reports the failure and offers a retry alongside the return.
- Continuation: The Shopper proceeds to Contact or returns to the catalog.
FR-7 — Read the product's sentence as the subject (explicit)
As a Shopper, I should see the graphic text on each tee treated as the product's defining asset, so that I am buying the sentence as much as the garment.
- Trigger/input: Any product card or product detail render.
- Observable result: The product's quote is presented in quotation marks as a first-class element of the card and detail view, and no interface element overlays the printed graphic on the product imagery.
- Access state: Anonymous.
- Failure/recovery: Not applicable; this is a presentation obligation.
- Continuation: The Shopper continues to the detail view or to Contact.
Page 10 of 27
Taking the next step
FR-8 — Take the next step toward obtaining the clothing (explicit)
As a Shopper, I should be able to take the next step toward obtaining or engaging with the brand's clothing from the product I am considering, so that my interest is not a dead end.
- Trigger/input: The Shopper acts on the contact action from a product's detail view.
- Observable result: The Contact destination opens with the brand's policies and the means of reaching the brand.
- Access state: Anonymous.
- Failure/recovery: If the Contact destination cannot be reached, the Shopper can still navigate to it from the top bar.
- Continuation: The Shopper sends an enquiry.
FR-9 — Send an enquiry to the brand (explicit)
As a Shopper, I should be able to send an enquiry to the brand, so that I can ask about a garment or about obtaining it.
- Trigger/input: The Shopper completes the enquiry form on the Contact destination and submits it.
- Observable result: The enquiry is accepted and the page confirms receipt to the Shopper.
- Access state: Anonymous.
- Failure/recovery: Invalid or incomplete input is reported inline against the specific field; a submission failure is reported at form level with the entered values preserved, and the Shopper can correct and resubmit without re-entering the rest of the form.
- Continuation: The Shopper returns to browsing or awaits the brand's response.
Page 11 of 27
Owner identity
FR-10 — Establish owner identity on first use (required_inference)
As a Brand Owner, I should be able to enroll myself before first accessing protected brand and product management, so that the protected workspaces are bound to me and not open to anyone.
- Trigger/input: The Brand Owner opens the Sign Up destination anonymously and submits the enrollment form.
- Observable result: An owner account is established and the Brand Owner is taken into the protected workspace.
- Access state: The enrollment interaction is anonymously reachable; protected state remains unavailable until enrollment completes.
- Failure/recovery: Invalid or incomplete input is reported inline against the specific field; a submission failure is reported at form level with the entered values preserved, and the Brand Owner can correct and resubmit.
- Continuation: The Brand Owner proceeds into Brand Content or Product Management.
FR-11 — Verify identity when returning (required_inference)
As a Brand Owner, I should be able to verify my identity when returning to protected management areas, so that I can resume my work on the brand.
- Trigger/input: The returning Brand Owner opens the Login destination anonymously and submits credentials.
- Observable result: Identity is verified and the Brand Owner is taken into the protected workspace.
- Access state: The verification interaction is anonymously reachable; protected state remains unavailable until verification succeeds.
- Failure/recovery: Incorrect credentials are reported without disclosing which element was wrong; a submission failure is reported at form level with the entered values preserved. No protected state is exposed on failure, and the Brand Owner can retry.
- Continuation: The Brand Owner resumes work in Brand Content or Product Management.
FR-12 — Protected workspaces are restricted to the Brand Owner (required_inference)
As a Brand Owner, I should be the only one able to reach the brand content and product management workspaces, so that the brand's public presentation and catalog cannot be changed by anyone else.
- Trigger/input: Any attempt to reach Brand Content or Product Management.
- Observable result: Access is granted only to a verified Brand Owner; an unverified attempt is directed to identity establishment or verification.
- Access state: Restricted; the restriction is on the two protected destinations only and does not apply to any public destination.
- Failure/recovery: An unverified attempt does not expose any protected state and can be completed through enrollment or verification.
- Continuation: The verified Brand Owner proceeds into the requested workspace.
Page 12 of 27
Owner brand maintenance
FR-13 — Maintain the brand identity and public presentation (explicit)
As a Brand Owner, I should be able to maintain the brand identity and public presentation, so that the site reflects the brand as I intend it to.
- Trigger/input: The verified Brand Owner opens Brand Content and edits the brand identity content.
- Observable result: The edited brand identity content is saved and the public destinations reflect it.
- Access state: Restricted to the verified Brand Owner.
- Failure/recovery: A save failure is reported with the edited values preserved so no work is lost, and the save can be retried.
- Continuation: The Brand Owner confirms the public site reflects the brand as intended.
FR-14 — Set the featured garment for the public entry (required_inference)
As a Brand Owner, I should be able to choose which garment is featured on the public entry, so that the first thing a Shopper sees is the drop I want to lead with.
- Trigger/input: The verified Brand Owner selects a featured garment in Brand Content and saves.
- Observable result: The Landing hero presents the selected garment with its drop number and price.
- Access state: Restricted to the verified Brand Owner.
- Failure/recovery: A save failure is reported with the selection preserved, and the save can be retried.
- Continuation: The Brand Owner confirms the public entry shows the intended garment.
FR-15 — Confirm the public site reflects the brand as intended (explicit)
As a Brand Owner, I should be able to confirm that the public site credibly represents the clothing brand, so that I know the brand is presented professionally.
- Trigger/input: The Brand Owner reviews the public destinations after making changes.
- Observable result: The public destinations render the saved brand identity content, the featured garment, and the published catalog.
- Access state: The public destinations are anonymously reachable, so the Brand Owner can review them without leaving the owner session.
- Failure/recovery: If a change is not reflected, the Brand Owner can return to the relevant protected workspace and correct it.
- Continuation: The Brand Owner continues maintaining the brand.
Page 13 of 27
Owner catalog maintenance
FR-16 — Maintain the durable clothing product catalog (explicit)
As a Brand Owner, I should be able to revisit, create, and edit the durable clothing product catalog, so that the public catalog stays accurate and current.
- Trigger/input: The verified Brand Owner opens Product Management and creates a product or edits an existing one.
- Observable result: The product's name, quote, sizes, price, drop number, and imagery are saved and appear in the public catalog.
- Access state: Restricted to the verified Brand Owner.
- Failure/recovery: A save failure is reported with the edited values preserved so no work is lost, and the save can be retried.
- Continuation: The Brand Owner confirms the product appears correctly in the public catalog.
FR-17 — Empty catalog state in the owner workspace (required_inference)
As a Brand Owner, I should be told plainly when the catalog is empty and be offered the create action, so that I can start the catalog from nothing.
- Trigger/input: The verified Brand Owner opens Product Management while no products exist.
- Observable result: The workspace states that the catalog is empty and presents the create action.
- Access state: Restricted to the verified Brand Owner.
- Failure/recovery: Not applicable; this is the defined empty state.
- Continuation: The Brand Owner creates the first product.
4. User Personas
Page 14 of 27
Brand Owner
Product context. The Brand Owner is the person behind FIFFTH. They already have a website at fiffth.com and they want it to read as a professional clothing brand rather than a hobby page. Their product is a joke printed in bold type on a tee, and they know it — the sentence is what sells. They are not a merchandising department; they are the label.
Primary goal. Establish and maintain the brand's public presence — its story, product lineup, and imagery — and confirm the site reflects the brand as intended. Success means the public site credibly represents the clothing brand.
Distinct accepted responsibilities. The Brand Owner is the only accepted human actor who changes the brand's public state. They maintain the brand identity and public presentation (FR-13), choose which garment leads the public entry (FR-14), and maintain the durable clothing product catalog by creating and editing products (FR-16). They also review the public destinations to confirm the brand is represented as intended (FR-15). No other accepted persona performs any of these.
Relevant inputs and decisions. The Brand Owner supplies the brand identity content — wordmark and brand name, story and presentation copy, the joke lines that run in the public ticker — and decides which garment is featured on the public entry. They supply each product's name, quote, sizes, price, drop number, and imagery, and decide when a product is ready to appear publicly.
Interactions with other accepted participants. The Brand Owner's work is what the Shopper sees. Every product the Brand Owner publishes becomes a card in the Shopper's catalog and a detail view the Shopper can open; every joke line the Brand Owner maintains becomes part of the ticker the Shopper reads; the featured garment the Brand Owner selects becomes the first thing the Shopper encounters. The Brand Owner does not interact with the Shopper directly — the public surface is the handoff.
Observable success. The public destinations render the Brand Owner's saved brand identity content, the featured garment they selected, and the products they published, and the Brand Owner can see this for themselves by opening the public destinations.
Access. The Brand Owner must enroll before first accessing protected brand and product management (FR-10) and must verify their identity when returning (FR-11). The protected workspaces are restricted to them (FR-12). This is application-owned identity, established by self-service because no invitation or provisioning boundary is established.
Page 15 of 27
Shopper
Product context. The Shopper is a consumer in India looking for casual apparel, arriving phone-first with Instagram energy. They are 18–30, they pay by UPI or cash on delivery, and they buy the sentence before they buy the fabric. They may have landed from a social post and have no prior relationship with the brand.
Primary goal. Browse the brand's clothing offerings, review product details and imagery, and decide whether to engage with the brand. Success means finding the clothing they want and understanding how to obtain it.
Distinct accepted responsibilities. The Shopper is the only accepted human actor who consumes the public brand surface. They browse the catalog (FR-4), open a product and review its imagery and clothing details (FR-6), read the product's sentence as the subject (FR-7), take the next step toward obtaining the clothing (FR-8), and send an enquiry to the brand (FR-9). They also encounter the brand entry (FR-1), the brand identity and voice (FR-2), and the brand's stated policies (FR-3).
Relevant inputs and decisions. The Shopper supplies nothing but their attention until they choose to send an enquiry, at which point they supply their sender details and message. Their decisions are which product to open, whether the garment is what they want, and whether to reach out to the brand.
Interactions with other accepted participants. The Shopper never interacts with the Brand Owner directly. Everything the Shopper sees is the Brand Owner's published work: the brand identity content, the featured garment, the joke ticker, and the catalog. The Shopper's enquiry is the one thing that travels back toward the brand.
Observable success. The Shopper finds a garment whose sentence they want, understands its sizes and price, sees the brand's shipping, payment, and returns policies, and has a working way to reach the brand.
Access. The Shopper requires no account and no identity at any point in their accepted journey. Every destination they use is anonymously reachable.
Page 16 of 27
5. Core User Flows
Flow 1 — Shopper arrives and understands the brand (FR-1, FR-2, FR-3)
- The Shopper opens the FIFFTH site with no identity established. The Landing page renders.
- The Shopper sees the FIFFTH wordmark, a single product quote in quotation marks, and a featured garment photograph carrying its drop number and price. A continuous band of the brand's other tee jokes runs along the bottom edge.
- The Shopper reads the quote and the ticker and understands that this is a statement-tee label — the sentence is the product.
- The Shopper acts on the shop action and proceeds to the Products catalog.
- Failure path: if the featured garment cannot be resolved, the hero degrades to the wordmark, quote, and shop action with no broken image frame, and the Shopper can still reach Products from the top bar.
Flow 2 — Shopper browses the catalog (FR-4, FR-5)
- The Shopper is on the Products page.
- Each product appears as a card: an image plate with its drop tag, and a bordered spec block carrying the product name, its quote in quotation marks, the available size row, and the price.
- The Shopper scans the cards, reading the sentences first and the prices second.
- The Shopper selects a product and opens its detail view.
- Empty path: if no products are published, the catalog states plainly that no products are currently listed and keeps navigation intact; the Shopper navigates elsewhere or returns later.
- Failure path: if the catalog cannot be resolved, the page reports the failure and offers a retry; navigation to other destinations remains available throughout.
Flow 3 — Shopper reviews a product and decides (FR-6, FR-7)
- The Shopper opens a product from the catalog or from the landing hero. The Product Details page renders.
- The Shopper sees the product's image plate with its drop tag and the alternate shot, the product name, the quote in quotation marks, the available sizes, the price, and the drop number.
- The printed graphic on the garment is the subject of the imagery; no interface element overlays it.
- The Shopper decides whether this is the garment they want.
- Unavailable path: if the requested product does not exist, the page states that the product is unavailable and offers a return to Products.
- Failure path: if the product cannot be resolved, the page reports the failure and offers a retry alongside the return to Products.
Page 17 of 27
Flow 4 — Shopper takes the next step and sends an enquiry (FR-8, FR-9, FR-3)
- From the product detail view, the Shopper acts on the contact action. The Contact destination opens.
- The Shopper sees the brand's stated policies — free shipping across India, cash on delivery available, pay online via UPI/card, and 7-day easy returns — and the means of reaching the brand.
- The Shopper completes the enquiry form with their sender details and message and submits it.
- The enquiry is accepted and the page confirms receipt to the Shopper.
- Failure path: invalid or incomplete input is reported inline against the specific field; a submission failure is reported at form level with the entered values preserved, and the Shopper corrects the reported field and resubmits without re-entering the rest of the form.
- Continuation: the Shopper returns to browsing or awaits the brand's response.
Flow 5 — Brand Owner enrolls for the first time (FR-10, FR-12)
- The Brand Owner opens the Sign Up destination anonymously. No protected state is visible.
- The Brand Owner completes the enrollment form with the minimum identity information needed to establish an owner account and submits it.
- An owner account is established and the Brand Owner is taken into the protected workspace.
- Failure path: invalid or incomplete input is reported inline against the specific field; a submission failure is reported at form level with the entered values preserved, and the Brand Owner corrects and resubmits.
- Continuation: the Brand Owner proceeds into Brand Content or Product Management. Any attempt to reach those destinations without a verified identity is directed back to identity establishment or verification, and no protected state is exposed.
Flow 6 — Brand Owner returns and verifies identity (FR-11, FR-12)
- The returning Brand Owner opens the Login destination anonymously. No protected state is visible.
- The Brand Owner submits their credentials.
- Identity is verified and the Brand Owner is taken into the protected workspace.
- Failure path: incorrect credentials are reported without disclosing which element was wrong; a submission failure is reported at form level with the entered values preserved. No protected state is exposed, and the Brand Owner can retry.
- Continuation: the Brand Owner resumes work in Brand Content or Product Management.
Page 18 of 27
Flow 7 — Brand Owner maintains the brand identity and public presentation (FR-13, FR-14, FR-15)
- The verified Brand Owner opens Brand Content. The workspace renders the current brand identity content — wordmark and brand name, story and presentation copy, the joke lines used in the public ticker, and the featured garment selection — and the state of each.
- The Brand Owner edits the brand identity content and saves.
- The edited content is saved and the public destinations reflect it.
- The Brand Owner selects which garment is featured on the public entry and saves. The Landing hero now presents the selected garment with its drop number and price.
- Empty path: if brand content has not yet been established, the workspace presents empty fields with a clear indication that nothing is published yet.
- Failure path: a save failure is reported with the edited values preserved so no work is lost, and the Brand Owner retries the save.
- Continuation: the Brand Owner opens the public destinations and confirms the site reflects the brand as intended. If a change is not reflected, they return to Brand Content and correct it.
Flow 8 — Brand Owner maintains the product catalog (FR-16, FR-17, FR-15)
- The verified Brand Owner opens Product Management. The workspace lists the brand's products with their name, quote, sizes, price, drop number, and imagery, and shows the state of each.
- The Brand Owner creates a new product or opens an existing one and edits its name, quote, sizes, price, drop number, and imagery.
- The product is saved and appears in the public catalog.
- Empty path: if no products exist, the workspace states that the catalog is empty and presents the create action; the Brand Owner creates the first product.
- Failure path: a save failure is reported with the edited values preserved so no work is lost, and the Brand Owner retries the save.
- Continuation: the Brand Owner opens the public catalog and confirms the product appears correctly. If it does not, they return to Product Management and correct it.
6. Visuals, Colors and Theme
The creative direction is authoritative for this section. The muse is Virgil Abloh, and the headline idea is remixed familiarity — quoting the tee, tagging the brand: taking a familiar object — a t-shirt, a quote, a label — and re-presenting it with quotation marks, industrial tags, and hazard tape so the familiar becomes an object of desire. That is exactly what FIFFTH sells.
Page 19 of 27
Color tokens — light mode
| Role | Hex | Use |
|---|
| Background | #F2F0EC | Industrial off-white concrete ground for every page |
| Surface | #FFFFFF | Reserved for product plates and form fields, so tees read like objects on a table |
| Text | #0B0B0B | All type, the wordmark, and full-bleed bands |
| Primary | #0B0B0B | Black is the primary, not a secondary — buttons, bands, borders |
| Accent | #FF4A00 | Safety orange, the single hot accent, at roughly 5% of the page: hazard stripes, the live drop tag, the price chip, focus rings, and the one active CTA per screen |
| Muted | #8A8880 | Quoted metadata, sizes, and captions |
No blue, no indigo, no violet, no gradient, no pastel anywhere. Contrast is black-on-off-white or white-on-black at every text size.
Typography
- Headings: Archivo Black. All-caps, ultra-heavy, wide tracking (0.02em–0.04em) so headlines read as stencilled signage rather than editorial serif. Display sizes are enormous —
clamp(52px, 13vw, 200px) for the hero wordmark and clamp(30px, 5.5vw, 64px) for section heads — with tight 0.92 line-height so stacked caps lock into a solid block. Quote marks are part of the headline ('I MAY NOT GO DOWN IN HISTORY'), set in the same weight so they read as a label, not punctuation.
- Body: Archivo. 400 weight at 16–18px with 1.55 line-height and a max 62ch measure.
- Labels and tags: Archivo 600 uppercase 12px at 0.14em tracking.
- Prices: tabular numerals in Archivo 700.
- Type scale: 1.5 modular on a 4/8pt base — 200 / 128 / 64 / 40 / 28 / 20 / 16 / 14.
Page 20 of 27
Shape language
Zero border-radius on everything — cards, buttons, inputs, images, modals. Rectangles only, with 2px solid black borders and 4px hard offset shadows (no blur) that read as screen-printed registration rather than soft UI. Hazard stripes are 45° black/orange 12px bands used as section dividers, tape across image corners, and the progress bar. Exposed 1px grid lines and crop marks are drawn on purpose. Buttons are full-width or fixed-width black blocks with white caps; a single orange tag or underline marks the active state.
Layout
A visible 12-column industrial grid with 1px rules between columns on desktop, collapsing to 4 columns at 375px with rules kept as horizontal section breaks. Asymmetric — the hero wordmark is flush-left and bleeds off the right edge, product grids are offset by one column, and every section is separated by a black band with a hazard-stripe edge. Navigation is a fixed top bar: FIFFTH wordmark left, then PRODUCTS / DROPS / ABOUT / CONTACT as uppercase 12px links, a hairline rule under it, and a black SHOP block pinned right; on mobile it becomes a full-screen black overlay menu with the links set at 40px caps and orange index numbers. Product cards are stacked label-style: image plate, then a bordered spec block with name, quote-in-quotes, size row, price, and a VIEW block that fills on hover.
Page 21 of 27
Imagery
Product photography on concrete-grey and off-white grounds, flat-lit and slightly overexposed, shot straight-on so the printed sentence is the subject. Tees shown flat-lay, on a hanger, and cropped at the shoulder so text bleeds off the frame. Industrial textures as supporting material: gaffer tape, zip ties, cardboard tags, shipping labels, halftone grain. No lifestyle models looking at camera, no studio gradient backdrops, no 3D blobs. Every product image carries a small orange tag with its drop number, and the graphic text on each tee is treated as the hero asset, never overlaid by UI.
Readable-text integrity
Headlines, wordmarks, labels, numbers, cards' text, and controls stay entirely inside the viewport and their container at 375px, 768px, and 1280px, wrapping or scaling (for example font-size: clamp(...) with its mobile size) to fit, and no other element covers any part of them. Imagery, decoration, and motion follow the creative direction: a photograph, artwork, shape, texture, or animation may be cropped, bled off an edge, rotated, overlapped, or cut exactly as the direction asks, as long as it covers no readable text or control. Moving and scrollable content — the marquees and tickers — may cross the viewport or container edge by design and is judged by whether it actually moves and whether every item becomes fully readable as it passes.
Page 22 of 27
7. Signature Design Concept
The public entry is a flat, poster-like first screen — a shipping carton taped shut, with the brand's own sentence as the label.
- Ground. The off-white concrete
#F2F0EC fills the viewport. Exposed 1px grid rules run vertically across it, with crop marks at the corners.
- The wordmark.
FIFFTH is set in Archivo Black at clamp(64px, 17vw, 260px), flush-left, cropped by the right viewport edge so only FIFFT is fully visible at 1280 and the full word fits at 375. It is the hero image; there is no other hero image.
- The quote. Immediately beneath it, in the same weight but at 40% size, a single product quote in quotation marks —
'I MAY NOT GO DOWN IN HISTORY' — stacked over three lines inside a black block that spans 9 of 12 columns. The quote marks are set in the same weight so they read as a label, not punctuation.
- The product. To the right, a full-bleed product photograph of the tee, hard-cropped at the top and bottom, with a 45° hazard-stripe tape strip taped across its top-left corner and an orange
DROP 01 — ₹799 tag pinned to its lower edge. The printed sentence on the tee is never overlaid by UI.
- The action. A solid black block reading
SHOP THE DROP pinned under the quote block, with a hairline orange underline that thickens on hover. It is the one active CTA on the screen.
- The ticker. A thin marquee band of the brand's other jokes runs along the very bottom edge of the viewport.
No centred stack, no subhead paragraph, no gradient. The composition is type-block left, product right, tape holding it together. Every element in this concept is a recomposition of accepted content and controls — the wordmark, the product quote, the featured garment, its drop number and price, the shop action, and the joke ticker — and introduces no new behavior, page, or destination.
8. Interaction Model & Motion Direction
Interaction Model: Animated
Motion Tempo: expressive
Hero Dimensionality: flat
Page 23 of 27
Landing Hero Motion Brief
- Focal subject. The oversized
FIFFTH wordmark bleeding off the right viewport edge, with the stacked quoted product line in its black block beneath it and the taped product photograph to the right.
- Input → transformation → outcome thesis. On first paint, the hero resolves from its composed first frame: the quote marks type in once on the hero, the hazard-stripe tape settles onto the product plate's corner, and the ticker begins its continuous pass along the bottom edge. The outcome is a poster that looks taped together and alive, with the sentence as the subject and the shop action immediately available.
- Motion vocabulary. Snappy and mechanical, never bouncy: 120–180ms linear or ease-out transitions only. Hover swaps a product photo for its alternate shot with a hard cut (no crossfade), and cards shift 4px with their offset shadow growing from 4px to 8px — a registration misprint, not a lift. The marquee ticker runs continuous and slow enough to read fully as it passes. No decorative bounce, spring, or elastic easing.
- Composed first frame. The off-white concrete ground with the grid rules and crop marks;
FIFFTH flush-left and cropped by the right edge; the black quote block spanning 9 of 12 columns beneath it; the taped product photograph to the right with its orange drop-and-price tag; the black SHOP THE DROP block with its hairline orange underline; the ticker band along the bottom edge.
- Reduced-motion state. With
prefers-reduced-motion, the ticker stops and wraps into readable rows, all reveals resolve instantly to their final state, and the hero presents its composed first frame as the final state.
Page 24 of 27
9. Non-Functional Requirements
NFR-1 — Readable text and controls stay whole (explicit, from the creative direction)
Headlines, wordmarks, labels, numbers, cards' text, and controls must stay entirely inside the viewport and their container at 375px, 768px, and 1280px, wrapping or scaling to fit, and no other element may cover any part of them. Where the direction asks readable text or a control to be cropped, clipped, covered, or run off an edge, the text or control stays whole and the gesture is carried by imagery or decoration instead. Rationale: the direction's oversized type and bleeding composition must not cost legibility or operability.
NFR-2 — Moving content remains fully readable (explicit, from the creative direction)
Marquees and tickers may cross the viewport or container edge by design. Each must actually move, and every item must become fully readable as it passes. With prefers-reduced-motion, moving content stops and shows whole items — wrapping into rows, or sitting in a horizontally scrollable row (overflow-x: auto) whose further items are reached by scrolling. Rationale: the ticker is a brand device, not a legibility hazard.
NFR-3 — Reduced-motion compliance (explicit, from the creative direction)
Under prefers-reduced-motion, the ticker stops and wraps into readable rows, and all reveals resolve instantly to their final state. Rationale: the direction's motion is expressive and must degrade cleanly.
NFR-4 — Motion timing ceiling (explicit, from the creative direction)
Transitions are 120–180ms, linear or ease-out only. No decorative bounce, spring, or elastic easing. Rationale: the brand's motion register is mechanical, not playful.
NFR-5 — Palette discipline (explicit, from the creative direction)
No blue, indigo, or violet accents anywhere. No gradients, no pastels, no glassmorphism, no blurred shadows, no rounded corners. Contrast is black-on-off-white or white-on-black at every text size. Rationale: the industrial palette is the brand's credibility signal; the generic indigo/blue-on-white SaaS template is forbidden for this project.
NFR-6 — Product graphic is never overlaid (explicit, from the creative direction)
The graphic text on each tee is the hero asset and is never overlaid by UI. Tape, tags, and crops stay on image plates and empty ground, never over readable text, prices, or controls. Rationale: the sentence is the product.
NFR-7 — Protected state is never exposed before identity is established (required_inference)
Brand Content and Product Management expose no protected state to an unverified visitor, and the enrollment and verification interactions are themselves anonymously reachable. Rationale: a protected destination cannot own the interaction that grants access to itself.
NFR-8 — Owner work is not lost on failure (required_inference)
A failed save in Brand Content or Product Management preserves the edited values in the form so the Brand Owner can retry without re-entering their work. Rationale: the Brand Owner's edits are the brand's durable state.
NFR-9 — Public destinations are anonymously reachable (explicit, from the planning boundary)
Landing, Products, Product Details, and Contact require no identity at any point. Rationale: the Shopper's accepted journey has no account step.
Page 25 of 27
10. Tech Stack
- Frontend: React, delivered as a custom first-party web interface. (Default — not specified by user)
- Backend: Python with FastAPI, serving the brand content, product catalog, owner identity, and enquiry endpoints. (Default — not specified by user)
- Storage: A relational database for the durable product catalog, brand identity content, owner accounts, and received enquiries. (Default — not specified by user)
- Containerization: Docker with docker-compose for local and single-host deployment. (Default — not specified by user)
- Orchestration: Kubernetes is not required by any accepted requirement and is omitted. (Default — not specified by user)
No source-specified technology choice exists in the authoritative requirement thread; the above are labeled defaults and must not be read as product behavior.
Page 26 of 27
11. Assumptions and Constraints
Constraints
- C-1 (explicit) The website is for the user's own clothing brand at
fiffth.com.
- C-2 (explicit) The site must present the clothing brand professionally to its audience.
- C-3 (explicit) The brand is FIFFTH, stylized as FIFFTH. The brand's identity is carried by bold textual graphics on t-shirts; no explicit logo is established by the source.
- C-4 (explicit) The brand's stated policies are: free shipping across India; cash on delivery available; pay online via UPI/card; 7-day easy returns.
- C-5 (explicit) The target audience is consumers in India seeking casual apparel, primarily graphic tees.
- C-6 (explicit) The brand voice is informal, expressive, and youthful, encouraging self-expression through bold messages on apparel.
- C-7 (explicit) The generic indigo/blue-on-white SaaS template is forbidden for this project.
Assumptions
- A-1 (required_inference) The Brand Owner is a single self-starting owner; no invitation, provisioning, or deployment bootstrap boundary is established, so identity is established by self-service enrollment and re-established by returning verification.
- A-2 (required_inference) The Brand Owner's protected work is bound to the correct participant, so application-owned identity is required for Brand Content and Product Management only.
- A-3 (required_inference) The public destinations carry no durable actor-specific state and therefore require no identity.
- A-4 (required_inference) The brand's stated shipping, payment, and returns policies are presented as brand facts on the public surface; no transaction, cart, checkout, payment, order, or returns workflow is established by the source and none is specified here.
- A-5 (required_inference) The brand's joke lines used in the public ticker are brand identity content maintained by the Brand Owner, drawn from the brand's existing statement-tee graphics.
- A-6 (required_inference) The featured garment shown on the public entry is selected by the Brand Owner from the published catalog.
- A-7 (required_inference) The navigation labels PRODUCTS / DROPS / ABOUT / CONTACT from the creative direction map onto the accepted destinations: PRODUCTS to Products, CONTACT to Contact, ABOUT to the brand presentation content on Landing, and DROPS to the drop-tagged catalog view. No additional destination is created by these labels.
Page 27 of 27
12. Glossary
- Brand Owner — The accepted human persona who owns FIFFTH and maintains its public presence and product catalog. The only actor with access to the protected workspaces.
- Shopper — The accepted human persona who anonymously browses the brand's clothing offerings, reviews product details, and decides whether to engage with the brand.
- Drop — A numbered release of a garment, carried as a drop number on the product and shown as an orange tag on product imagery.
- Quote — The bold printed sentence on a FIFFTH tee, presented in quotation marks as the product's defining asset.
- Spec block — The bordered block on a product card or detail view carrying the product name, its quote, the size row, the price, and the drop number.
- Ticker — The continuous marquee band of the brand's tee jokes that runs under the hero and above the footer.
- Hazard stripe — The 45° black/orange 12px band used as a section divider, an image-corner accent, and the scroll progress bar.
- Protected workspace — Brand Content or Product Management; reachable only by a verified Brand Owner.
- Public destination — Landing, Products, Product Details, or Contact; anonymously reachable with no identity required.
- Enquiry — The message a Shopper sends to the brand from the Contact destination.
No comments yet. Be the first!