환율 계산기, AI로 10분 만에 직접 만들어 쓰기
무료 오픈소스 환율 API로 실시간 환율 계산기를 직접 만들었습니다. KRW, USD, EUR, JPY 등 12개 통화를 지원합니다.
2026년 5월 27일6분 읽기0 조회
?
#환율계산기#AI코딩#바이브코딩#API#뚝딱공방
✦ 라이브 데모AI 프롬프트로 생성한 결과물
위 화면은 이 포스트의 프롬프트를 AI에 입력해서 생성한 샘플입니다
AI 프롬프트 공개
## 실제 사용한 프롬프트
---
### 1단계 — 기본 구조 요청
```
Next.js 14 + TypeScript + Tailwind로 환율 계산기 컴포넌트를 만들어줘.
요구사항:
- 'use client' 컴포넌트
- 지원 통화: KRW, USD, EUR, JPY, CNY, GBP, CAD, AUD, CHF, HKD, SGD, TWD
- 금액 입력 + from 통화 선택 → to 통화 선택 + 결과
- swap 버튼
- 무료 환율 API: https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies/{base}.json
- 로드 시 KRW→USD 자동 계산
- 로딩/에러 상태 처리
- 다크모드 대응 (CSS 변수 사용)
```
---
### 2단계 — 기능 추가
```
환율 계산기에 다음을 추가해줘:
1. "마지막 업데이트: ..." 표시 + 새로고침 버튼
2. 하단에 KRW 기준 주요 4개 환율 빠른 참조 (USD, EUR, JPY, CNY)
3. 통화 선택 드롭다운에 국기 이모지 표시
4. 환율이 로딩 중일 때 결과 영역에 스피너 표시
```
---
### 3단계 — 스타일 정리
```
환율 계산기 UI를 개선해줘:
- UnitConverter 컴포넌트와 동일한 카드 스타일 적용
- 결과 영역은 brand-400 색상으로 강조
- 1 KRW = 0.000724 USD 형태의 단위 환율 요약 표시
- 빠른 참조 카드들을 2열 그리드로 배치
```
---
💡 **팁**: API URL을 정확히 알려주면 AI가 올바른 fetch 코드를 생성합니다. 응답 구조도 함께 알려주면 더 정확합니다.
왜 환율 계산기를 직접 만들었나?
해외 직구를 할 때마다 검색창에 "1달러 원화"를 입력합니다. 결과는 나오지만, 매번 새 탭이 열리고, 광고가 나오고, 스크롤을 해야 합니다.
블로그 도구함에 환율 계산기를 붙여두면 어떨까요? 바로 꺼내 쓸 수 있고, 광고도 없습니다. 실시간 환율 API도 무료로 제공되는 것이 있습니다.
라이브 데모
위의 환율 계산기를 직접 사용해보세요. 12개 주요 통화를 지원합니다.
- KRW, USD, EUR, JPY, CNY, GBP, CAD, AUD, CHF, HKD, SGD, TWD
- 페이지 로드 시 자동으로 현재 환율을 가져옵니다
- ↔ 버튼으로 통화를 바꿀 수 있습니다
- 하단에 KRW 기준 주요 환율 빠른 참조가 표시됩니다
코드 핵심 포인트
1. 무료 환율 API
fawazahmed0가 관리하는 오픈소스 환율 API를 사용합니다. 키 없이 무료로 사용할 수 있습니다.
GET https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies/{base}.json
예시 응답 (base=krw):
{
"date": "2025-05-27",
"krw": {
"usd": 0.000724,
"eur": 0.000668,
"jpy": 0.1089
}
}
2. 통화 변경 시 API 재호출
fromCurrency가 바뀔 때마다 새 API를 호출합니다. useEffect로 의존성을 연결합니다.
useEffect(() => {
fetchRates(fromCurrency)
}, [fromCurrency])
3. 숫자 포맷팅
환율에 따라 결과 자릿수가 크게 달라집니다. KRW→JPY는 정수에 가깝고, KRW→USD는 소수점 6자리가 필요합니다.
function fmt(n: number): string {
if (n >= 1000) return n.toLocaleString('ko-KR', { maximumFractionDigits: 2 })
if (n >= 1) return n.toFixed(4)
return n.toFixed(6)
}
마무리
실시간 데이터를 다루는 도구는 API 선택이 핵심입니다. 이번에는 완전 무료·무제한인 오픈소스 API를 찾는 것이 가장 어려운 부분이었고, AI가 적합한 API를 추천해줬습니다.
다음 편 예고
다음 편은 뽀모도로 타이머입니다. Web Audio API로 외부 파일 없이 소리를 내는 방법도 다룹니다.
소스 코드
'use client'
import { useState, useEffect, useCallback } from 'react'
const CURRENCIES = [
{ code: 'KRW', label: '한국 원', symbol: '₩', flag: '🇰🇷' },
{ code: 'USD', label: '미국 달러', symbol: '$', flag: '🇺🇸' },
// ... 나머지 통화
]
export function CurrencyConverter() {
const [fromCurrency, setFromCurrency] = useState('KRW')
const [toCurrency, setToCurrency] = useState('USD')
const [amount, setAmount] = useState('10000')
const [rates, setRates] = useState({})
const [isLoading, setIsLoading] = useState(false)
const fetchRates = useCallback(async (base) => {
setIsLoading(true)
try {
const url = `https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@latest/v1/currencies/${base.toLowerCase()}.json`
const res = await fetch(url)
const data = await res.json()
setRates(data[base.toLowerCase()])
} catch (e) {
console.error(e)
} finally {
setIsLoading(false)
}
}, [])
// fromCurrency 변경 시 자동 재조회
useEffect(() => {
fetchRates(fromCurrency)
}, [fromCurrency, fetchRates])
const rate = rates[toCurrency.toLowerCase()] ?? 0
const result = rate ? parseFloat(amount) * rate : 0
return (
<div>
<input
type="number"
value={amount}
onChange={e => setAmount(e.target.value)}
/>
<select value={fromCurrency} onChange={e => setFromCurrency(e.target.value)}>
{CURRENCIES.map(c => (
<option key={c.code} value={c.code}>{c.flag} {c.code}</option>
))}
</select>
<button onClick={() => { setFromCurrency(toCurrency); setToCurrency(fromCurrency) }}>
↔
</button>
<select value={toCurrency} onChange={e => setToCurrency(e.target.value)}>
{CURRENCIES.map(c => (
<option key={c.code} value={c.code}>{c.flag} {c.code}</option>
))}
</select>
<div>
{isLoading ? '로딩 중...' : result.toLocaleString()}
</div>
{/* 1 KRW = 0.000724 USD */}
<p>1 {fromCurrency} = {rate} {toCurrency}</p>
</div>
)
}2026년 5월 27일 게시