Dev.to WebDev 🛠 Dev 👁 0 📖 9 min read

Google Maps to a live page and a printable A4 menu in 24 hours — and why a local restaurant doesn't need a $2,000 agency

A restaurant owner I know was quoted $2,000 and four weeks for a website. Not an online ordering system, not a booking engine — a page with the menu, the hours and a phone number, plus a PDF menu for the tables. She did

Google Maps to a live page and a printable A4 menu in 24 hours — and why a local restaurant doesn't need a $2,000 agency

A restaurant owner I know was quoted $2,000 and four weeks for a website. Not an online ordering system, not a booking engine — a page with the menu, the hours and a phone number, plus a PDF menu for the tables.

She did not need four weeks. What she needed was one page that answers the four questions every caller asks, and a sheet of paper on each table that does the same thing without a phone.

This post is the build note for that: three live pages, measured, with the numbers in them, and an A4 menu sheet generated from the same data. It is written for the people who get asked to build these pages — small agencies, freelancers, and owners doing it themselves — so you can check every claim by opening a link.

Three pages you can open right now

Shop (Austin, TX) What is on the page Link
Kestrel Kitchen — 24-seat restaurant 4 dishes with prices, hours, parking, 2 reviews, tap-to-call, directions /s/kestrel-kitchen
Fable Coffee — 10-seat café 4 menu items, hours, parking, 2 reviews, bean sales line /s/fable-coffee
Miller & Sons — two-chair barbershop 5 services with prices, hours, walk-in note, 3 reviews /s/miller-sons-barbershop

The shops are fictional; the pages are real and have been live since November 2026. Each one carries a "Sample page · made with MapToSite" strip at the top, which stays there — a sample page that pretends to be a client is a lie you have to keep telling.

Kestrel Kitchen on a 390 px screen: sticky Call and Directions bar at the bottom, hours badge, menu with prices

What is actually inside one of these pages

I opened Kestrel Kitchen and measured it in the browser rather than describing it from memory:

  • 44 KB of HTML, 13.6 KB over the wire (compressed). The whole page, text, styles and scripts included.
  • About 170 elements. One <img>.
  • 18.9 KB of CSS inline, 16.9 KB of JS inline. No framework, no bundler, no app.js chunk waterfall, no jQuery.
  • Two subresource requests before the fonts finish swapping: one photo and the font stylesheet.
  • Load: ~0.7 s from a cold browser in Seoul, TTFB ~0.45 s. On a 4G phone in Austin it will be faster than that.

The photo is the only heavy thing: 106 KB, served as WebP at 900 px wide, quality 70. That is a deliberate choice — one good photo converts better than six mediocre ones, and the page stays under 200 KB total.

The layout is a single 520 px column. There is no navigation, no carousel, no cookie banner, no chat bubble that follows your thumb. Everything the customer asks on the phone is above the fold or one short scroll away:

  • a live open/closed badge computed from the hours ("Closed now · opens 5 PM"), so the page is never wrong at 5:05 pm;
  • the price list as a price list — the question a Maps pin never answers;
  • parking and address in one block, because that is where the call actually goes;
  • a bottom bar pinned to the viewport with Call and Directions, present at every scroll position;
  • tel: and https://maps.google.com/?q=... links, so a thumb tap is the whole interaction.

Below the fold there is structured data (LocalBusiness JSON-LD with name, phone, address and hours) so search engines can read the same facts the visitor reads. That is the entire SEO strategy for a one-page shop site, and it costs nothing.

Fonts are loaded with media="print" and swapped to all on load — the text paints immediately in a system font and swaps when Inter arrives. It is a two-line trick that removes a render-blocking request, which is usually 300–600 ms on a phone.

None of this is clever. It is what you get when the page is written for a phone held in one hand at a shop door, instead of a design that was signed off on a 27-inch monitor.

Paper still wins at the table

A phone page cannot be read by someone whose phone is dead, or by the four people at a table who want to see the menu at once. So the same data produces a sheet of paper, and that is where most "website" quotes quietly add a design line item.

A4 menu board generated from the same shop data: menu, prices, hours, address, QR to the live page

This one was generated from the Kestrel Kitchen page: same four dishes, same prices, same hours, same address.

  • One A4 page, an 82 KB PDF with the text as vector — it stays sharp at any print size, and it prints on the office printer in the back.
  • A QR code at error-correction level H, generated from the live URL, with the four-module quiet zone the spec requires. I decoded the rendered 300 DPI file back to https://maptosite-app.pages.dev/s/kestrel-kitchen, and it still decoded after downscaling the image to a fifth of its size.
  • A 300 DPI PNG for the copy shop that only accepts images.
  • Print it in black and white and nothing disappears: no background photo, no reversed type.

What goes where is the useful part:

On the page On the paper
Menu and prices Yes — the reason people tap Yes — the reason people sit down
Open/closed Live badge, accurate to the minute Printed hours
Directions One tap Address, parking note
Reviews Two quotes Usually nothing — paper has no space for proof
QR — To the live page, for the sold-out dish and the weekly change

