Booki

Responsive, pixel‑perfect and accessible HTML/CSS integration of a travel agency mockup.

1. Context

• Company: Booki, a platform to search accommodations and activities by city.

• Team: Artdantech, Sarah (CTO), Loïc (UI designer).

• Deliverables: a responsive index.html page matching the mockup, completed CSS in css/style.css, correctly integrated images, compliance with the requirements summary, final delivery using the provided folder structure.

• Starting point: Figma mockup, starter code (index.html + css/style.css + images/), requirements summary. Do not copy Figma snippets blindly—build a clean, understandable integration.

2. Need

• Integrate the Booki UI (HTML + CSS only) from the provided mockup, desktop-first then responsive (tablet, mobile).

• Build the header, search form, filters, the “Accommodations in Marseille”, “Most popular”, “Activities in Marseille” sections, and the footer while respecting the grid, spacing, and styles defined.

• Ensure baseline accessibility (semantic structure, alt text, keyboard navigation) and W3C validity (HTML/CSS).

3. Client / Stakeholders

• End users searching accommodations/activities on desktop or mobile.

• Product/tech (Sarah) for technical compliance and file structure consistency.

• Design (Loïc) for visual fidelity and alignment with the mockup.

4. Goals

4.1 Functional

• Display the full homepage with all blocks: header, search, filters, accommodations, popular, activities, footer.

• Allow search input (static UI), display filters and their visual states (default/hover).

• Present accommodation and activity cards with the expected content (image, title, text, rating/icons if required).

4.2 Technical

• 100% HTML/CSS integration: no JS required; keep the provided folder structure (index.html, css/, images/).

• Layout using Flexbox (and Grid if needed), appropriate units (px for margins/paddings per spec), responsive with media queries (<=1024px, <768px).

• Raleway typography (Google Fonts), Font Awesome icons already imported; viewport meta and layout constraints (max width 1440px, min 320px).

5. Constraints / Challenges

• Avoid copying Figma code “as-is”: it can lead to incorrect measures/positioning. Start from the provided HTML/CSS and implement cleanly.

• Strict mockup compliance: alignment, spacing, hover borders, breakpoint-based background color changes.

• Accessibility: alt attributes, heading hierarchy, visible focus, sufficient contrast.

• Pass W3C validation; implement responsive in the intended order (desktop → tablet → mobile) without breaking structure.

6. Process / Methodology

6.1 Analysis

• Break down the mockup into areas: header (logo + nav), search bar (location icon, input, button), filters (icons + labels), “Accommodations” (6-card grid), “Most popular” (horizontal cards), “Activities” (4 columns), footer (3 columns).

• Define semantic HTML: header/nav, main/section/article, h1/h2, ul/li for card lists, figure/figcaption for images, footer.

• Identify reusable components (cards, filter tags, buttons) and their desktop/mobile variants.

6.2 Breakdown into GitHub issues

• Environment setup (VS Code, Live Server), check Google Fonts/Font Awesome imports + viewport meta.

• Desktop header (logo + nav + top hover border).

• Desktop search form (location icon, input, “Search” button).

• Filters (structure + styling + hover).

• First accommodation card (vertical), duplicate x6 + container layout.

• “Most popular” section (horizontal cards) + “Show more” link.

• “Activities” section (4 columns, fixed image heights, object-fit).

• Footer (3 columns).

• Responsive: tablet (<=1024px), mobile (<768px) with reordering/color changes/button text → magnifier icon.

• W3C validation + a11y + final polish (spacing, hover, focus).

6.3 Architecture & logic

• Structure: /index.html, /css/style.css, /images/* (unchanged).

• HTML layout: body > header + main (sections) + footer; single h1, h2 per section, lists for groups of cards.

• Cards: link wrapper > image (width:% + height:px + object-fit:cover) + content (title, text, icons). Border radius + shadow as per style.

• Search bar: 3 parts (location icon, input, CTA). On mobile, hide “Search” text and show the magnifier via CSS.

• Filters: horizontal group on desktop, stacked on mobile; each filter = icon + label with hover/active styles.

6.4 Technical choices (rationale)

• Flexbox for most layouts (alignment/spacing) to avoid fragile absolute positioning from Figma snippets.

• Units: px for margins/paddings (per spec) and %/fr/rem for widths/typography when appropriate; centered container with max-width: 1440px.

• HTML images + object-fit: cover to prevent distortion and keep consistent thumbnails.

• Ordered media queries: base (desktop) → tablet (<=1024px)mobile (<768px) to keep CSS readable and prevent collisions.

6.5 Main flows

• Desktop header: logo + nav with blue top border on hover (bottom border on mobile).

• Desktop search: location icon + input + “Search” button. Mobile: replace text with magnifier icon via CSS.

• Filters: horizontal on desktop with hover background change, then responsive adaptation.

• Accommodations: build one reusable card, duplicate x6, apply responsive grid; add title/icon and “Show more”.

• Activities: 4 columns with consistent heights; create one card pattern and replicate for the other three.

• Footer: 3 equal columns (link lists), remove default ul padding if used.

6.6 Tests & quality

• Validate HTML/CSS with W3C validators; fix any errors.

• A11y: alt attributes, heading order, keyboard navigation, visible focus; quick audit (Lighthouse/aXe).

• Responsive: verify key widths (320, 360, 768, 1024, 1280, 1440 px); confirm background color inversions.

• UI checks: header hover borders, filter hover states, image integrity (object-fit), spacing consistency.

7. Analysis

• Using Flexbox, clean semantics, and progressive media queries delivers a faithful, robust responsive integration. Avoiding uncontrolled Figma snippets prevents absolute-positioning traps and rigid sizing issues, while complying with the requirement to use px for margins/paddings.

8. Technical decisions

• Semantic HTML5 and structured CSS3 (sections, components, lightweight utilities if needed).

• Raleway (Google Fonts) and Font Awesome already imported; strict preservation of link tags and viewport meta.

• Desktop-first approach with tablet and mobile media queries, max width 1440px and min width 320px.

9. Resolution logic

• Build the desktop version first (structure + base styles), factor a reusable card component, implement each section, then handle responsive behavior with the two breakpoints. Finish with W3C validation, accessibility checks, and a pixel-perfect pass against the mockup.

10. Stack used

• HTML5, CSS3 (Flexbox, object-fit, media queries).

• Tools: VS Code, Live Server, DevTools (layout/responsive), W3C Validators, Lighthouse/aXe (quick checks).

• Assets: provided images folder; fonts/icons via existing links; no JS dependencies required.

11. Final result

• Booki page matching the mockup: header, search, filters, “Accommodations in Marseille”, “Most popular”, “Activities in Marseille”, footer.

• Full responsiveness (desktop → tablet → mobile), including background color inversions and button text/icon variations.

• Quality: valid HTML/CSS, baseline accessibility met, file structure preserved, ready for delivery to Sarah (complete folder).