Brasad'Or
What it is
Brasad'Or is a restaurant in Spain that serves traditional Armenian food: grilled meats, skewers and the dishes of the house. Its site is one page in Spanish with the services, a booking form, the address, a WhatsApp link and a map, plus a separate menu page made to be read on a phone at the table.
The menu has 11 categories and 164 dishes and drinks, with photos, prices (several per item where there are sizes), the allergens of each dish with the legal icons, a search box, a sticky category bar and a Spanish / English switch. The restaurant edits it itself from a password-protected admin panel.
How it's built
The pages are static HTML on Bootstrap, started from a free HTML Codex restaurant template. The menu is not in the HTML: it is one JSON file that the browser fetches and renders, and a small PHP API writes it back when the restaurant saves.
- No database, no build:
js/menu.jsrendersdata/menu.json, so a saved change is live on the next page load. - Safe saves:
api/menu.phpvalidates every field (texts in Spanish and English, prices, formats, allergens, photo paths), keeps a copy of the previous menu (the last thirty) and only then writes the new one. - Photos from the phone:
api/upload.phpchecks that the file is a real image and re-encodes it to a JPEG of at most 1200 px, so a large phone photo never reaches the page as it is. - The admin panel: a session after
password_verify, a lock after 8 wrong tries, a CSRF token on every write and an HttpOnly, SameSite session cookie. - Nothing secret in the repository: the password hash, the live menu and the uploads live outside the deployed files and survive every deploy.
Why I made it
It is the restaurant's own website. In the first version the menu was only a link to an external smart-menu service; in 2026 I brought the whole menu into the site (every category, item, price, allergen and photo) and added the panel, so the restaurant can add dishes, change prices or mark a dish as unavailable on its own site.
Timeline
First version in November 2025; the menu system and the move to kazin.dev in 2026.
Technologies
- HTML
- Bootstrap
- PHP