About this project
A grocery and supermarket store (FreshCart) built with server-rendered PHP 8.2 and SQLite - no framework and no build step. Shoppers check delivery to their postcode, browse categories with search suggestions, see allergens and per-unit prices, buy items by the piece or by weight, and choose substitution preferences before booking a delivery or collection slot. Checkout reserves stock and slot capacity, takes payment with authorise-then-capture so weighed items are charged correctly, and customers can track orders, download invoices, reorder, keep favourites and shopping lists, and earn and spend loyalty points. Offers, bundles, recipe guides with add-to-cart and a double opt-in newsletter round out the shop. The back office manages the catalogue, batches and expiry with markdowns and write-offs, inventory, slots and zones, a picking queue with substitutions, dispatch, refunds, pricing and promotions, customers and reports. It ships with CSRF protection, SEO sitemap and structured data, cookie-consented analytics and an extensive test suite.
Key features
- Postcode delivery check and delivery or collection slot booking with capacity limits
- Category browsing, search suggestions, allergens and per-unit pricing
- Items sold by the piece or by weight, with substitution preferences
- Stock and slot reservation with authorise-then-capture payments
- Order tracking, invoices, reorder, favourites, shopping lists and loyalty points
- Offers, bundles, recipe guides and newsletter
- Back office: catalogue, batches and expiry, inventory, picking, dispatch, refunds, pricing and reports