"퇴근길, 이제는 안 끼고 갑니다." AI 기반 실시간 지하철 혼잡도 분석 및 덜 붐비는 경로 안내 서비스
- 덜 붐빔 경로 안내: 실시간 데이터를 바탕으로 가장 여유로운 지하철 경로 추천
- AI 혼잡도 예측: Azure OpenAI를 활용한 구간별 혼잡 레벨 분석
- 사용자 친화적 UI: Expo 기반의 직관적인 모바일 웹 인터페이스
- Frontend: React Native, Expo, Axios
- Backend: Python, FastAPI (or Flask), Pydantic
- AI & Data: Azure OpenAI, ODSAY API
- Network: ngrok (Local Tunneling)
ankkigil-fullstack/
├── frontend/ # React Native (Expo) 앱
│ └── .env # EXPO_PUBLIC_API_URL 포함
├── backend/ # Python API 서버
│ └── .env # ODSAY, AZURE 관련 키 포함
└── README.md # 현재 파일
프로젝트 실행 전, 각 폴더에 .env 파일을 생성하고 아래 내용을 입력해야 합니다.
EXPO_PUBLIC_API_URL=https://your-ngrok-url.ngrok-free.dev
ODSAY_API_KEY=your_odsay_key
AZURE_OPENAI_API_KEY=your_azure_key
AZURE_OPENAI_ENDPOINT=your_azure_endpoint
이 프로젝트는 세 개의 독립적인 터미널에서 순서대로 실행해야 합니다.
백엔드 폴더에서 API 서버를 실행합니다. (--host 0.0.0.0 설정으로 외부 기기 접속을 허용합니다.)
cd backend
python3 -m uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
로컬 서버(8000포트)를 외부에서 접속 가능한 공인 주소로 변환합니다.
ngrok http 8000
- 터미널에 뜬
Forwarding주소를 복사하여 **Frontend의.env**파일에 업데이트하세요.
프론트엔드 폴더에서 Expo를 실행합니다. 주소가 바뀌었다면 캐시 삭제(-c)가 필수입니다.
cd frontend
npx expo start -c
- Tip: 네트워크 환경에 따라 외부 사용자가 접속하기 어려운 경우
npx expo start --tunnel옵션을 사용하세요.
- 캐시 이슈:
.env의 ngrok 주소를 수정했는데도 앱에서 반영이 안 된다면 반드시npx expo start -c로 다시 켜주세요. - 서버 에러: 백엔드 실행 시
ValidationError가 발생하면.env파일에 불필요한 변수(예: EXPO_PUBLIC_API_URL)가 섞여 있지 않은지 확인하세요. - 절대 금지: 보안을 위해
.env파일은 절대 GitHub에 Push하지 마세요. (이미.gitignore에 추가 완료)