WallpaperMachine
당신이 사랑하는 배경화면, 맥에서 새롭게 만나보세요
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
SunSpot helps you find possible direct sunlight at parks, bars and
restaurants in Copenhagen, choose a time and invite friends.
Use Node 24 (nvm use; .nvmrc is included), or Node 22.13+ /
24.x / 26+ per package.json's engines:
Open localhost:3000. No API keys are required.
Invitations and the MET Norway weather cache are stored in .data/,
excluded from Git.README 전문 보기 ↗SunSpot helps you find possible direct sunlight at parks, bars and restaurants in Copenhagen, choose a time and invite friends.
Use Node 24 (nvm use; .nvmrc is included), or Node 22.13+ /
24.x / 26+ per package.json's engines:
npm ci
npm run dev
Open localhost:3000. No API keys are required.
Invitations and the MET Norway weather cache are stored in .data/,
excluded from Git.
npm test # node's built-in test runner (tests/*.test.js)
npm run lint
npm run build
npm run test:browser # requires a running app on port 3000
npm run test:solar
npm run test:events # event feed, mobile details and timeline behaviour
npm run test:map # grouping, mobile layout, worker/fallback and responsiveness
For browser tests, install Chromium with npx playwright install chromium,
or set SUNSPOT_BROWSER_PATH to an existing Chrome executable. Override
the app URL with SUNSPOT_URL=http://localhost:4174. Tests create and
cancel their own local invitations.
Use npm run build && npm start on a Node server with writable
persistent storage for invitations. SUNSPOT_DATA_DIR can select an
absolute path on that disk. Set SUNSPOT_PUBLIC_ORIGIN to the public
origin when running behind a reverse proxy so mutation-origin checks use
the correct host and scheme. The local SQLite pilot targets one server and
has a shared API request budget of 100 requests/minute per process.
Invitations are not ready for Vercel deployment. The Vercel runtime explicitly returns a 503 response for invitation APIs rather than storing them in a temporary filesystem (no persistent disk there). Map, solar analysis, events and forecasts all work fine on Vercel — a shared database is the next deployment work needed before invitations work there too.
Deployed at sunspot-sigma.vercel.app.
Building heights are often estimated, and trees, terrain and detailed roof shapes are absent. Sunny means possible direct building-unobstructed sunlight, not a cloud-free weather guarantee. Outside the building extract, or at very low sun angles, the model reports unknown. OSM hours and seating areas are approximate snapshots, not verified business availability.
This app began as a narrower Next.js/TypeScript prototype (shadows +
weather + sun-exposed benches/parks, see
docs/superpowers/) before merging in a substantially
more capable rewrite: the build-time OSM data pipeline (replacing live
Overpass calls, which were rate-limit prone), more accurate prism-based
shadow geometry, off-main-thread rendering, and the event/invite feature.
Two regressions from the original prototype (a suncalc units bug, and a
"sun below horizon" false-positive) were fixed before that merge and are
covered by tests/shadows.test.js and tests/parks.test.js.
Product and prototype documentation under docs/01–docs/17 (Swedish)
and docs/superpowers/ (English) record that history in more detail.
Code license: MIT. Geographic and weather data retain their own attribution and license.