Requirements
Requirements
- A public site to browse, view and search recipes.
- A secure, authenticated admin area with full CRUD.
- Image upload with preview.
- Live search without a full page reload.
- Soft delete with restore.
- Usability and accessibility applied to a responsive interface.
Solution
The solution
The public site presents a featured dish, category browsing and search over a catalogue of Ghanaian recipes. The admin area, gated by a login, provides the full create/read/update/delete lifecycle over recipes, with a live image preview as fields change.
The standout admin feature is an asynchronous live-search in “Manage Recipes”: JavaScript and AJAX call the PHP backend to filter the table dynamically, with no full page reload. Deletes are soft: recipes move to a Trash and can be restored.
Nielsen's usability heuristics (visibility of system status, user control and error prevention, among others) and WCAG accessibility considerations were applied to the responsive interface throughout, not retrofitted at the end.
Architecture
System architecture
A server-rendered PHP application over MySQL. Shared includes handle configuration, the admin session/auth guard, and image upload; page scripts render the public pages and the admin CRUD flows. The live-search endpoint returns filtered results to the browser over AJAX.
Data
Database design
A recipe belongs to a category and carries a title, short description, instructions, prep and cook times, a difficulty and an image path. A soft-delete timestamp preserves removed recipes for restore, and admin users authenticate against a hashed password.
Features
Key features
Public recipe site
Home, category browsing, search and recipe detail for traditional Ghanaian dishes.
Secure admin CRUD
A login gates full create, read, update and delete over recipes.
AJAX live-search
The admin's Manage Recipes list filters dynamically via JavaScript + AJAX, with no page reload.
Image upload & preview
Uploaded images are validated and previewed live as the form is edited.
Soft delete & restore
Removed recipes move to a Trash and can be restored, rather than being destroyed.
Usability & accessibility by design
Nielsen usability heuristics and WCAG accessibility considerations applied to a responsive interface.
Engineering
Engineering decisions
Vanilla stack by deliberate choice
No framework, chosen so the module assessment could evaluate my own handling of routing, auth and data access directly, rather than a framework's: a tradeoff of more boilerplate for more visible fundamentals.
AJAX over the PHP backend
The live-search fetches filtered results asynchronously, demonstrating JS + AJAX + PHP working together.
Soft delete over hard delete
Deleting sets a timestamp and moves the recipe to Trash, so it stays recoverable.
Usability heuristics applied deliberately
Nielsen's heuristics informed concrete decisions: visible system status on save/delete, clear error prevention on required fields.
Interface
Screenshots



Reflection
Lessons learned
Applying usability heuristics during design, not after, changes which decisions you even consider.
A small async touch like live-search noticeably improves how responsive an admin tool feels.
What's next
Future roadmap
- Push the source to a public repository as the flagship open code example on this portfolio.
- Tagging and richer public search and filtering.