Fujimod
브라우저에서 카메라 펌웨어를 시험하고 Fujimod SD 부팅 파일을 만든다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗티머니 단말기 A/S 기사님이 차고지에서 수리 대상 차량을 기다리는 시간을 줄이기 위한 프로토타입. 차량번호 끝 4자리 → 종점까지 남은 정류장 수 & 예상 도착 시간(ETA)을 보여줍니다.
Next.js(App Router) · TypeScript · Tailwind CSS · Supabase · Vercel
/api/bus/search?q=1234vehicles 테이블에서 끝자리 일치 차량(노선ID, 종점순번) 조회getBusPosByRtid) 호출 → 해당 차량의 현재 구간순번(sectOrd) 추출ETA = (종점순번 - 현재순번) × 정류장당 평균시간(1.5분) 계산 → 대시보드 표시공공 API는 노선ID 기준이라 차량번호만으로는 위치를 못 찾습니다. 그래서 Supabase가
차량번호 → 노선ID매핑을 담당합니다.
npm install
supabase/schema.sql 실행routes ← supabase/routes.csv (노선 658개)vehicles ← supabase/vehicles.csv (차량 9,575대)node scripts/fill-last-seq.mjs (노선별 종점순번을 Supabase routes.last_seq 에 직접 기록)npm run dev → http://localhost:3000CSV는 사내
차량단말기버전-*.xls에서 추출한 실데이터입니다. (표준노선ID=busRouteId, 차량번호=plainNo 로 공공 API와 매칭)last_seq가 비어있는 노선은 ETA 대신 현재 위치만 표시됩니다.
| 변수 | Vercel 등록 | 설명 |
|---|---|---|
PUBLIC_DATA_API_KEY | ✅ 필수 | 공공데이터포털 버스위치 API 인증키 |
NEXT_PUBLIC_SUPABASE_URL | ✅ 필수 | Supabase 프로젝트 URL |
NEXT_PUBLIC_SUPABASE_ANON_KEY | ✅ 필수 | Supabase anon 키 |
SUPABASE_SERVICE_ROLE_KEY | 선택 | RLS 우회 읽기용 service_role 키 |
SUPABASE_DB_HOST/PORT/USER/PASSWORD | ❌ 불필요 | 로컬 스크립트(적재·last_seq) 전용. 앱 런타임 미사용 |
로컬은 .env.local, 배포는 Vercel > Project > Settings > Environment Variables 에 위 ✅ 3개만 등록하면 됩니다.
https 실패 시 http 자동 폴백).# 이미 git init + 최초 커밋은 되어 있음. 원격만 연결:
git remote add origin https://github.com/<계정>/<레포>.git
git branch -M main
git push -u origin main
⚠️ 회사 차량 데이터(
supabase/vehicles.csv,routes.csv)와.env.local은.gitignore로 푸시 제외됩니다. 데이터는 이미 Supabase에 있으니 배포엔 불필요합니다. (다른 PC에서 재적재하려면 원본.xls에서 CSV 재생성)
lib/eta.ts 의 AVG_MIN_PER_STOP (정류장당 평균 분) — 시간대/노선별로 보정 가능last_seq(종점순번)는 노선마다 다름 → 정확도를 위해 노선별 실제 정류장 수로 채워야 함