Skip to content

Hoya324/weather-alarm-system

Repository files navigation

Weather Alarm System

⚠️ 현재 서버 상태: 학습 및 순수 재미를 위한 프로젝트이므로 사용자 증가 전까지 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/                    # 배포 스크립트

📱 상세 사용 방법

1. Slack Webhook URL 준비

먼저 Slack에서 Incoming Webhook을 설정해야 합니다:

  1. Slack 워크스페이스에서 AppsIncoming Webhooks 검색
  2. Add to Slack 클릭
  3. 알림을 받을 채널 선택
  4. Webhook URL 복사 (예: https://hooks.slack.com/services/...)

2. 웹 애플리케이션 사용

🔐 회원가입 및 인증

기존 사용자 로그인: 웹 페이지에 접속하면 다음과 같은 로그인 화면을 볼 수 있습니다:

기존 사용자는 이름과 이전에 받은 인증 코드로 간편하게 로그인할 수 있습니다.

  1. "기존 사용자 로그인" 탭 선택
  2. 이름과 이전에 받은 인증 코드 입력
  3. "로그인" 클릭

신규 사용자 등록: 신규 사용자는 "신규 사용자 등록" 탭에서 계정을 만들 수 있습니다:

새로운 계정을 만들고 Slack으로 인증 코드를 받는 화면입니다.

  1. "인증번호 받고 로그인" 탭 선택
  2. 이름과 Slack Webhook URL 입력
  3. "인증 코드 발급" 클릭
  4. Slack으로 전송된 인증 코드 확인

⚡ 빠른 작업

로그인 성공 후 메인 대시보드에서 다양한 빠른 작업을 수행할 수 있습니다:

환영 메시지와 함께 알림 관리를 위한 빠른 작업 버튼들이 표시됩니다.

  • 알림 목록 보기: 현재 설정된 알림 확인
  • 새 알림 추가: 새로운 날씨 알림 설정
  • 알림 새로고침: 최신 알림 상태 확인

🔔 알림 설정 (2단계)

2단계에서는 상세한 알림 조건을 설정할 수 있습니다:

주소, 시간, 알림 타입 등을 세밀하게 설정하는 화면입니다.

기본 설정:

  • 주소: 날씨를 확인할 지역 (예: "서울특별시 강남구 테헤란로 152")
  • 알림 시간: 슬라이더로 시간 선택 (0시~23시)
  • Slack Webhook URL: 알림을 받을 채널의 URL

알림 타입별 세부 설정:

  1. 매일 알림: 매일 지정된 시간에 날씨 정보 전송

    • 기본적인 일일 날씨 브리핑 제공
    • 온도, 강수확률, 날씨 상태 포함
  2. 특정 날씨 조건: 원하는 날씨 조건에만 알림 발송

    • 예시: "비, 눈, 흐림, 천둥번개"
    • 쉼표로 구분하여 여러 조건 설정 가능
    • 우산이 필요한 날씨나 특별한 날씨에만 알림 받고 싶을 때 유용
  3. 특정 온도 조건: 설정한 온도 이하일 때만 알림

    • 예시: 5도 이하일 때 알림
    • 추위 주의보나 동파 방지를 위한 알림에 활용
    • 임계값 온도는 -50°C ~ 60°C 범위에서 설정 가능

시간 설정 특징:

  • 슬라이더 인터페이스로 직관적인 시간 선택
  • 0시부터 23시까지 1시간 단위로 설정
  • 실시간으로 변경되는 시간 표시 (예: 07:00)

📋 알림 관리 (3단계)

3단계에서는 생성된 모든 알림을 관리할 수 있습니다:

설정된 알림들을 카드 형태로 보여주며, 각각을 개별적으로 관리할 수 있는 화면입니다.

설정된 알림을 확인하고 관리할 수 있습니다:

  • 활성화/비활성화: 알림을 일시적으로 켜고 끌 수 있음
  • 삭제: 불필요한 알림 설정 제거
  • 새로고침: 최신 알림 상태 확인

각 알림 카드는 다음 정보를 표시합니다:

  • 📍 주소: 설정된 지역 정보
  • 알림 시간: 매일 알림을 받을 시간
  • ⚙️ 알림 타입: 매일/날씨 조건/온도 조건
  • 🌤️ 세부 조건: 날씨 유형 또는 온도 임계값
  • 🔄 상태 표시: 활성화/비활성화 상태를 색상으로 구분

관리 기능:

  • 활성화/비활성화: 알림을 일시적으로 켜고 끌 수 있음 (여행 중이거나 일시적으로 알림이 필요 없을 때 유용)
  • 삭제: 불필요한 알림 설정 완전 제거
  • 새로고침: 서버에서 최신 알림 상태 다시 조회

💡 사용 사례

효과적인 알림 설정 방법

  1. 출근/통학용 알림:
    • 시간: 07:00 (출발 1시간 전)
    • 타입: 특정 날씨 조건
    • 조건: "비, 눈, 흐림"
    • → 우산이나 따뜻한 옷이 필요한 날씨에만 알림 2.일반 날씨 확인:
    • 시간: 06:00
    • 타입: 매일 알림
    • → 매일 아침 날씨 브리핑

주소 입력 가이드

정확한 날씨 정보를 위해 다음과 같이 입력하세요:

  • 권장: "서울특별시 강남구 테헤란로 152"
  • 권장: "경기도 성남시 분당구 정자일로 95"
  • 비권장: "강남", "분당" (너무 광범위)
  • 비권장: "서울특별시 강남구 테헤란로 152 3층" (너무 세부적)

Slack 채널 설정 팁

  • 개인 알림: 개인 DM 채널로 Webhook 설정
  • 팀 공유: 팀 채널로 설정하여 모든 구성원이 날씨 정보 공유
  • 테스트: 처음에는 개인 채널에서 테스트 후 공용 채널로 변경

📄 라이선스

This project is licensed under the MIT License - see the LICENSE file for details.

🔗 관련 링크


Made with ❤️ by @Hoya324

About

slack으로 오늘 날씨를 받아보아요

Resources

Stars

Watchers

Forks

Packages

No packages published