⚠️ 현재 서버 상태: 학습 및 순수 재미를 위한 프로젝트이므로 사용자 증가 전까지 AWS EC2 t2.micro 인스턴스에서 단일 서버 + Docker MySQL로 운영 중입니다.응답 속도가 다소 느릴 수 있는 점 양해 부탁드립니다! 😅가난한 개발자에게 커피는 언제나 환영입니다!ㅎㅎ
Spring Boot + Kotlin 기반의 날씨 알림 시스템입니다. 사용자가 설정한 시간과 요일에 맞춰 Slack으로 날씨 정보를 전송합니다.
사용자는 웹 페이지에서 간편하게 날씨 알림을 설정하고, 지정된 시간에 Slack으로 날씨 정보를 받아볼 수 있습니다.
- 🔐 Slack 기반 인증: Slack Webhook URL을 통한 사용자 인증
- 📍 위치 기반 날씨: 주소 입력으로 정확한 지역 날씨 제공
- ⏰ 맞춤형 알림: 시간, 날씨 조건, 온도별 세밀한 알림 설정
- 🔄 배치 처리: Spring Batch를 활용한 자동 알림 발송
outside-weather/
├── modules/
│ ├── domain/ # 도메인 모듈
│ │ ├── user-domain/ # 사용자 도메인
│ │ └── weather-domain/ # 날씨 도메인
│ ├── infrastructure/ # 인프라 모듈
│ │ ├── slack-client/ # Slack API 클라이언트
│ │ ├── weather-client/ # 기상청 API 클라이언트
│ │ └── geocoding-client/ # 지오코딩 클라이언트
│ └── server/ # 서버 모듈
│ ├── weather-api/ # REST API 서버
│ └── weather-batch/ # 배치 처리 서버
├── docker/ # Docker 설정
├── nginx/ # Nginx 설정
└── scripts/ # 배포 스크립트
먼저 Slack에서 Incoming Webhook을 설정해야 합니다:
- Slack 워크스페이스에서 Apps → Incoming Webhooks 검색
- Add to Slack 클릭
- 알림을 받을 채널 선택
- Webhook URL 복사 (예:
https://hooks.slack.com/services/...
)
기존 사용자 로그인: 웹 페이지에 접속하면 다음과 같은 로그인 화면을 볼 수 있습니다:
기존 사용자는 이름과 이전에 받은 인증 코드로 간편하게 로그인할 수 있습니다.
- "기존 사용자 로그인" 탭 선택
- 이름과 이전에 받은 인증 코드 입력
- "로그인" 클릭
신규 사용자 등록: 신규 사용자는 "신규 사용자 등록" 탭에서 계정을 만들 수 있습니다:
새로운 계정을 만들고 Slack으로 인증 코드를 받는 화면입니다.
- "인증번호 받고 로그인" 탭 선택
- 이름과 Slack Webhook URL 입력
- "인증 코드 발급" 클릭
- Slack으로 전송된 인증 코드 확인
로그인 성공 후 메인 대시보드에서 다양한 빠른 작업을 수행할 수 있습니다:
환영 메시지와 함께 알림 관리를 위한 빠른 작업 버튼들이 표시됩니다.
- 알림 목록 보기: 현재 설정된 알림 확인
- 새 알림 추가: 새로운 날씨 알림 설정
- 알림 새로고침: 최신 알림 상태 확인
2단계에서는 상세한 알림 조건을 설정할 수 있습니다:
주소, 시간, 알림 타입 등을 세밀하게 설정하는 화면입니다.
기본 설정:
- 주소: 날씨를 확인할 지역 (예: "서울특별시 강남구 테헤란로 152")
- 알림 시간: 슬라이더로 시간 선택 (0시~23시)
- Slack Webhook URL: 알림을 받을 채널의 URL
알림 타입별 세부 설정:
-
매일 알림: 매일 지정된 시간에 날씨 정보 전송
- 기본적인 일일 날씨 브리핑 제공
- 온도, 강수확률, 날씨 상태 포함
-
특정 날씨 조건: 원하는 날씨 조건에만 알림 발송
- 예시: "비, 눈, 흐림, 천둥번개"
- 쉼표로 구분하여 여러 조건 설정 가능
- 우산이 필요한 날씨나 특별한 날씨에만 알림 받고 싶을 때 유용
-
특정 온도 조건: 설정한 온도 이하일 때만 알림
- 예시: 5도 이하일 때 알림
- 추위 주의보나 동파 방지를 위한 알림에 활용
- 임계값 온도는 -50°C ~ 60°C 범위에서 설정 가능
시간 설정 특징:
- 슬라이더 인터페이스로 직관적인 시간 선택
- 0시부터 23시까지 1시간 단위로 설정
- 실시간으로 변경되는 시간 표시 (예: 07:00)
3단계에서는 생성된 모든 알림을 관리할 수 있습니다:
설정된 알림들을 카드 형태로 보여주며, 각각을 개별적으로 관리할 수 있는 화면입니다.
설정된 알림을 확인하고 관리할 수 있습니다:
- 활성화/비활성화: 알림을 일시적으로 켜고 끌 수 있음
- 삭제: 불필요한 알림 설정 제거
- 새로고침: 최신 알림 상태 확인
각 알림 카드는 다음 정보를 표시합니다:
- 📍 주소: 설정된 지역 정보
- ⏰ 알림 시간: 매일 알림을 받을 시간
- ⚙️ 알림 타입: 매일/날씨 조건/온도 조건
- 🌤️ 세부 조건: 날씨 유형 또는 온도 임계값
- 🔄 상태 표시: 활성화/비활성화 상태를 색상으로 구분
관리 기능:
- 활성화/비활성화: 알림을 일시적으로 켜고 끌 수 있음 (여행 중이거나 일시적으로 알림이 필요 없을 때 유용)
- 삭제: 불필요한 알림 설정 완전 제거
- 새로고침: 서버에서 최신 알림 상태 다시 조회
- 출근/통학용 알림:
- 시간: 07:00 (출발 1시간 전)
- 타입: 특정 날씨 조건
- 조건: "비, 눈, 흐림"
- → 우산이나 따뜻한 옷이 필요한 날씨에만 알림 2.일반 날씨 확인:
- 시간: 06:00
- 타입: 매일 알림
- → 매일 아침 날씨 브리핑
정확한 날씨 정보를 위해 다음과 같이 입력하세요:
- ✅ 권장: "서울특별시 강남구 테헤란로 152"
- ✅ 권장: "경기도 성남시 분당구 정자일로 95"
- ❌ 비권장: "강남", "분당" (너무 광범위)
- ❌ 비권장: "서울특별시 강남구 테헤란로 152 3층" (너무 세부적)
- 개인 알림: 개인 DM 채널로 Webhook 설정
- 팀 공유: 팀 채널로 설정하여 모든 구성원이 날씨 정보 공유
- 테스트: 처음에는 개인 채널에서 테스트 후 공용 채널로 변경
This project is licensed under the MIT License - see the LICENSE file for details.
- 서비스 바로가기: https://git-tree.com/
- 기상청 API: 공공데이터포털
- VWorld API: 브이월드
- Slack API: Slack Incoming Webhooks