ayam-geprek is a public website about ayam geprek — Indonesian smashed fried chicken with sambal — built to be bagus dan enak dilihat: visually striking and genuinely appetising to look at. The product intent is a single, high-craft public web experience that presents the ayam geprek theme with a distinctive, non-template visual identity, so that a hungry visitor immediately understands what the food is and feels the punchy, saturated, joyful energy of the dish.
The audience is the Pengunjung Situs — a casual, mobile-first visitor who arrives curious or hungry, browses the ayam geprek content, and succeeds when the content is presented in a way that is pleasant, legible, and visually delightful to look at.
This document defines the current delivery: one public entry surface, its content and component coverage, the visual and motion system, and the constraints that keep the experience readable and accessible at every viewport.
The current product is a public, single-surface website with no account, no login, and no protected state. All accepted behavior happens on one publicly reachable page, Landing, which is the public entry surface for the ayam geprek theme.
Actors
Accepted behavior
Ownership
Narrow exclusions
The user asked for a website about ayam geprek that is good and pleasant to look at. That request is a visual-presentation commitment: the deliverable is a public page whose content is the ayam geprek theme and whose quality bar is aesthetic. The request does not name ordering, accounts, admin tools, or any transactional flow, and none are inferred here.
Delivery and access ownership. The site is delivered as a first-party public web page. Access is anonymous and open: the visitor needs no identity, no session, and no credential to see everything the product offers. Because no accepted journey requires durable actor-specific state, a commitment, an entitlement, or a value transfer bound to a particular person, no application-owned identity is established and no authentication surface exists. The Landing page is the anonymous entry boundary itself, so there is no separate pre-identity lifecycle to own.
Current vs. future. Everything in this document is current. No future-horizon requirements were accepted in the authoritative thread; the only forward-looking material is the non-binding idea space noted in Section 11, which is explicitly out of current scope and out of acceptance.
Information and state
Primary actions
Supporting actions
Domain entities
Component responsibilities
clamp(48px, 12vw, 128px), stacked and slightly off-axis to the left.States
prefers-reduced-motion, all motion freezes to static poses: the drumstick holds a static pose, the sambal blob stops morphing, section reveals appear in place, and the marquee becomes a usable static arrangement (items wrapped into rows or horizontally scrollable so each item can be brought fully into view).FR-1 — Ayam geprek themed website (provenance: explicit) As a Pengunjung Situs, I should land on a public website whose subject is ayam geprek, so that I immediately understand what the site is about.
FR-2 — Visually appealing presentation (provenance: explicit) As a Pengunjung Situs, I should see the ayam geprek content presented with a high-quality, pleasant visual treatment, so that looking at the site is itself enjoyable.
FR-3 — Readable content at every viewport (provenance: explicit, from the direction's readability rule) As a Pengunjung Situs, I should be able to read every headline, label, number, card text, and control in full at 375px, 768px, and 1280px, so that the visual boldness never costs me the information.
font-size: clamp(...) with its mobile size) to fit, and no other element covers any part of them.FR-4 — Moving and scrollable content remains fully readable (provenance: explicit, from the direction's readability rule) As a Pengunjung Situs, I should be able to read every item in the marquee and any horizontally scrollable row as it passes or as I scroll it, so that motion never hides content from me.
prefers-reduced-motion, the marquee and any scrollable row provide a usable static arrangement — items wrapped into rows or horizontally scrollable so each item can be brought fully into view.FR-5 — WebGL hero subject (provenance: explicit, from the direction's hero dimensionality) As a Pengunjung Situs, I should see a real-time glossy 3D chicken drumstick as the hero subject, so that the entry to the site feels as punchy and indulgent as the food.
FR-6 — Expressive motion system (provenance: explicit, from the direction's motion spec) As a Pengunjung Situs, I should experience expressive motion across the page, so that the site feels alive and playful rather than static.
prefers-reduced-motion by freezing to static poses.FR-7 — Floating pill navigation (provenance: explicit, from the direction's layout spec) As a Pengunjung Situs, I should have a floating pill navigation bar with icon + label items that sticks to the top and shrinks slightly on scroll, so that I can move between sections without losing my place.
FR-8 — Menu capsule cards (provenance: explicit, from the direction's layout spec) As a Pengunjung Situs, I should see ayam geprek menu items as glossy capsule cards in a loose staggered grid, so that browsing the dishes feels appetising and playful.
FR-9 — Wave-divided section rhythm (provenance: explicit, from the direction's signature moves) As a Pengunjung Situs, I should see curved SVG wave dividers between every section, filled with alternating cream and pink, so that the page reads as one flowing composition.
FR-10 — Marquee band (provenance: explicit, from the direction's signature moves) As a Pengunjung Situs, I should see a lime-on-pink marquee band repeating "GEPREK! GEPREK! GEPREK!" that scrolls horizontally and pauses on hover, so that the page carries the dish's loud energy.
prefers-reduced-motion, the band becomes a usable static arrangement where each item can be brought fully into view.FR-11 — Hero call to action (provenance: explicit, from the direction's hero spec) As a Pengunjung Situs, I should see a pill CTA "Pesan Sekarang" in lime with charcoal text beneath the hero headline, so that the hero composition is complete and the next step is obvious.
Product context. The visitor arrives at a public website about ayam geprek, most likely on a phone, most likely hungry or curious. They have no account, no prior relationship with the site, and no obligation to stay. Their first impression is formed in the hero, within a second or two of the page painting.
Primary goal. To see ayam geprek presented well — to look at a page that is bagus dan enak dilihat, where the food theme is immediately clear and the presentation is genuinely pleasant to look at.
Distinct accepted responsibilities. The visitor is the sole active human actor in the current product. Their work is entirely perceptual and exploratory: they read the hero, scroll the sections, look at the dish cards, and take in the motion and colour. They initiate nothing that changes durable state, and nothing they do is stored or resumed.
Relevant inputs or decisions. The visitor decides whether to keep scrolling, whether to hover or tap a menu capsule card, whether to pause the marquee, and whether to follow the hero CTA. Each of these is a presentational interaction with an immediate visual result.
Interactions with other accepted participants. There are no other accepted human participants in the current scope. The visitor interacts only with the page itself and the system that renders it.
Observable success. The visitor can read every headline, label, and card text in full at their viewport width; the page shows the ayam geprek theme with the specified candy-pink, cream, and lime treatment; the 3D drumstick hero renders and animates (or degrades gracefully to a static pose); and the visitor can scroll the whole page without any text or control being clipped or covered.
Constraints carried from source. The visitor's experience must never trade readability for visual boldness: at 375px, 768px, and 1280px, readable text and controls stay whole. Motion must respect prefers-reduced-motion. No blue or indigo may appear. No photographic food imagery is used.
clamp(48px, 12vw, 128px) on the left, the subhead "Pedasnya nagih, kriuknya juara" in Quicksand 18px, and the lime pill CTA "Pesan Sekarang" with charcoal text beneath.prefers-reduced-motion, the band becomes a usable static arrangement — items wrapped into rows or horizontally scrollable so each item can be brought fully into view.font-size: clamp(...) with its mobile size) to fit, and no other element covers any part of them.Muse and headline. Karim Rashid — Sensual pop minimalism for the crunch of ayam geprek. The register is playful, bold, and delicious: Indonesian street-food energy rendered as glossy candy colour and organic curves, never luxury and never corporate.
Mode. Light mode only.
Colour tokens (exact hex by role)
| Role | Hex | Usage |
|---|---|---|
| Background | #FFF3E6 | Warm cream ground; keeps the appetite warm |
| Surface | #FFFFFF | Cards and content surfaces |
| Text | #1D1B1A | Deep charcoal body text; ensures contrast |
| Primary | #FF4D6D | Bubblegum pink; dominant brand colour for headers, buttons, and section fields |
| Accent | #B4E600 | Acid lime; hot accent used sparingly for highlights, underlines, and hover states |
| Muted | #FFB3C1 | Soft pink; secondary surfaces and decorative blobs |
Proportion. 60% cream/white, 25% pink, 10% charcoal, 5% lime. Lime must stay a hot accent, never a ground colour.
Typography
clamp(40px–96px), weight 700, tight tracking -0.02em, sentence case with occasional all-caps for labels. Headlines feel like inflated balloons: soft, glossy, confident.clamp(48px, 12vw, 128px) in Comfortaa 700, white, stacked.Shape language. Blob and capsule shapes dominate. Buttons are pill-shaped with a glossy highlight. Section dividers are soft organic curves. Image masks are rounded blobs rather than rectangles. Cards have generous radii (24–32px) and a subtle inner glow. No sharp corners except for small functional labels.
Layout. Asymmetric, flowing single-column layout with generous white space. The hero is a full-bleed pink colour field with a large 3D chicken drumstick floating over cream. Sections alternate between cream and pink grounds, separated by curved SVG waves. Menu items are glossy capsule cards in a loose, staggered grid rather than a rigid table. Navigation is a floating pill bar at the top with icon + label, sticky on scroll.
Imagery style. Glossy 3D renders of food — chicken drumstick, sambal bowl, lime wedge, rice — in candy colours, floating on plain cream or pink grounds. No photography. Decorative organic blobs in pink and lime. Icons are rounded and chunky, matching the type.
Forbidden. Any blue or indigo anywhere in the palette. Sharp corners, thin hairline borders, or flat rectangular cards. Photographic food imagery. Neutral or muted tones that would make the food feel bland. Gradient-blob heroes or centred SaaS-style layouts. Serious or luxury typography. Overuse of lime.
The poster block with a floating drumstick.
The public entry is composed as a single poster-like colour block rather than a conventional web hero. A full-bleed bubblegum-pink (#FF4D6D) field fills the viewport. Slightly off-axis to the left, the headline "AYAM GEPREK" stacks in white Comfortaa 700 at up to 128px, with the subhead "Pedasnya nagih, kriuknya juara" in Quicksand 18px beneath it, and the lime pill CTA "Pesan Sekarang" with charcoal text below that.
Over the pink field, at roughly 60% viewport height, floats a giant glossy 3D chicken drumstick rendered in warm browns with a lime-green sambal drip, casting a soft shadow onto the cream below. The drumstick rotates slowly on a 10s loop and bobs gently.
The composition deliberately avoids gradient blobs and centred SaaS layouts: the colour block is flat and saturated, the subject is dimensional and glossy, and the type is oversized and rounded. The gesture of the page — the drumstick bleeding past the composition, the wave dividers cutting the sections, the marquee running off the edge — is carried by imagery and decoration, never by cropping or covering readable text or controls.
Interaction Model: Animated Motion Tempo: expressive Hero Dimensionality: webgl
Focal subject. The glossy 3D chicken drumstick in warm browns with a lime-green sambal drip, floating over the full-bleed pink (#FF4D6D) hero field at roughly 60% viewport height.
Input → transformation → outcome thesis. On load, the hero field, headline, subhead, and CTA paint immediately as a composed static poster; the WebGL drumstick then initialises and begins its slow 10s rotation and gentle bob, casting a soft shadow that shifts with the motion. The outcome is a hero that reads as a finished poster at first paint and gains dimensional life a moment later — never a hero that waits on the 3D subject to become legible.
Motion vocabulary. Expressive: slow continuous rotation, gentle vertical bob, a morphing sambal blob, soft bounce on button hover, springy slide-up section reveals, and a horizontally scrolling lime-on-pink marquee that pauses on hover.
Composed first frame. Full-bleed pink field; stacked white Comfortaa headline "AYAM GEPREK" at clamp(48px, 12vw, 128px) on the left; Quicksand subhead "Pedasnya nagih, kriuknya juara"; lime pill CTA "Pesan Sekarang" with charcoal text; the drumstick in a static composed pose at roughly 60% viewport height with its soft shadow. Every readable element is whole and inside the viewport at 375px, 768px, and 1280px.
Reduced-motion state. With prefers-reduced-motion, the drumstick holds its static composed pose, the sambal blob stops morphing, section reveals appear in place without sliding, button hover loses its bounce, and the marquee becomes a usable static arrangement — items wrapped into rows or horizontally scrollable so each item can be brought fully into view. The hero remains a complete, readable poster.
Object. One crafted real-time subject: a glossy 3D chicken drumstick in warm browns, with a lime-green (#B4E600) sambal drip clinging to its lower edge. No scene clutter, no environment beyond the pink field.
Defining state shown. The crunch-and-sambal identity of ayam geprek — a single, oversized, appetising object presented as the hero, not a food scene or a plate.
Material and lighting. Glossy, candy-like surface with a soft specular highlight consistent with the direction's "glossy 3D renders in candy colours". A single soft key light produces the soft shadow cast onto the cream ground below. No photographic texture maps.
Motion. Continuous slow rotation on a 10s loop plus a gentle vertical bob. Motion is ambient and never blocks reading.
Fallback. If WebGL is unavailable or the subject fails to load, the hero renders the same subject as a static composed pose with its soft shadow, and the headline, subhead, and CTA remain intact and readable.
NFR-1 — Readability across viewports (provenance: explicit, from the direction's readability rule) Headlines, wordmarks, labels, numbers, card text, and controls must stay entirely inside the viewport and their container at 375px, 768px, and 1280px, wrapping or scaling to fit, with no other element covering any part of them. Rationale: the user's request is for a site that is enak dilihat, and visual boldness must not cost legibility.
NFR-2 — Motion accessibility (provenance: explicit, from the direction's motion spec)
All motion must respect prefers-reduced-motion by freezing to static poses, and moving or scrollable content must provide a usable static arrangement in that mode. Rationale: the direction's expressive motion ceiling requires an accessible still equivalent.
NFR-3 — Graceful 3D degradation (provenance: required_inference) The WebGL hero subject must degrade to a static composed pose when WebGL is unavailable or the subject fails to load, without removing hero content. Rationale: the hero is the entry surface, and the accepted content must remain reachable regardless of rendering capability.
NFR-4 — Palette integrity (provenance: explicit, from the direction's avoid list) No blue or indigo may appear anywhere in the palette. Rationale: the direction explicitly forbids the generic indigo/blue-on-white SaaS template for this project.
NFR-5 — Public anonymous access (provenance: explicit, from the planning access contract)
The Landing page must be reachable with no access requirement, no identity, and no session. Rationale: the accepted access contract sets access_requirement: none, and no accepted journey requires durable actor-specific state.
NFR-6 — No photographic food imagery (provenance: explicit, from the direction's imagery spec) Food imagery must be 3D renders and illustration only. Rationale: the direction explicitly excludes photography.
webgl hero dimensionality.clamp()-based fluid type, and SVG wave dividers.prefers-reduced-motion media queries for the static fallback.Assumptions
access_requirement: none and the absence of any accepted journey requiring durable actor-specific state.)Constraints
prefers-reduced-motion.Out of scope (current)
Future (not current, not in acceptance)
prefers-reduced-motion user preference, under which all motion freezes to static poses and moving content becomes a usable static arrangement.No completed page designs yet.
Completed design pages will appear here when they are ready to preview.
No completed page designs yet.
Completed design pages will appear here when they are ready to preview.
No comments yet. Be the first!