Paper does not need to be maintained, and the page does not need to be reprinted. Keeping one source for both is the whole trick: when the price of the roast chicken changes, you change it once and the sheet is regenerated from the same numbers.

Where the $2,000 actually goes

Not into the page. Here is a fair itemisation of a small agency quote, with the honest reasons attached:

Line Typical What it pays for
Discovery and content collection 3–6 h Calling the owner four times for the menu, retyping a photo of a printed card
Design 8–16 h A layout, two rounds of revision on the colours
Build 6–12 h A CMS install, a theme, plugins, a staging site
Hosting and licence $15–40 / mo A managed WordPress host, a page builder licence, a security plugin
Maintenance $30–100 / mo Plugin updates, backups, "the site is down" calls
Margin 30–50% Rent, insurance, the hours spent quoting jobs like this

The first and third lines are real work. The rest is a stack that has to exist only because the page was built as software that runs on a server someone has to keep alive.

A one-page static site inverts that stack:

  • there is no database to be hacked, no plugin to update, no PHP version to migrate;
  • hosting is a folder of files on a CDN. On Cloudflare Pages' free tier that is 500 builds a month and unlimited requests — real $0 for a shop that gets 300 visits a month;
  • the "site is down" call disappears, because there is nothing running to go down;
  • the edit is one field in a form, not a login, a plugin, and a page builder that broke after an update.

Over three years the difference is not a discount, it is a different order of magnitude:

Route Year 1 Year 2–3 3-year total
Agency build + managed host ($2,000 + $25/mo) $2,300 $600 $2,900
Template builder, paid plan ($16/mo) $192 $384 $576
Done-for-you one-page launch, paid once ($49) $49 $0 $49
Free builder, self-serve $0 $0 $0

The honest counterpoint: the $2,900 route buys a person who answers the phone for three years, and for a shop with online ordering, hundreds of SKUs or a menu that changes weekly, that can be worth it. For four dishes and a phone number, it is not.

What the 24 hours are spent on

"24 hours" sounds like a marketing number. It is a working day, and almost none of it is building:

Time What happens
0–1 h One form: name, phone, hours, four prices, one photo (or a Google Maps link to prefill the name, address and hours)
1–2 h Build the page, generate the A4 sheet and the QR from the same data
2–20 h Nothing — waiting for the owner to confirm the prices, usually the part that slips
20–23 h Open it on an actual phone, at the shop, next to the sign; fix the two things that are always wrong (a price, a closing time)
24 h Live on a URL, with the PDF and the print files handed over

The two things that genuinely take time are the ones no tool removes: getting the prices right, and getting one photo that is not blurry. If a shop cannot supply those, 24 hours becomes a week, and anyone promising otherwise is selling you a template with the wrong prices on it.

For the agencies and freelancers reading this

This is not an argument that your work is overpriced. It is an argument about what to sell.

  • Sell the outcome, not the build. "One link for your Instagram bio and Google listing, an A4 menu for the tables, live tomorrow" is a product. "A 5-page responsive website" is a negotiation with a shop owner who cannot see the difference.
  • Do not sell hosting you cannot support. A $25/mo managed host is a promise of uptime, updates and backups. If you are a one-person shop, a static page on a CDN deletes that promise and the risk with it.
  • The paper is the margin. Generated A4/A3 sheets, table QR cards and a window sign take minutes and are worth more to the owner than the page, because they are impossible to ignore at the counter.
  • Keep the honest line. Tell the owner the shops in your portfolio are samples if they are samples. Tell them the domain costs $10–15 a year and it is theirs, not yours. The second conversation, three months later, is where the referrals come from.

If you want to do it yourself

MapToSite builds the page in about 30 seconds from a shop name and a price list: paste a Google Maps link and it prefills name, address and hours; publish and you get /s/your-shop. The page is free with a small credit line; $6.99/mo adds a photo gallery and removes it, $13.99/mo adds your own domain. No card to start.

If you would rather not touch the tool at all, the same work is sold fixed-price and delivered in one business day as ShopLaunch: $49 for the page and a QR poster, $199 for the page plus a print-ready per-table QR menu, three posters and five social posts, $499 for a full menu of up to 60 items, a profile rewrite, 20 table cards and 30 days of small edits. One charge, nothing recurring, refunded in full if they have not started building.

If you need this as a fixed-scope job on a marketplace with escrow, or you want a shop's page built before you commit, mail the shop's details to [email protected] and I will quote the same scope and the same one-day turnaround.

What is real in this post

The three shops are fictional. The pages, the measured numbers, the A4 sheet and the QR are real, and every link in this post opens. Prices are the prices those pages show, not mockups. The hosting figures are Cloudflare Pages' published free-tier limits. The agency-side numbers are a fair range drawn from quotes I have seen, not a survey — if your quote is itemised differently, the argument still holds or fails on your numbers, and it is worth checking.

The point is not that $2,000 is a scam. It is that for a four-dish restaurant, most of that $2,000 is paying for a machine that did not need to exist.

📰 Read the original article on Dev.to WebDev

Originally published by Dev.to WebDev. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.