Commit graph

11 commits

Author SHA1 Message Date
Imugiii
ad0b59a668 feat(front): extend cart state for menu composition with size supplements 2026-05-09 09:18:47 +00:00
Imugiii
6db68da0f9 feat(front): add menu composer modal HTML structure and CSS 2026-05-09 09:18:42 +00:00
Imugiii
6a7e772646 feat(front): extend CSS design system for P5 new screens
Adds components (sections 7-13 in style.css):
- Shared: .btn, .mode-badge, .cart-badge, .site-header__cart
- products page: .products-grid, .product-card (3-col grid)
- product detail: .product-detail, skeleton animation, composition block
- cart: .cart-line, .qty-btn, .cart-summary
- payment: .payment-choice with inline SVG icons
- confirmation: .confirmation-banner with check animation
All new components reuse existing design tokens; no new palette entries.
2026-05-09 07:59:50 +00:00
Imugiii
0d83512a4f feat(front): payment selection and order confirmation pages
payment.html     - card / cash choice with inline SVG icons; both simulate payment (MVP)
confirmation.html - order number WK-<base36 timestamp>, cart cleared on load,
                    new-order button resets flow to index.html
2026-05-09 07:59:45 +00:00
Imugiii
c517b16569 feat(front): cart page with quantity controls and TVA breakdown
Displays line items with - / + controls and delete button.
TVA 10% (restauration FR 2024, simplified).
TODO in P3: verify rate with accountant (sur-place vs a-emporter + product type).
Abandon button clears cart and returns to categories.
2026-05-09 07:59:40 +00:00
Imugiii
cd6e05c353 feat(front): products list and product detail pages
products.html - dynamic grid from ?category=<id>, JS fetch from data/produits.json
product.html  - detail view; menus show fixed composition note (MVP: no selection)
Both pages: cart badge, mode badge, keyboard/RGAA accessible cards
2026-05-09 07:59:35 +00:00
Imugiii
43b6e7a309 feat(front): vanilla JS state management, data loader, and nav helpers
state.js  - cart (localStorage) + mode + price formatting in centimes
data.js   - fetch wrapper over static JSON with in-memory cache; P4 swap points marked
nav.js    - mode badge injection and cart count badge across pages
2026-05-09 07:59:31 +00:00
Imugiii
6f5daca679 feat(front): copy school JSON sources to public/data for static fetch fallback
Normalizes produits.json:
- Prix converted from float EUR to integer centimes
- Image paths rewritten to match actual filesystem (lowercase, dashes)
- Added type field ('produit'|'menu') on each entry
- Added slug field to categories.json

In P4, swap fetch URLs in assets/js/data.js (marked with TODO comments).
2026-05-09 07:59:26 +00:00
Imugiii
71c863d2b2 feat(front): borne welcome screen and category list scaffold using school assets
- Welcome screen (index.html): background photo, white card, Sur Place / A Emporter
  choice buttons with verified school illustrations; pure HTML <a> navigation, no JS
- Category grid (categories.html): 9 categories from categories.json rendered as 3-col
  card grid with verified category images; stub links to products.html?category=<id>
- Design system CSS (assets/css/style.css): CSS custom properties for brand yellow
  #FFC72C, spacing scale, border-radius, shadows extracted from maquette PDF;
  BEM-style component classes; WCAG AA focus-visible rings; kiosk portrait 1080px primary
2026-05-09 07:12:55 +00:00
Imugiii
b8f7d35064 feat(stubs): unblock 403 with kiosk and admin index pages, plus FastCGI fixes
Three changes bundled because the stubs surfaced two pre-existing infra bugs
that had never been hit (the smoke test only exercised PHP via 'docker exec',
not via the full Apache->PHP-FPM FastCGI path).

- src/public/borne/index.html : minimal HTML stub for the kiosk vhost
  (200 OK with the imported logo)
- src/public/admin/index.php : minimal PHP stub that proves the full
  FastCGI chain works end-to-end (renders PHP_VERSION + current timestamp)
- docker/apache/vhost.conf : add 'DirectoryIndex index.php index.html' on
  the admin vhost. Without it, hitting / returned 403 because the default
  Apache DirectoryIndex is index.html only, and the existing RewriteRule
  did not apply to the directory request (\!-d cond was false).
- docker/php-fpm/www.conf : comment out 'listen.allowed_clients = any'.
  PHP-FPM 8.3 rejects 'any' with 'Wrong IP address' and ends up dropping
  every connection from Apache. With the directive absent, all connections
  are accepted, which is acceptable in our isolated Docker network.
2026-04-30 13:07:12 +00:00
Imugiii
24e733bcbc chore(assets): import school source data and normalize visual assets
- docs/merise/_sources/ : raw JSON sources (categories + produits)
  preserved unchanged for jury traceability, plus provenance note
  documenting 7 typos in image refs and gaps to address at the MCD
  phase (no FK, float prices, missing menu composition, etc.)
- docs/design/ : Figma maquette PDF (renamed without accent) plus
  README pointing to the live Figma URL
- src/public/borne/assets/images/ : 71 visual assets (53 produits +
  9 categories + 9 UI) normalized to kebab-case lowercase to avoid
  the case-sensitive Linux pitfall in Docker production

The 'wacdo' naming from the school brief is preserved only inside
docs/merise/_sources/ for traceability. The rest of the project keeps
the canonical 'Wakdo' naming.

TODO P1: rename cheesecake-choconuts-m&m-s.png (the & breaks URLs
without percent-encoding); will be fixed during seed normalization.
2026-04-30 12:43:14 +00:00