Skip to content

119helper/119helper.github.io

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

204 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿš’ 119 Helper Dashboard

์†Œ๋ฐฉ ๋ฐ ๊ตฌ๊ธ‰ ๋Œ€์›์˜ ์‹ ์†ํ•œ ์ถœ๋™๊ณผ ํ˜„์žฅ ์ƒํ™ฉ ํŒŒ์•…์„ ์ง€์›ํ•˜๋Š” ์ข…ํ•ฉ ์ •๋ณด ๋Œ€์‹œ๋ณด๋“œ์ž…๋‹ˆ๋‹ค.
๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ์™€ ๋ฐ์Šคํฌํƒ‘ ํ™˜๊ฒฝ ๋ชจ๋‘์—์„œ ์™„๋ฒฝํ•˜๊ฒŒ ๋™์ž‘ํ•˜๋Š” ๋ฐ˜์‘ํ˜• ์›น ์•ฑ์ž…๋‹ˆ๋‹ค.

๐Ÿ”— ๋ผ์ด๋ธŒ: https://119helper.github.io/


โœจ ์ฃผ์š” ๊ธฐ๋Šฅ

๐Ÿ“Š ์‹ค์‹œ๊ฐ„ ๋Œ€์‹œ๋ณด๋“œ

  • ํ˜„์žฌ ์œ„์น˜ ๊ธฐ๋ฐ˜ ๊ธฐ์˜จยท์Šต๋„ยทํ’์†ยท๊ฐ•์ˆ˜ ๋“ฑ ๊ธฐ์ƒ ํ˜„ํ™ฉ ์š”์•ฝ
  • ์‘๊ธ‰์‹ค ๊ฐ€์šฉ ๋ณ‘์ƒ ํ˜„ํ™ฉ ์‹ค์‹œ๊ฐ„ ์š”์•ฝ
  • ์†Œ๋ฐฉ์šฉ์ˆ˜์‹œ์„ค(์†Œํ™”์ „ยท๊ธ‰์ˆ˜ํƒ‘ยท์ €์ˆ˜์กฐ) ํ˜„ํ™ฉ

๐ŸŒค๏ธ ๊ธฐ์ƒ ์ •๋ณด

  • ๊ธฐ์ƒ์ฒญ API Hub ์—ฐ๋™ โ€” ์ดˆ๋‹จ๊ธฐ์‹คํ™ฉ, ๋‹จ๊ธฐ์˜ˆ๋ณด, ์ค‘๊ธฐ์˜ˆ๋ณด
  • ํ™”์žฌ ์œ„ํ—˜๋„ ์ž๋™ ํŒ์ • (์Šต๋„ยทํ’์† ๊ธฐ๋ฐ˜)
  • ์ฒด๊ฐ์˜จ๋„(์œˆ๋“œ์น ) ์ž๋™ ๊ณ„์‚ฐ

๐Ÿฅ ์‘๊ธ‰์‹ค ์‹ค์‹œ๊ฐ„ ํ˜„ํ™ฉ

  • ๊ตญ๋ฆฝ์ค‘์•™์˜๋ฃŒ์› ์‹ค์‹œ๊ฐ„ ๊ฐ€์šฉ๋ณ‘์ƒ API ์—ฐ๋™
  • ๋ณ‘์›๋ณ„ ์‘๊ธ‰๋ณ‘์ƒยท์ž…์›์‹คยท์ˆ˜์ˆ ์‹คยทCTยทMRI ํ˜„ํ™ฉ
  • ์›ํด๋ฆญ ์ „ํ™” ์—ฐ๊ฒฐ

๐Ÿ—บ๏ธ ์†Œ๋ฐฉ์šฉ์ˆ˜์‹œ์„ค ์ง€๋„

  • ์นด์นด์˜ค๋งต SDK ๊ธฐ๋ฐ˜ ์‹œ์„ค ์œ„์น˜ ์‹œ๊ฐํ™”
  • ์†Œํ™”์ „ยท๊ธ‰์ˆ˜ํƒ‘ยท์ €์ˆ˜์กฐยท๋น„์ƒ์†Œํ™”์žฅ์น˜ ๋งˆ์ปค
  • ํด๋Ÿฌ์Šคํ„ฐ๋ง + ์ปค์Šคํ…€ ์˜ค๋ฒ„๋ ˆ์ด

๐Ÿข ๊ฑด์ถ•๋ฌผ๋Œ€์žฅ ํ˜„์žฅ ๊ฒ€์ƒ‰

  • ์ฃผ์†Œ ์ž…๋ ฅ โ†’ ๊ฑด๋ฌผ ๊ตฌ์กฐยท์ธต์ˆ˜ยท์šฉ๋„ยท๋ฉด์ ยท์ค€๊ณต์ผ ์ฆ‰์‹œ ์กฐํšŒ
  • ์นด์นด์˜ค Geocoder + ๊ตญํ† ๊ตํ†ต๋ถ€ ๊ฑด์ถ•๋ฌผ๋Œ€์žฅ API

