A polished front-end flower shop experience built with pure HTML, CSS, and JavaScript. Petal & Bloom is designed as a portfolio-ready demo that showcases dynamic product rendering, filtering, cart interactions, theming, and responsive UX — all without a backend.
Petal & Bloom is a modern, responsive landing page for a fictional flower boutique. It features interactive product discovery, live search, category filters, a shopping cart with persistent state, dark mode, and polished UI animations. This project runs entirely in the browser and requires no build tools or server setup.
- Responsive Design: Works smoothly on desktop, tablet, and mobile.
- Dynamic Product Rendering: Product cards are generated from JavaScript data.
- Live Search: Filter products instantly as the user types.
- Category Filtering: Browse product categories with a single click.
- Best Sellers Section: Highlight top-rated products.
- Persistent Cart: Cart contents are saved using
localStorage. - Dark Mode Toggle: Theme preference saves across visits.
- Mobile Navigation: Accessible menu for small screens.
- Animated UI: Loader, floating petals, and card transitions.
- Forms & CTA Sections: Newsletter and contact form UI components.
Flower-Shop/
├── index.html # Main markup and page structure
├── css/
│ ├── style.css # Main styles and responsive rules
│ ├── base/ # Global reset, typography, utilities, variables
│ ├── components/ # Component-specific styles
│ ├── layout/ # Layout section styles
│ └── responsive/ # Responsive breakpoints
├── img/
│ └── image.png # Local favicon / preview asset
| └─ image-readme.png # for readme.md png
└── js/
├── main.js # App initialization and feature wiring
├── data.js # Product and category data
├── utils.js # Shared helper functions
├── theme.js # Dark/light mode behavior
├── navbar.js # Navigation + mobile menu + search behavior
├── products.js # Product rendering, filters, interactions
├── cart.js # Shopping cart management and UI
├── testimonials.js # Testimonials carousel behavior
└── forms.js # Newsletter and contact form handling
The project does not require installation. Open the site directly in any modern browser.
- Open the
Flower-Shopfolder. - Double-click
index.html, or open it via your browser.
Tip: For faster development, you can also use the Live Server extension in VS Code.
index.htmlcontains the visual layout and page sections.css/style.cssand the files incss/define styling and responsive behavior.js/data.jscontains product and category definitions.js/main.jsinitializes the app and wires up features.js/products.jsrenders products, categories, and handles filters.js/cart.jsmanages cart state, UI updates, and persistence.js/navbar.jshandles navigation, mobile menu, and search.js/theme.jsmanages dark mode behavior.js/utils.jsprovides common helper functions.
Edit the PRODUCTS array in js/data.js to change, add, or remove products.
Update the CATEGORIES array in js/data.js to modify category cards.
Modify css/style.css to update colors, spacing, typography, and responsive breakpoints.
Change theme persistence and defaults in js/theme.js.
- The cart is persisted locally using
localStorage. - Forms are demo-only and do not submit data to a backend.
- The site is front-end only and works once
index.htmlis opened in the browser.
This project is free to use and adapt for personal, portfolio, and learning purposes.
Made with 🌸 for flower lovers everywhere
