Where to eat, walk and live in Washington Heights: Dominican bakeries, late-night food, the High Bridge, film locations and the elevators that beat the hills. By a neighbor, in English y en español.
翻訳待ち
暮らしGitHub @kelanb18オンライン所有者未確認
Have you tried it? One tap is enough. No sign-in needed.
リポジトリ情報はまだ収集していません。
No updates detected yet. GitHub releases will appear here.
A curated directory of the best spots in Washington Heights, NYC (Astro static site)
翻訳待ち
Loading the full README.
Read the full README ↗A fast, static guide to Washington Heights, NYC — roughly West 155th Street to the Dyckman edge of Inwood. Restaurants, cafes, bakeries, bars, shops, services, and landmarks, plus notes on smaller areas and on people and events tied to the neighborhood. Listings, areas, and people are Markdown files. Adding one is a new file and a commit.
The site is Astro with fully static output, TypeScript, and no UI framework. A bad listing fails npm run build.
Requires Node.js 22.23.4 or newer (see .nvmrc).
npm install
npm run dev
Open the URL Astro prints (usually http://localhost:4321).
Dev shows entries marked example: true or draft: true, with a banner. The EXAMPLE places, the EXAMPLE area, and the EXAMPLE person are fiction: example.com URLs and 555 phone numbers where a listing has them. They are not real places, sections, or people.
npm run build
That runs astro check and then astro build. Output is the dist/ folder.
example: true and draft: true entries are left out of this build. Category, area, and people pages still exist so the first real file has somewhere to land.
npm run preview
Serves dist/ locally.
To preview a production build that still includes the placeholder entries (do not deploy this):
npm run build:examples
The project is deployed as a static site on Vercel.
npm run build.dist.SITE environment variable to the public origin, with no trailing slash, for Production (and Preview, if you want those URLs to match). Example: https://washingtonheightsguide.com.INCLUDE_EXAMPLES unset.No vercel.json and no adapter. Astro’s static output is the whole site. Canonical URLs, Open Graph tags, robots.txt, and the sitemap are baked in at build time, so change SITE and rebuild when the domain changes.
The default origin, when SITE is unset, is https://washingtonheightsguide.com.
The footer newsletter signup uses Buttondown's standard HTML subscription form and points to buttondown.com/washingtonheightsguide. The public username is configured in src/components/SiteFooter.astro; never put account passwords or API keys in the site.
One place, one file:
src/content/listings/<slug>.md
The filename is the slug and the URL. src/content/listings/fort-washington-cafe.md becomes /places/fort-washington-cafe/.
Filename rules:
fort-washington-cafe.mdsrc/content/listings/, not in a subfolderCopy templates/listing.md rather than inventing the shape. After the first npm run dev or npm run build, Astro writes a JSON Schema to .astro/collections/listings.schema.json. The template points at it for editor hints.
Frontmatter is YAML between --- lines. The schema is strict: an unknown key fails the build. Use true and false, not yes and no. When you set priceLevel, quote it because of the dollar signs. Omit optional keys you do not know. Do not leave them empty, and do not guess.
| Field | What to put |
|---|---|
name | Page title. Placeholder listings must contain the word EXAMPLE. A real listing must not. |
description | Search and social summary. 40–170 characters. This is not the verdict. |
category | restaurant, cafe, bakery, bar, shop, service, or landmark. Use landmark for a park, museum, or other place that is not one of the other categories. |
cuisine | Required for restaurant, cafe, bakery, and bar. What they are known for serving, such as Coffee or Dominican. Omit on shops, services, and landmarks unless it truly applies. It also becomes a tag page. |
address | Street address only. The site adds New York, NY. |
crossStreets | Nearest crossing, such as W 181st St & St. Nicholas Ave. |
lastVerified | Date you checked the address, hours, and that it was open. 2026-10-01. Not in the future. |
verdict | One-line opinion, 12–160 characters. Shown under the name. Not for sale. |
neighborhood defaults to Washington Heights when omitted. example, draft, sponsored, and pick default to false.
This is the beginning of the README. Read the rest at the original. Read the full README ↗