โ˜ข๏ธ ์œ ํ•ดํ™”ํ•™๋ฌผ์งˆ(Hazmat) ๋Œ€ํ”ผ ๋ฐ˜๊ฒฝ ๊ณ„์‚ฐ๊ธฐ

  • ERG ๊ธฐ๋ฐ˜ ์ดˆ๊ธฐ์ด๊ฒฉ๊ฑฐ๋ฆฌ + ํ’ํ•˜ํ–ฅ ๋ฐฉํ˜ธ๊ตฌ์—ญ ์‹œ๋ฎฌ๋ ˆ์ด์…˜
  • ์นด์นด์˜ค๋งต ์œ„ ์›ํ˜•(์ด๊ฒฉ๊ตฌ์—ญ) + ๋ถ€์ฑ„๊ผด(๋ฐฉํ˜ธ๊ตฌ์—ญ) ์‹œ๊ฐํ™”

๐Ÿงฎ ์†Œ๋ฐฉ ๊ณ„์‚ฐ๊ธฐ

  • ์ˆ˜์••(nozzle pressure) ๊ณ„์‚ฐ
  • ํ˜ธ์Šค ์ „๊ฐœ ๋งˆ์ฐฐ์†์‹ค ๊ณ„์‚ฐ
  • ๊ณต๊ธฐํ˜ธํก๊ธฐ ์ž”์—ฌ ์‹œ๊ฐ„ ๊ณ„์‚ฐ

๐Ÿ“… ๋‹ฌ๋ ฅ / ์ผ์ •

  • ๊ต๋Œ€๊ทผ๋ฌด ์ผ์ • ๊ด€๋ฆฌ
  • ๊ณตํœด์ผ API ์—ฐ๋™ (๋นจ๊ฐ„ ๋‚  ์ž๋™ ํ‘œ์‹œ)

๐Ÿ“ ๋ฉ”๋ชจ์žฅ

  • ์ธ์ˆ˜์ธ๊ณ„ ๋ฐ ํ˜„์žฅ ๋ฉ”๋ชจ (localStorage ์ €์žฅ)

๐Ÿ› ๏ธ ๊ธฐ์ˆ  ์Šคํƒ

๋ถ„๋ฅ˜ ๊ธฐ์ˆ 
Frontend React 19 + TypeScript + Vite
Styling TailwindCSS (Dark Theme)
Map Kakao Maps JavaScript SDK
API Cloudflare Worker ํ”„๋ก์‹œ + ๊ธฐ์ƒ์ฒญ API Hub, ๊ตญ๋ฆฝ์ค‘์•™์˜๋ฃŒ์›, ์—์–ด์ฝ”๋ฆฌ์•„, ๊ตญํ† ๊ตํ†ต๋ถ€
CI/CD GitHub Actions โ†’ GitHub Pages
State React Hooks (useState/useEffect)

๐Ÿš€ ๋กœ์ปฌ ๊ฐœ๋ฐœ

git clone https://github.com/119helper/119helper.github.io.git
cd 119helper.github.io
npm install
mkdir -p ../key/119-helper
cp .env.example ../key/119-helper/.env
# ../key/119-helper/.env ์— VITE_KAKAO_MAP_KEY, ํ•„์š” ์‹œ VITE_API_BASE ์„ค์ •
# ์šด์˜ ๋ฐฐํฌ์—์„œ๋Š” VITE_APP_TOKEN์„ Worker์˜ APP_ACCESS_TOKEN๊ณผ ๋™์ผํ•˜๊ฒŒ ์„ค์ •
npm run dev -- --host
# โ†’ http://localhost:5173

๊ณต๊ณต๋ฐ์ดํ„ฐ API ํ‚ค๋Š” ๋ธŒ๋ผ์šฐ์ € ๋ฒˆ๋“ค์— ๋„ฃ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Worker secret์œผ๋กœ ๋“ฑ๋กํ•˜์„ธ์š”.

cd worker
npm install
wrangler secret put KMA_API_KEY
wrangler secret put ER_API_KEY
wrangler secret put APP_ACCESS_TOKEN
npm run dev
# ๋กœ์ปฌ Worker๋ฅผ ์“ธ ๋•Œ๋Š” ํ”„๋ŸฐํŠธ env์— VITE_API_BASE=http://localhost:8787 ์„ค์ •
# ํ† ํฐ ์—†์ด ๋กœ์ปฌ ํ…Œ์ŠคํŠธํ•˜๋ ค๋ฉด wrangler.toml์˜ ENVIRONMENT๋ฅผ development๋กœ ์„ค์ •

