All work

Apra Curry House

A takeaway site that sends people to the order they actually want (delivery platform, phone pickup, or the menu) with live opening hours and perfect accessibility and SEO scores.

The Apra Curry House homepage: “Tandoori & curry, made the Punjabi way” set over two bowls of curry, with Uber Eats and DoorDash buttons and a live “Closed · opens 11 am” line.
Lighthouse SEO
100
Lighthouse accessibility
100
largest contentful paint
0.8s
cumulative layout shift
0

Three intents, no friction

Someone landing on a takeaway site wants one of three things: to order for delivery, to call and collect, or to look at the menu. The page is built around exactly those. Uber Eats and DoorDash sit in the first viewport in their own brand colours, so the tap target is recognisable before it is read. The phone number is a real tel: link. The menu is one scroll down.

Constraints

  • The transaction belongs to somebody else. Ordering runs through Uber Eats and DoorDash, so the site can carry a visitor to the door and no further.
  • A takeaway's opening hours are the most-asked question and the most frequently wrong piece of information on any local business site.
  • Four locales, matching how Griffith actually speaks, on the same small business budget.
  • No analytics were kept, so nothing here claims an effect on orders.

The page knows whether the kitchen is open

Opening hours are computed at view time, so the hero says "Closed · opens 11am" rather than making the visitor work out today’s hours from a table. It removes the most common reason for a wasted phone call.

The menu keeps itself current

The menu is the other thing that goes stale. A Playwright scraper runs every week and syncs all 102 dishes from the delivery platform into the site's Keystatic content, so the owners never retype a dish or a price. Accessibility tests gate every page in both the light and dark themes before it ships, and the site is hosted on AWS Amplify.

Found the way a local business needs to be found

Restaurant structured data carries the address, cuisine, hours and ordering options, so the listing can appear as a business rather than a link. The site ships in English, Punjabi, Hindi and Italian with hreflang, matching how Griffith actually speaks.

Measured

98 performance, 100 accessibility, 100 best practices and 100 SEO on desktop, with a 0.8 second largest contentful paint and no cumulative layout shift. 94 performance on mobile.

Decisions and trade-offs

Sending the highest-intent action away. The delivery buttons hand the visitor to a third party at the exact moment they are most likely to convert, and they arrive in Uber Eats' and DoorDash's brand colours rather than the site's. Both are deliberate: the tap target is recognised before it is read, and building first-party ordering for a single takeaway would cost more than the commission it saved.

Hours computed rather than tabulated. Saying "Closed · opens 11am" instead of printing a table of seven rows removes the most common reason for a wasted phone call. It also means the page is only ever as right as its schedule. A public holiday closure is a content change, not something the page can work out for itself.

Structured data before anything cosmetic. For a local business the search listing is the homepage most people see. Restaurant markup that renders the listing as a business rather than a link was worth more than anything that could have been spent on the page itself.

What I would do differently. Mobile performance is 94 against 98 on desktop, and the gap is almost entirely the two third-party ordering destinations. I took the score rather than deferring those, and I would revisit that. The visitors who matter most on a takeaway site are all on phones.

Stack

Next.js · React · TypeScript · Keystatic · Playwright · AWS Amplify · next/image · schema.org