尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗A daily art guessing game. Each day Artle shows one artwork from the Harvard Art Museums collection, and you get six tries to guess the country it was made in. After each guess you see how far away the right country is and which way to go (like "1,200 km ↗ NE").
The artwork starts zoomed in and in black and white. Each wrong guess reveals more: it zooms out, then shows the color, then the date and finally the medium.
After the daily puzzle you can keep playing unlimited rounds of random
artworks. Each round has its own link, like /unlimited/2bm, so you can send
a friend the same artwork.
Built with Next.js and the Harvard Art Museums API.
sort=random:20261020), so everyone gets the same
artwork on the same day. Each artwork's creation place, like
"Europe, France, Paris", is matched to a country, and artworks that can't
be matched are skipped. A country is then picked evenly from those in the
sample, since a purely random pick would almost always be American or
western European. See src/lib/puzzle.ts./unlimited picks a random artwork and redirects to
its round page. Rounds come from 100 fixed samples of the collection, and a
round id like 2bm packs the sample number and the artwork's position in
it, so anyone with the link gets the same artwork without the link giving
it away. See src/app/unlimited/.mediumClue in src/lib/puzzle.ts).src/lib/geo.ts.src/lib/harvard.ts). The browser gets the image and the clues,
but not the answer: guesses are checked by src/app/api/guess/route.ts,
which only reveals the artwork once the game is over."use cache: remote", and there are only about
100 of them in use (today's puzzle plus the unlimited samples), so the API
is called a handful of times a day however many people play.localStorage. Unlimited rounds don't count toward stats.A new puzzle starts every day at midnight Eastern Time.
Request a free API key at https://harvardartmuseums.org/collections/api.
Copy .env.example to .env.local and paste your key after HARVARD_API_KEY=.
.env.local is ignored by git, so the key won't be committed.
Install and start the dev server:
npm install
npm run dev
Open http://localhost:3000.
Other commands:
npm test # unit tests for the game logic
npm run lint
npm run build # production build
vercel.json
tells Vercel it's a Next.js app, so the default build settings are fine.HARVARD_API_KEY with your key as the
value. Don't prefix it with NEXT_PUBLIC_: that would expose it to every
visitor's browser.After that, every push to the production branch redeploys the site, and every other branch gets its own preview URL. If you add or change an environment variable later, redeploy (Deployments → ⋯ → Redeploy) for it to take effect.
If the site shows "The gallery is closed", today's artwork couldn't be loaded. The reason will be in the project's Logs tab on Vercel.
src/
app/
page.tsx the daily puzzle
unlimited/route.ts starts a random unlimited round
unlimited/[round]/ an unlimited round's page
api/guess/route.ts checks a guess and reveals the answer at the end
components/ the game UI (client components)
lib/
harvard.ts Harvard Art Museums API client (server only)
puzzle.ts picks artworks, builds clues, round ids
countries.ts countries, their other names, and search
geo.ts distances and compass directions
dates.ts puzzle dates and numbering (Eastern Time)
game.ts saved games, stats and the share text
Artle is a fan project and isn't affiliated with the Harvard Art Museums.