CleanFrame
A personal home screen for Samsung The Frame. A starting point to fork and adapt.
약속 시각만 넣으면 몇 시에 집을 나서 어떤 열차를 타야 하는지 알려주는 약속 출발 플래너
Translation pending
LifestyleTypeScript · PythonGitHub @leesoyeon102-sudoOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
계획형 인간의 약속 외출기
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
약속 시각만 넣으면 몇 시에 집을 나서 어떤 열차를 타야 하는지 알려주는 약속 출발 플래너. 기획은 PRD.md 참고.Read the full README ↗
약속 시각만 넣으면 몇 시에 집을 나서 어떤 열차를 타야 하는지 알려주는 약속 출발 플래너. 기획은 PRD.md 참고.
npm install
npm run dev # http://localhost:3000 (모바일 390px 기준 화면)
app/
layout.tsx 390px 앱 셸 + 하단 탭
page.tsx 홈: 입력 → 출발 안내 타임라인 → 도착 기록
history/page.tsx 경로 내역 (이용 횟수)
roadmap/page.tsx 나의 로드맵
components/ Planner, Timeline, StationPicker, Stepper, RoadmapMap, TabBar, Header
lib/
planner.ts 도착 시각 역산 (경로 탐색 + 시간표 역산)
timetable.ts 열차 시간표 조회 (승차역→하차역 열차 매칭)
server/ 외부 API 호출 (서울 시간표, 도보 경로, 주소 검색)
stations.ts 데모용 노선·역 데이터
routes.ts 경로 묶기, 로드맵 집계
storage.ts localStorage 저장 (useSyncExternalStore)
npx shadcn@latest init으로 초기화했고(components.json, radix-nova), button · input · card · badge · dialog를 components/ui/에 추가했습니다.app/globals.css의 @theme에 옮겼습니다. 컴포넌트는 rounded-button(24px), rounded-card(4px), rounded-input(10px), rounded-tag(32px), rounded-nav(16px) 같은 이름으로 씁니다.rounded-*·간격 눈금은 건드리지 않았고, 앱의 강조 파랑은 shadcn의 accent와 겹쳐서 brand로 이름을 바꿨습니다./design-system 에서 컴포넌트를 variant·상태별로 한 화면에 볼 수 있습니다.app/api/*, lib/server/*):
KAKAO_REST_KEY, lib/server/kakaoPlan.ts)가 알려 주는 경로(어떤 수단을 어떤 순서로 타는지)를 앞에서부터 따라갑니다. 추천(1안)은 카카오맵 목록의 첫 번째, 2안은 그다음의 서로 다른 경로입니다. 구간 수에 제한이 없어 지하철+지하철, 지하철+버스, 버스+버스 환승이 모두 나옵니다. 시각은 우리가 도착 시각에서 거꾸로 계산합니다(지하철은 서울교통공사 시간표, 시간표가 없는 노선은 소요 시간 기준 예상, 버스는 배차 간격·현재 도착 정보). 카카오 호출이 실패하거나 경로가 없으면 아래의 기존 계산(자체 노선도·버스 데이터)으로 대신하고, KAKAO_ROUTING=off로 끌 수 있습니다. 카카오는 출발 시각을 받지 않아 항상 "지금" 기준 경로를 줍니다.KAKAO_REST_KEY 필요). 키가 없거나 호출이 실패하면 OpenStreetMap Nominatim으로 대신 찾습니다. 검색어에 "근처·주변"이 있으면 기준 좌표(출발지·도착지) 반경 5km 안에서 가까운 순으로 찾습니다.SEOUL_SUBWAY_KEY).lib/data/bus.json에 저장합니다. 정류장·노선·경유 순서·구간 소요 시간·배차 간격·첫차/막차가 들어 있습니다.
python3 scripts/bus/seoul.py — 서울 노선(경기 노선 포함)과 경유 정류소 (공공데이터포털 DATA_GO_KR_KEY)python3 scripts/bus/gg_stops.py — 경기 정류소·경유 정류소 (경기데이터드림 GG_DATA_KEY)python3 scripts/bus/gg_info.py — 경기 노선별 배차 간격·첫차/막차. 일일 호출 한도에 걸리면 멈추고, 다시 실행하면 이어받습니다.python3 scripts/bus/build.py — 위를 합쳐 lib/data/bus.json 생성getStationByUid, 경기 getBusArrivalItemv2)를 조회해 이후 버스를 간격으로 이어 붙여 예상하고, 3분 여유를 두고 안내합니다. 화면에는 실시간이라고 표시하지 않습니다. 그 밖(내일, 2시간 이상 뒤, 도착 정보 없음)은 배차 간격 기준 예상이며, 약속 1~2시간 전에 다시 검색해 달라는 안내를 함께 보여 줍니다.http://IP:3000으로 접속하면 위치 허용이 막히니 주소 검색으로 등록하세요.scripts/build-metro.py로 가공해 lib/data/metro.json에 담았습니다.
SearchSTNTimeTableByIDService)로 실제 열차를 찾아 계산합니다. 평일·토·일 시간표를 날짜에 맞춰 쓰고, 공휴일은 구분하지 않습니다.
.env.local에 SEOUL_SUBWAY_KEY=인증키가 필요합니다. 없으면 모든 노선을 예상으로 계산합니다..cache/seoul-timetable에 7일간 저장해 호출 수를 줄입니다.python3 scripts/build-station-codes.py로 lib/data/stationcodes.json을 다시 만듭니다.