How to contribute a ramen shop to this repo. Adding a shop is just editing content files โ no build or install is required, and CI runs the checks on every PR. This file follows the cross-agent AGENTS.md convention so it is not tied to a single tool.
This is the main way people contribute. Add one shop end to end.
- name โ shop name (Japanese is fine), e.g.
ๅๆๅฎถ. - shopId โ lowercase slug matching
^[0-9a-z\-]+$, e.g.yoshimuraya. Must be unique (not already incontent/shops.json). - photo โ path to a real image the user provides. Do not invent one.
- author โ
authorId(^[0-9a-zA-Z\-\_]+$), displayname, profileurl(^https?://.+). Reuse an existingcontent/authors/{authorId}if present. - prefecture โ optional; see step 4.
-
Check the id is free โ
{shopId}not incontent/shops.jsonandcontent/shops/{shopId}/does not exist. -
Author โ if
content/authors/{authorId}/info.jsonis missing, create it:{ "id": "{authorId}", "name": "{name}", "url": "https://github.com/{authorId}" } -
Photo โ must be under 300KB, EXIF-stripped, longest side ~800px, named
{shopId}-001.jpg(-002, โฆ for more). Use the helper (macOSsips+jpegtran):mkdir -p content/shops/{shopId} sh tools/resize.sh /path/to/original.jpg content/shops/{shopId}/{shopId}-001.jpgIt prints the final
pixelHeight/pixelWidthโ record them. Off macOS use an equivalent (ImageMagickconvert -resize 800x800 -strip, read size withidentify -format '%w %h'). -
Prefecture (optional but encouraged) โ the ้ฝ้ๅบ็ the shop is physically in (must end with ้ฝ/้/ๅบ/็). Verify the real location (search the web); do not infer from the name โ a "ๆญๅนใฉใผใกใณ" shop can be in Kanagawa, a ๅฎถ็ณป shop can be in Tokyo. For a nationwide chain or any shop whose branch you cannot pin down, omit the field entirely rather than recording a guess.
-
Write
content/shops/{shopId}/info.jsonโ field orderid,name,prefecture(if known),photos. Do not add aurlfield (it is generated at runtime).{ "id": "{shopId}", "name": "{name}", "prefecture": "{prefecture}", "photos": [ { "name": "{shopId}-001.jpg", "width": 800, "height": 600, "authorId": "{authorId}" } ] } -
Register โ append
"{shopId}"to the end of theshopIdsarray incontent/shops.json. -
(Optional) PR โ if contributing upstream, create a branch, commit only when asked, and open a PR (e.g.
gh pr create) titledadd {shopId}.
| field | rule |
|---|---|
id |
^[0-9a-z\-]+$ |
photos[].name |
^[0-9a-z\-\.]+\.(jpg|jpeg|png|gif)$ |
photos[].width / height |
numbers (the real pixel size) |
photos[].authorId |
^[0-9a-zA-Z\-\_]+$, must resolve to an author |
prefecture |
optional; if present must end with ้ฝ/้/ๅบ/็ |
- Never store a photo
url; it is generated by the API at runtime. - Keep photos under 300KB, longest side ~800px, EXIF stripped.
- Omit
prefecturewhen uncertain; never fabricate a location.
Not required โ CI runs these on every PR. If you want to verify locally (package manager is bun):
bun install # only needed for local checks
bun run test # unit + integration tests
bun run validate # validate all shop/author content