์šด์˜ ์ฐธ๊ณ : VITE_APP_TOKEN์€ ๋ธŒ๋ผ์šฐ์ € ๋ฒˆ๋“ค์— ํฌํ•จ๋˜๋Š” ๊ณต๊ฐœ๊ฐ’์ด๋ฏ€๋กœ ์™„์ „ํ•œ ๋น„๋ฐ€ ์ธ์ฆ ์ˆ˜๋‹จ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ˜„์žฌ ๋ฌด๋ฃŒ/๋ฌด๋„๋ฉ”์ธ ์šด์˜์—์„œ๋Š” Worker์˜ Origin/ํ† ํฐ ๊ฒ€์ฆ๊ณผ rate limit binding์„ ๊ธฐ๋ณธ ๋ฐฉ์–ด์„ ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋Ÿ‰ ์Šคํฌ๋ž˜ํ•‘์ด ์‹ค์ œ ๋ฌธ์ œ๊ฐ€ ๋˜๋ฉด ๋„๋ฉ”์ธ/Cloudflare zone ๊ธฐ๋ฐ˜ WAF, Turnstile, ๋ด‡ ์ฐจ๋‹จ ์ •์ฑ…์„ ์žฌ๊ฒ€ํ† ํ•˜์„ธ์š”.

GitHub Actions ์šด์˜ ๋ฐฐํฌ์—๋Š” ๋‹ค์Œ secret๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • CLOUDFLARE_API_TOKEN, CLOUDFLARE_ACCOUNT_ID
  • NEWS_CACHE_KV_ID, NEWS_CACHE_KV_PREVIEW_ID
  • FIRE_WATER_API_KEY (๋ถ„๊ธฐ๋ณ„ ์†Œ๋ฐฉ์šฉ์ˆ˜์‹œ์„ค ์ •์  ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™”์šฉ)
  • RESTROOM_API_KEY ๋˜๋Š” ๊ธฐ์กด ๊ณต๊ณต๋ฐ์ดํ„ฐ ํฌํ„ธ ํ‚ค(FIRE_WATER_API_KEY/PUBLIC_DATA_API_KEY) (๋ถ„๊ธฐ๋ณ„ ๊ณต์ค‘ํ™”์žฅ์‹ค ์ •์  ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™”์šฉ)

์†Œ๋ฐฉ์šฉ์ˆ˜์‹œ์„ค๊ณผ ๊ณต์ค‘ํ™”์žฅ์‹ค ์ •์  ๋ฐ์ดํ„ฐ๋Š” ๊ณต๊ณต๋ฐ์ดํ„ฐ API์—์„œ ์ง์ ‘ ๊ฐฑ์‹ ํ•ฉ๋‹ˆ๋‹ค.

FIRE_WATER_API_KEY=... node scripts/sync-firewater.js
RESTROOM_API_KEY=... node scripts/sync-restrooms.js

๋ฏผ๋ฐฉ์œ„/์ง€์ง„ํ•ด์ผ ์ •์  ๋ฐ์ดํ„ฐ manifest๋Š” ์ฒดํฌ์ธ๋œ JSON์—์„œ ๊ธฐ์ค€์ผ๊ณผ ๊ฑด์ˆ˜๋ฅผ ๋ณด๊ฐ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€์ง„ํ•ด์ผ ์›๋ณธ ํŒŒ์ผ์—๋Š” ํ–‰๋ณ„ ๊ธฐ์ค€์ผ ํ•„๋“œ๊ฐ€ ์—†์–ด ๊ณต๊ณต๋ฐ์ดํ„ฐํฌํ„ธ API ์ƒ์„ธ์˜ ์ˆ˜์ •์ผ์„ API ์ˆ˜์ •์ผ๋กœ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

node scripts/update-static-data-manifest.mjs
TSUNAMI_SOURCE_DATE=2025-07-16 node scripts/update-static-data-manifest.mjs

์šด์˜ ๋ฆฌ์Šคํฌ์™€ ํ›„์† ๋ณด์™„ ๊ณผ์ œ๋Š” docs/operational_risks.md์— ์ •๋ฆฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ“„ ๋ผ์ด์„ ์Šค

์ด ํ”„๋กœ์ ํŠธ๋Š” ์†Œ๋ฐฉ ํ˜„์žฅ ํ™œ๋™ ์ง€์› ๋ชฉ์ ์œผ๋กœ ์ œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

About

๐Ÿš’ ์†Œ๋ฐฉ๊ด€ ์‹ค์‹œ๊ฐ„ ๊ด€์ œ ๋Œ€์‹œ๋ณด๋“œ - ๊ธฐ์ƒ/์‘๊ธ‰์‹ค/๊ณตํœด์ผ API ์—ฐ๋™

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors