AllFood is a website template for restaurants, cafés and bakeries, built on Bootstrap 5. The layout is responsive and works in all popular web browsers. It comes with seven pages: home, about, menu, blog, blog post, contact and an elements page that shows the buttons, forms, tables and other components.
The home page has a large hero, an about section, a menu in four tabs (special, lunch, breakfast and dinner) with dish names and prices, a table-booking bar, service cards, a newsletter band and a row of recent posts. The inner pages add a full menu, a blog with categories, tags and a search, a post page with comments and a comment form, and a contact page with a click-to-load map, a contact form and your opening hours. AllFood gives you a ready-made site to present your menu and take bookings.
What’s new in 3.0
Bootstrap 5.3.8 (the earlier release used Bootstrap 4.1.3 and jQuery), compiled from Sass together with the theme and the original Bootstrap 4 proportions, and plain JavaScript with no jQuery. Native date, time and select fields replace the date picker and Nice Select, the PhotoSwipe gallery replaces Magnific Popup, and a small built-in module drives the mobile menu and sticky header. npm run build (Dart Sass and esbuild) compiles one minified stylesheet and one script.
Lighter pages: all eight pages together went from 32.1 MB and 448 requests to 6.1 MB and 234 requests. Every photo has an AVIF version with the JPEG as the fallback, real dimensions and lazy loading, and unused plugins such as jQuery, Slick, Owl Carousel, SlickNav, WOW and the gijgo pickers are gone.
No third-party requests: Josefin Sans and Poppins are self-hosted, the Flaticon, Themify and Font Awesome icon fonts are replaced by Lucide SVG icons and a small social-logo subset (the Twitter bird is now the X logo), the contact page shows a click-to-load map that needs no API key, and a Google Analytics 4 snippet stays commented out until you add your own ID. Before, every page loaded its fonts from Google Fonts and the contact page loaded Google Maps.
Working forms: the booking bar, contact form, comment form and newsletter fields send through php/send-email.php and php/subscribe.php, with validation, a spam trap and an in-page message. Before, most forms had no action, their fields had no names, and the contact form posted to a script that mailed a fixed address.
Accessibility: a skip link and a main landmark on every page, one h1 per page, a real menu button, a mobile menu that keeps keyboard focus inside and closes with Esc, a Blog submenu and menu-card buttons that work from the keyboard, names on icon-only links, visible focus rings, reduced-motion support and WCAG AA text contrast, with a darker orange for orange text and for the white labels on buttons.
Fixed: the preloader that covered every page is gone, the empty reservation and search links point at real pages, the typos in the headings and menu are corrected, and the missing icons, fonts and background pictures that returned 404 errors no longer load.
Demo content: a real menu with dish names, prices and descriptions, fictional contact details, a fictional author and comments, and every photo is a new Unsplash photo of food and the kitchen, with a redrawn logo.