Astrotian Café is a celestial-themed neighbourhood coffee house on Rizal Street, Brgy. 1, Laoag City, Ilocos Norte, Philippines. This project delivers its public web presence: a modern, clean, celestial-themed landing page and ordering web app that presents the café's story, its menu, its opening hours and contact details, and lets visitors place an online order and reserve a table.
The product intent is to translate the café's physical atmosphere — a dark, warm room where stargazing and fresh espresso come together — into a single public destination. The founder's story (Christian, whose childhood fascination with the cosmos gave the café its "Astro" and whose own name gave it its "Tian") is the emotional centre of the page, and the visual language carries that romantic sweep without becoming childish or science-fiction clichéd.
The audience is local café-goers and curious visitors in and around Laoag City who want warmth and wonder rather than a corporate chain experience. They arrive to discover the café, browse what is on offer, order food and drink online, and secure a table for a visit.
The current delivery is a single public landing destination, Landing, that carries the entire accepted experience: the hero with the tagline "Brewed in the Stars", the About story section, the interactive tabbed menu, the online order shopping cart drawer, the table reservation popup modal, testimonials, and opening hours with contact details.
Actors:
The Landing destination is publicly reachable with no access requirement. Ordering and reservation are interactions inside that destination (a cart drawer and a popup modal), not separate destinations. The backend supports the ordering and reservation workflows so that placed orders and confirmed reservations persist and can be fulfilled by the café.
Narrow exclusions: this document does not add customer accounts, login, loyalty programmes, delivery tracking, payment-gateway integrations, staff-facing administration consoles, or any destination beyond the single Landing page. Nothing in the accepted requirements asks for them.
The café's public face and its transactional interactions live together on one page. A visitor lands, reads the founder's story, browses the menu by tab, adds items to a cart that slides in as a drawer, and either completes an order or opens a reservation modal to book a table. Because the ordering and reservation interactions are presented as a drawer and a modal — surfaces that belong to the page that opened them — they are owned by Landing rather than split into separate destinations.
Access is public. No account, sign-in, or identity establishment is required or implied by the source: the accepted requirements describe a visitor browsing and ordering, and a guest reserving a table, with no mention of accounts, profiles, or returning-user state. Order and reservation records are created and persisted server-side so the café can act on them, but the customer is not asked to establish an identity to do so.
Current horizon: the Landing page, its menu tabs, the cart drawer, the reservation modal, testimonials, and the hours/contact content. Future horizon: nothing beyond the accepted requirements is committed; any later addition (accounts, payments, delivery, admin tooling) is out of scope for this generation.
Not applicable — no reference directive in this project declares content_source authority. All factual content below is drawn from the authoritative user requirement thread.
The single public entry surface. Espresso-brown ground (#2C1A14) across the whole page, creamy off-white (#FDFBF7) body copy and section titles, warm gold (#D4A373) as the single structural accent. Section boundaries are golden hairline arcs cut into the espresso ground rather than straight lines.
Information and state
Primary actions
Supporting actions
Domain entities
Component responsibilities
States
FR-1 — Celestial landing page and ordering web app (explicit) As a Café Customer, I should land on a modern, clean, celestial-themed page for Astrotian Café that both presents the café and lets me order, so that discovery and ordering happen in one place.
FR-2 — Colour palette (explicit) As a Café Customer, I should see the café's palette applied consistently, so that the page reads as one warm, dark, celestial room.
FR-3 — Typography (explicit) As a Café Customer, I should read elegant serif titles and clean sans-serif body text, so that the page feels classical and cosmic rather than generic.
FR-4 — Hero with tagline (explicit) As a Café Customer, I should see a hero section carrying the tagline "Brewed in the Stars", so that the café's promise is the first thing I read.
FR-5 — About story section (explicit) As a Café Customer, I should read the founder's story, so that I understand what the café is and where its name comes from.
FR-6 — Interactive menu with tabs (explicit) As a Café Customer, I should switch between menu tabs to browse what the café offers, so that I can find the category I want.
FR-7 — Featured menu items and prices (explicit) As a Café Customer, I should see the featured menu items with their prices, so that I know what is on offer and what it costs.
FR-8 — Online order shopping cart drawer (explicit) As a Café Customer, I should add items to a cart drawer and place an order, so that I can buy food and drink online.
FR-9 — Table reservation popup modal (explicit) As a Table Reserver, I should open a reservation popup modal and submit a booking, so that I can secure a table.
FR-10 — Testimonials (explicit) As a Café Customer, I should read testimonials, so that I can judge the café from other people's experience.
FR-11 — Opening hours with contact details (explicit) As a Café Customer, I should find the café's location, hours, and contact details, so that I know when and where to visit.
FR-12 — Order and reservation persistence (required_inference) As a Café Customer, I should have my placed order and my confirmed reservation recorded, so that the café can actually prepare my order and hold my table.
Product context. A local café-goer or curious visitor in or around Laoag City who has found Astrotian Café's site. They may be deciding whether to visit at all, or they may already know what they want and are ordering ahead.
Primary goal. Discover the café's story and offerings, and complete a food-and-drink order with the correct items.
Distinct accepted responsibilities. Browsing the celestial-themed landing content; reading the founder's story; exploring the interactive menu tabs (Coffee, Celestial Brews, Pastries, Light Bites); adding items to the cart drawer; adjusting and removing cart lines; placing the order.
Relevant inputs or decisions. Which menu tab to open; which items and quantities to add; whether to proceed to place the order or keep browsing.
Interactions with other accepted participants. The customer's placed order is the handoff to the café, which prepares it. The customer and the Table Reserver are the same kind of visitor taking a different action; a customer may also reserve a table.
Observable success. A placed order with the correct items and a confirmed total, with the cart cleared afterwards.
What makes this role different. The customer's work is selection and commitment — choosing among categories and items and converting that selection into an order. It is not the same as booking a table, which is a scheduling commitment rather than a basket of goods.
Product context. A guest who intends to visit the café in person and wants a table held for a specific date and time.
Primary goal. Secure a table at the café by submitting a booking for a date and time.
Distinct accepted responsibilities. Opening the reservation popup modal; providing reservation details (date, time, party details); submitting the booking; confirming the booking.
Relevant inputs or decisions. The date and time they want; the size of their party; whether to confirm the booking or abandon it.
Interactions with other accepted participants. The confirmed reservation is the handoff to the café, which holds the table. A reserver may also be a Café Customer ordering online.
Observable success. A confirmed table reservation showing the chosen date and time.
What makes this role different. The reserver's work is a scheduling commitment against the café's capacity, not a product selection. Their success is measured in a held table at a time, not in items and a total.
Product context. Christian, the founder, whose story and identity shape the About section and the brand. The site is the café's public face.
Primary goal. Have the café's offerings and story accurately and attractively presented to customers.
Distinct accepted responsibilities. Supplying the founder's story and its attribution; supplying the café's location, operating hours, and stargazing hours; supplying the featured menu items and their prices; supplying the testimonials content.
Relevant inputs or decisions. The exact wording of the story; the exact prices; the exact hours; which items are featured.
Interactions with other accepted participants. The founder's content is what the Café Customer reads and what the Table Reserver sees before booking; the orders and reservations the site produces are what the café acts on.
Observable success. The café's story, menu, prices, hours, and location appear correctly and attractively on the public page, and orders and reservations reach the café.
What makes this role different. The founder is the source of the café's identity and factual content rather than a transactional actor; his success is accurate, attractive presentation, not a completed transaction.
Muse: Zaha Hadid. Headline: Fluid cosmic grandeur — espresso-dark voids carved by golden light. The shape, layout, and motion language is parametric continuity: curved section boundaries that read as orbital arcs, espresso-dark grounds cut by golden light, and continuous surfaces that suggest a coffee being poured and a galaxy rotating are the same gesture. The user's exact palette and typographic register are preserved unchanged.
Colour tokens (dark mode)
| Role | Hex | Use |
|---|---|---|
| Background | #2C1A14 | Dominant espresso ground across the whole page — a dark, warm, room-like atmosphere, never flat black |
| Surface | #3A241B | Cards, the cart drawer, and the reservation modal — raised without becoming a light UI |
| Text | #FDFBF7 | All body copy and section titles at full contrast |
| Primary | #D4A373 | The single structural accent: hairline rules, orbital arcs, active tab underline, price numerals, primary buttons (with espresso-brown text on gold) |
| Accent | #E8C39E | Hover and focus glows, and the thin light-arc tracing curved section boundaries |
| Muted | #8A6A55 | Secondary metadata only (labels, timestamps, item counts) on the dark ground — never body copy |
Proportion: roughly 60% espresso ground, 25% cream text, 12% gold accents, 3% lifted surface. Contrast is checked: #FDFBF7 on #2C1A14 far exceeds WCAG AA. Gold #D4A373 is never used for small body text — only for headings, icons, rules, and buttons.
Typography
clamp(3.25rem, 10vw, 8rem).clamp(2rem, 4.5vw, 4rem).Shape language. Parametric continuity. Section boundaries are not straight lines: a wide golden hairline arc sweeps between the hero and the About section, and the About section's top edge is a single shallow curve cut into the espresso ground. Menu cards use a large asymmetric corner radius (28px top-left, 4px bottom-right) so each tile reads as a small, tilted planet. Buttons are pill or full-capsule with a 1px gold hairline. The cart drawer slides in with a curved leading edge, and the reservation modal has one rounded top corner echoing the hero arc. No hard 90° corners anywhere except the tab bar's baseline rule.
Layout. Asymmetric editorial grid on a 12-column system. The hero occupies the full viewport with the wordmark and tagline anchored bottom-left in a 7-column block; a large circular orbit motif bleeds off the top-right corner. The About story is two columns: left a portrait-shaped dark panel with a thin gold ring drawn around the founder's name, right the founder's story at 60ch measure. The menu is a horizontal tab strip on a single gold hairline, with items below in a 3-column grid at 1280, 2-column at 768, single column at 375. Testimonials are a horizontally scrollable row of three tilted espresso cards (each rotated ±1.5°). Hours and contact sit in a footer band with a curved top edge cut into the espresso ground and a small gold compass/location glyph. All display type scales with clamp() so the hero line wraps rather than clips at 375px.
Imagery. One large photograph or rendered image of a dark espresso cup on a warm brown ground, lit from above like a small moon, with a soft golden rim light — the single celestial object of the page. Supporting imagery: macro shots of crema swirls, a stargazing-window photograph in the About panel, and a small constellation diagram drawn as gold hairlines behind the founder's quote. No stock people, no flat clip art, no gradient blobs. Photography is always cropped in a circle or an arc, never a plain rectangle.
The poster hero. The public entry is composed as a poster, not a SaaS hero. A full-bleed espresso-brown viewport (#2C1A14) carries an oversized Cinzel wordmark "ASTROTIAN" at clamp(3.25rem, 10vw, 8rem), letter-spaced, anchored bottom-left in a 7-column block. Directly beneath it on the same baseline grid sit the tagline "Brewed in the Stars" in Jost small-caps gold and the gold pill "Order Now" call to action. Top-right, a large golden hairline circle — the orbit ring — bleeds off the viewport edge and rotates slowly; a single cream-lit espresso cup photograph sits inside its lower arc, cropped by the ring. A thin gold rule runs horizontally across the viewport at 62% height, carrying the micro-label "Rizal Street · Laoag City" on the left and "Open 7AM – 9PM" on the right.
There is no centred headline, no subtext stack, no blue button, and no gradient blob. The composition reads as a poster: one dark room, one golden light, one cup, and the café's name set large enough to be the architecture of the page. Every element in it is accepted content — the wordmark, the tagline, the ordering call to action, the location, and the hours.
Interaction Model: Animated Motion Tempo: restrained Hero Dimensionality: layered_2d
Landing Hero Motion Brief
cubic-bezier(0.22, 1, 0.36, 1); the reservation modal fades and scales from 0.96 to 1 in 260ms. No bounce, no particles, no gradient blobs.prefers-reduced-motion, the orbit ring is static and all reveals collapse to plain opacity 0→1 over 150ms. The hero remains fully composed and readable, with the wordmark, tagline, call to action, location, and hours all in place.NFR-1 — Readable text and controls at every viewport (explicit, from the creative direction's readability rule)
Headlines, the wordmark, labels, numbers, card 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. No other element covers any part of them. Imagery, decoration, and motion may be cropped, bled off an edge, rotated, overlapped, or cut as the direction asks, as long as they cover no readable text or control. The horizontally scrollable testimonials row may cross the container edge by design; every card becomes fully readable as it passes, and under reduced motion the row remains horizontally scrollable so each card can be brought fully into view.
NFR-2 — Colour contrast (explicit palette, checked)
#FDFBF7 on #2C1A14 far exceeds WCAG AA. Gold #D4A373 is never used for small body text — only for headings, icons, rules, and buttons, with espresso-brown text on gold buttons for readability.
NFR-3 — Reduced motion (explicit, from the creative direction)
Under prefers-reduced-motion, the orbit ring is static and all reveals collapse to plain opacity 0→1 over 150ms. The page remains fully usable and fully readable.
NFR-4 — Order and reservation durability (required_inference) Placed orders and confirmed reservations persist server-side so the café can prepare the order and hold the table after the customer closes the page. Rationale: without persistence the accepted ordering and reservation outcomes are not real.
NFR-5 — Public access (explicit) The Landing page and its ordering and reservation interactions are publicly reachable with no sign-in. No account, profile, or returning-user state is required by any accepted requirement.
NFR-6 — Currency and locale (explicit) All prices are displayed in Philippine pesos with the\x20\xe2\x82\xb1 symbol, matching the source values. Location and hours are presented as given for Laoag City, Ilocos Norte.
Kubernetes is not required for this deployment.
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!