An HTML mobile template for a recipe app home screen with search, meal type category chips, a recipe of the day card, a quick recipes list with cooking time and difficulty, a filters bottom sheet and bottom tabs. Use this cooking app UI as the start screen of a food blog PWA, meal planner or mobile recipe site, or package it with Capacitor. Built with Bootstrap 5, Bootstrap Icons and Outfit in white with fresh green and tomato accents. The food photos come from Unsplash; replace them with your own images.
How it works
The root .rch-app is a centred app column (max 430 px). The header greets the user by time of day, followed by the .rch-search form, the .rch-chips row, the .rch-daily card and the .rch-quick list; the .rch-tabs nav sticks to the bottom.
Every .rch-item carries data-meal, data-time (minutes) and data-level. The script combines the pressed chip, the search text, the maximum time and the difficulty levels; apply() hides items that do not match, updates .rch-quick__count and shows the .rch-empty state when nothing matches.
The filter button opens the Bootstrap offcanvas .rch-sheet with a segmented time control (radio buttons) and difficulty checkboxes. Submitting with no difficulty shows an error; otherwise the filters apply and a badge shows how many are active. Hearts toggle aria-pressed and update the Saved tab badge.
Customization
--rch-green,--rch-green-darkand--rch-green-softon.rch-app: the primary colour for chips, buttons and the active tab.--rch-tomatoand--rch-tomato-softon.rch-app: the accent for the recipe of the day badge, saved hearts and Medium labels.data-meal,data-timeanddata-levelon each.rch-item: add your recipes; a recipe can belong to several meal types, e.g.lunch vegan.height: 216pxon.rch-daily__img: makes the featured card taller or shorter.- The
valueof thename="time"radios: change the time limits in the filters sheet. - The
partarray inscript.js: change the greeting and meal hints, or remove it for a fixed title.
Use cases
- Recipe and cooking apps: browse by meal type and find something quick
- Food blogs as PWAs: feature one recipe per day above the latest recipes
- Meal planning and nutrition apps: filter by time and difficulty before adding to a plan
Accessibility
The search is a role="search" form with a hidden label. Category chips are buttons in a labelled group and use aria-pressed. The recipe count is a role="status" region, and a hidden live region announces filter results and saved recipes. Save buttons have labels that change ("Save Avocado Egg Toast" / "Remove … from saved"). The filters sheet uses fieldsets with legends, traps focus and closes with Escape or the backdrop. The current tab has aria-current="page", and touch targets are at least 44 px.
Usage notes
Requires Bootstrap 5 (offcanvas) and Bootstrap Icons; Outfit is loaded from Google Fonts. The recipe links use href="#" in the demo; replace them with your recipe page URLs.