![]()
최근 기후변화로 인해 빈번해진 자연 재난과 미세먼지, 코로나 19 등 다양한 유형의 재난이 일상화됨에 따라 수많은 피해가 발생하고 있습니다. 실제로 2014년부터 2023년까지 연 평균 인명피해(사망·실종)는 43명, 재산피해는 3,980억원에 달한 것으로 나타났습니다. 매년 재난이 반복되며 국민들에게 심각한 피해를 주고 있습니다
(출처: 통계청 지표누리 e-나라지표 – 자연재난 발생)
(1) 부족한 실시간 대응 정보 및 행동 지침
![]()
재난 상황에서 시민들의 신속한 대처를 어렵게 만드는 주요 원인 중 하나는 실시간 정보의 부족과 전달 방식의 비직관성입니다. 정부나 지자체는 국민재난안전포털, 긴급재난문자 등을 통해 정보를 제공하고 있지만, 실제 재난에 직면한 시민들에게는 해당 정보가 충분하지 않거나, 활용도가 낮은 경우가 많습니다.특히 피해 지역의 위치, 규모, 이동 경로 등은 실시간으로 파악하기 어려워 시민들이 위기 상황을 정확히 인식하지 못하고, 이로 인해 적절한 판단과 대처를 하지 못하여 피해가 확대되는 경우가 지속적으로 발생하고 있습니다.
또한, 안전 정보와 행동 지침의 부족도 심각한 문제입니다. 재난 발생 시 개인의 위치를 기반으로 한 대피소 안내가 부족하고, 구체적인 행동 요령 역시 접근성이 떨어집니다. 예를 들어, 국민재난안전포털이나 문자 알림을 통해 대피 정보를 제공하더라도, 시민들은 현재 위치에서 어디로 어떻게 이동해야 하는지, 주변 피해 상황은 어떤지 명확하게 알기 어렵습니다. 이로 인해 많은 시민들이 재난 상황에서 혼란을 겪거나, 잘못된 판단으로 인해 추가 피해를 입는 사례가 반복되고 있습니다.
(2) 재난 정보 공유 플랫폼의 부재
재난 상황에서 지역 사회의 협력은 매우 중요한 요소입니다.
그러나 현재 시민들이 재난 상황에서 사용할 수 있는정보 공유 수단은 SNS나 일반 커뮤니티 앱에 한정되어 있습니다. 즉, 실시간으로재난 상황을 공유하고 협력할 수 있는 재난 중점적인 플랫폼은 부재한 상태 입니다. 이로 인해 재난 관련 정보가 분산되고, 체계적인정보 공유와 시민 주도 대응이 이루어지지 못하고 있는 실정입니다. 이러한 문제들은 재난 대응의 골든 타임을 놓치게 만들며, 시민의 생명과 안전을 위협하고 있습니다
(1) 재난 대응 정보의 ‘구체화’와 ‘맞춤화’ 필요
위 분석 결과에서 볼 수 있듯이, 현재 재난 대응 정보는 구체성과 개인 맞춤성이 부족해 시민들이 재난 상황을 정확히 인식하지 못하고, 이로 인해 적절한 판단과 대처가 이루어 지지 않아 피해가 커지는 경우가 자주 발생합니다. 또한, 재난문자의 반복성이나 필요 없는 정보가 정보 전달의 신뢰도와 활용도를 떨어뜨리는 결과로 이어지고 있습니다. 따라서, 재난 대응 정보는 사용자의 위치나 상황에 따라 구체화되고 맞춤화되어야 하며, 이를 통해 시민들이 재난 상황에서 빠르고 정확한 판단을 내릴 수 있는 기반을 마련해야 합니다
(2) 재난 중점 정보 공유 플랫폼 필요
재난은 지역적 특성이 뚜렷한 만큼, 주민 간의 실시간 정보 공유 및 협력은재난 대응의 효과를 높이는 핵심 요소입니다. 그러나 현재 재난에 특화된 전용 커뮤니티가부재하여 시민들은 뉴스나 일반 커뮤니티를 통해 분산된 정보를 간접적으로 확인해야 하며, 이 과정에서 시간이 소요되고 정보 단절이 발생하고 있습니다.또한, 정부 시스템만으로는 각 지역 현장의 긴급하고 세밀한 상황을 모두 반영하기는 어렵습니다. 그렇기에 시민이 직접 재난 상황을 공유하고, 협력할 수 있는커뮤니티 기능이 필요하며, 이는 지역 시민 간 협력을 유도하고 실시간 정보교환을 원활하게 함으로써 재난 대응의 효율성을 높일 수 있을 것 입니다.
□ 개발 목표
- 위치 기반의 실시간 재난 정보를 제공하고, 사용자 인근의 대피소 위치와 정보를 안내하여 신속한 대피 지원
- 지역 사회의 정보 공유와 협력을 강화하여 재난 대응의 효율성과 정보 신뢰성을 높이는 플랫폼 구축
□ 주요 내용
- 현재 지역의 재난정보와 주변 대피소 확인 사용자의 위치 정보를 바탕으로, 현재 지역에서 발생한 재난 정보 목록을 표시하고, 각 재난에 대한 상세정보와 대처 방법을 제공합니다. 또한 현재 위치 근처에 있는 대피소를 지도에 시각적으로 표시하며, 대피소로부터의 거리도 함께 안내합니다. 각 대피소의 상세정보 및 길찾기 안내 버튼을 통해 외부 지도 앱과 연동되어 빠르게 길을 찾을 수 있도록 지원합니다.
- 전체 재난 상황 확인 전국에서 발생 중인 재난 상황을 실시간으로 요약에 한눈에 볼 수 있도록 지도로 제공하고, 지역별로 발생한 재난의 종류, 건수 등을 리스트 형태로 확인할 수 있도록 합니다. 또한 재난과 관련된 최신 뉴스 목록을 제공하고 클릭 시 상세 페이지로 이동하여 세부 내용을 확인할 수 있습니다
- 재난 정보 공유 커뮤니티 사용자는 재난과 관련된 경험, 정보, 주의사항 등을 자유롭게 게시할 수 있으며, 원하는 지역의 게시글만 모아보거나 키워드로 글을 검색하여 필요한 정보에 빠르게 접근합니다. 댓글, 좋아요 기능으로 사용자들이 서로 소통할 수 있으며, 실시간 재난 대응에 도움이 되는 정보 공유가 활성화됩니다.
<기능 요구사항>
(1) 로그인 및 회원가입
| 기능명 | 상세 정보 |
|---|---|
| 회원가입 | 닉네임, 이메일, 비밀번호 등을 입력하여 회원가입을 할 수 있습니다. |
| 로그인 기능 | 닉네임과 비밀번호를 입력해 로그인할 수 있습니다. |
| 회원가입 시 이메일 검증 기능 | 회원가입 시 입력한 이메일로 인증 코드를 발송하여 회원가입 시 이메일을 인증합니다. |
(2) 내 지역 근처 재난 상황 대비
| 기능명 | 상세 정보 |
|---|---|
| 내 주변 대피소 확인 | 사용자의 지역 정보를 바탕으로 주변 대피소를 지도에 표시합니다. |
| 대피소 상세 정보 | 대피소의 상세 주소, 이름 등 상세 정보를 사용자에게 제공합니다. |
| 대피소 길찾기 | 선택한 대피소로 향하는 길을 지도에 표시해 안내합니다. |
| 내 주변 병원 확인 | 사용자의 지역 정보를 바탕으로 주변 병원을 지도에 표시합니다. |
| 병원 상세 정보 | 병원의 상세 주소, 이름 등 상세 정보를 사용자에게 제공합니다. |
| 병원 길찾기 | 선택한 병원 향하는 길을 지도에 표시해 안내합니다. |
| 내 주변 재난 목록 | 자신의 지역 근처에서 발생한 재난 정보를 재난별로 나누어 보여줍니다. |
| 내 주변 재난 상세 정보 | 발생한 재난 중 사용자가 선택한 재난에 대한 상세 정보를 제공합니다. |
| 특정 재난 대처 방법 | 특정 재난의 대처 방법을 설명하며, 동영상 또는 글 링크를 제공합니다. |
| 내 위치 표시 | 지도를 통해 현재 나의 위치를 확인할 수 있습니다. |
| 나와 대피소의 거리 표시 | 대피소와 현재 위치 사이의 거리를 지도에 시각적으로 표시합니다. |
| 재난 알림 | 재난 발생 시 사용자에게 즉시 알림을 전송합니다. |
| 지역별 재난 알림 필터링 | 재난 발생 시 사용자에게 전송되는 알림의 지역을 사용자가 직접 필터링 할 수 있습니다. |
| 재난별 재난 알림 필터링 | 재난 발생 시 사용자에게 전송되는 알림의 재난 유형을 사용자가 직접 필터링 할 수 있습니다. |
(3) ai 기능
| 기능명 | 상세 정보 |
|---|---|
| ai 챗봇 | 재난 전문 ai 챗봇과 이야기 할 수 있습니다. |
(4) 재난 커뮤니티
| 기능명 | 상세 정보 |
|---|---|
| 재난 관련 글 작성 | 재난에 대한 정보나 의견을 자유롭게 게시글로 작성할 수 있습니다. |
| 게시글 지역 별 필터링 | 사용자가 원하는 지역의 게시글만 모아볼 수 있도록 필터링 기능을 제공합니다. |
| 게시글 검색 기능 | 키워드를 입력하여 관련된 게시글을 검색할 수 있습니다. |
| 인기글 목록 제공 | 좋아요 수가 많은 게시글을 인기글 페이지에서 확인할 수 있습니다. |
| 게시글 상세 페이지 | 선택한 게시글의 상세 내용을 확인할 수 있습니다. |
| 게시글 좋아요 기능 | 게시글에 '좋아요'를 눌러 공감할 수 있습니다. |
| 댓글/대댓글 기능 | 게시글에 자유롭게 댓글과 대댓글을 남길 수 있습니다. |
| 댓글 좋아요 기능 | 댓글에도 '좋아요'를 남겨 공감을 표현할 수 있습니다. |
| 글 작성 시 지역 설정 기능 | 게시글 작성 시 지역을 선택하여 해당 지역 정보로 등록할 수 있습니다. |
| 게시글 수정 및 삭제 | 본인이 작성한 게시글을 수정하거나 삭제할 수 있습니다. |
| 댓글 수정 및 삭제 | 본인이 작성한 댓글을 수정하거나 삭제할 수 있습니다. |
(5) 전체 재난 상황 확인
| 기능명 | 상세 정보 |
|---|---|
| 전체 재난 정보 | 지역에 상관없이 대한민국 전역에서 발생한 재난 상황을 제공합니다. |
| 전체 재난 정보 재난 별 필터링 | 지역에 상관없이 대한민국 전역에서 발생한 재난 상황을 선택한 재난에 따라 필터링하여 제공합니다. |
| 재난 관련 뉴스 제공 | 주요 재난 관련 뉴스를 간추려 화면에 제공합니다. |
| 재난 관련 뉴스 듕영상 제공 | 주요 재난 관련 뉴스 동영상 일부를 화면에 제공합니다. |
| 재난 뉴스 상세 페이지 제공 | 선택한 재난 뉴스의 상세 내용을 볼 수 있도록 합니다. |
| 재난 별 대처 방법 | 재난 종류별 대처 방법을 분류하여 확인할 수 있도록 합니다. |
| 재난 대비 체크리스트 | 재난에 대비하여 준비해야할 물품을 체크리스트 형식으로 제공합니다. |
| 후원 기능 | 재난에 피해를 입은 주민들을 위해 후원할 수 있는 기능을 제공합니다. |
(6) 내 계정 관리
| 기능명 | 상세 정보 |
|---|---|
| 로그아웃 | 로그인된 상태에서 로그아웃할 수 있습니다. |
| 회원 탈퇴 | 자신의 계정을 영구적으로 삭제할 수 있습니다. |
| 비밀번호 변경 | 현재 비밀번호를 입력하고 새로운 비밀번호로 변경할 수 있습니다. |
| 프로필 사진 변경 | 마이페이지에서 프로필 사진을 업로드 및 변경할 수 있습니다. |
| 닉네임 변경 | 마이페이지에서 닉네임을 자유롭게 변경할 수 있습니다. |
| 작성글 확인 | 본인이 작성한 모든 게시글 목록을 확인할 수 있습니다. |
| 닉네임과 이메일 확인 | 마이페이지에서 자신의 닉네임과 이메일 주소를 확인할 수 있습니다. |
| 작성 댓글 확인 | 본인이 작성한 댓글 목록을 모아볼 수 있습니다. |
| 포인트 확인 | 앱 내에서 활동한 이력에 따라 지급된 포인트를 확인할 수 있습니다. |
<사용자 요구사항>
| 요구사항명 | 상세 설명 |
|---|---|
| 빠른 재난 정보 제공 | 재난 상황 발생 시 사용자에게 신속하게 관련 정보를 제공해야 합니다. |
| 재난 상황 시 대피 유용성 | 실제 재난 상황에서 사용자가 안전하게 대피할 수 있도록 유용한 기능을 제공해야 합니다. |
| 직관적인 UI | 지도를 기반으로 직관적이고 간결한 디자인을 제공하여, 사용자들이 현재 상황을 쉽게 이해할 수 있어야 합니다. |
| 지역 별 정보 | 사용자 위치 또는 선택한 지역 기준으로 세분화된 재난 정보를 제공해야 합니다. |
- 각 재난 사건은 유형이 다양하고 세부 정보도 상이하기 때문에, 모든 정보를 일일이 전달하는 데에는 한계가 있습니다. 이를 보완하기 위해 재난 유형별로 카테고리를 분류하여 정보를 체계적으로 전달하는 방식을 적용할 예정입니다.
- 공공데이터 API는 실시간 정보를 제공하지만, 이를 시스템에 얼마나 자주 갱신하느냐가 실시간성 확보에 핵심입니다. 이를 위해 APScheduler를 활용하여 갱신 주기를 조절하고, 사용자에게 최대한 신속한 정보를 제공할것입니다
<경쟁사>
- 안전디딤돌 ‘안전디딤돌’은 재난발생 시 또는 일상생활에서 필요한 다양한 재난 안전 정보를 제공하고 있습니다. 긴급재난문자, 재난 뉴스 및 재난신고, 민방위대피소, 병의원 등 시설물 위치, 유형별 콘텐츠 등 다양한 정보를 하나의 ‘앱’으로 서비스합니다.
- 전국 대피소 민방위 사태, 혹은 재난 사태 시 가까운 비상시설 정보를 제공합니다. 인터넷 연결이 끊기고 지도가 표시되지 않아도 GPS 기반으로 가까운 대피소 혹은 비상시설 위치 정보를 확인할 수 있습니다.
| 기능 | ResQ | 안전디딤돌 | 전국 대피소 |
|---|---|---|---|
| 사용자 정보 기록 | O | X | X |
| 현재 위치 안전 여부 안내 | O | X | X |
| 대피소/병원 위치 정보 제공 | O (사용자 위치 기반) | O (직접 검색) | O (사용자 위치 기반 대피소 정보만 제공) |
| 커뮤니티 기능 제공 | O | X | X |
| 재난 뉴스 확인 | O | O | X |
| 재난 정보 확인 | O | O | X |
| 재난 대응 챗봇 | O | X | X |
| 재난 대비 물자 체크리스트 | O | X | X |
| 후원 | O | X | X |
| 재난 알림 및 필터링 | O | O | X |
- 사용자 정보 기록 서비스
안전디딤돌 / 전국 대피소: 로그인 없이 바로 사용할 수 있어 접근성은 좋지만, 기록이 저장되지 않기 때문에 이전 정보를 다시 확인하는 기능은 제공되지 않습니다.
ResQ: 대부분 로그인 없이 사용이 가능하지만 커뮤니티 기능에서 글의 작성은 계정을 기반으로 작동하여 사용자의 기록이 안전하게 저장되며, 필요한 경우 언제든지 다시 확인할 수 있습니다. 탈퇴도 간편하게 진행할 수 있어 사용자 편의성이 높습니다.- 현재 위치 안전 알림 확인 기능
안전디딤돌 / 전국 대피소: 해당 기능은 제공하지 않습니다.
ResQ: 실시간으로 사용자의 위치를 추적하여 해당 지역의 안전 알림을 확인할 수 있습니다.- 대피소/병원 위치 정보 제공
안전디딤돌: 사용자가 원하는 지역을 직접 입력하여 검색해야 대피소/병원 정보를 확인할 수 있습니다.
전국 대피소 : 사용자의 위치를 기반으로 근처 시설 정보를 제공하지만, 시설 정료에 따라 분리해서 검색해야 합니다. 병원 정보는 확인할 수 없습니다.
ResQ: ‘대피소’ 기능을 클릭하면 사용자의 현재 위치를 기준으로 가장 가까운 시설을 지도에 색깔로 구분하여 표시합니다. 대피소 종류 또한 시각적으로 구분되며 대피소 상세 정보를 빠르게 확인할 수 있어 매우 편리합니다. 병원 기능 또한 동일합니다.- 커뮤니티 기능
안전디딤돌 / 전국 대피소: 사용자 간 소통 기능이 없어 정보 공유가 어렵습니다.
ResQ: 지역별 및 전국 단위로 사용자들이 실시간으로 소통할 수 있는 커뮤니티 기능을 제공합니다. 재난 정보를 공유할 수 있어 더욱 효과적인 대응이 가능합니다.- 재난 뉴스
안전디딤돌: 텍스트 형식으로 제목과 내용만 한 줄로 제공됩니다.
전국 대피소 : 뉴스 기능은 지원하지 않습니다.
ResQ: 전체 뉴스, 재난과 관련된 실시간 뉴스를 모아 볼 수 있도록 제공하며 AI 요약 기능을 제공합니다.- 재난 정보
전국 대피소 : 해당 기능은 제공하지 않습니다.
안전디딤돌 / ResQ: 전체 재난 정보 기록을 제공하며 유형에 따라 필터링 할 수 있습니다.- 챗봇
전국 대피소 : 해당 기능은 제공하지 않습니다.
안전디딤돌 / ResQ: 재난 시 궁금한 내용을 실시간으로 질문하고 답변받을 수 있도록 제공합니다. 정적인 정보가 아닌, 상황에 맞춘 대화형 응답 지원으로 차별화된 대응 경험을 제공합니다.- 체크리스트
안전디딤돌 / 전국 대피소: 해당 기능은 제공하지 않습니다.
ResQ: 재난 상황에 꼭 필요한 물품을 항목별로 확인하고, 체계적으로 준비할 수 있도록 도와주는 체크리스트 기능을 제공합니다.- 후원
안전디딤돌 / 전국 대피소: 해당 기능은 제공하지 않습니다.
ResQ: 재난 피해 지역을 위한 긴급 구호 및 복구 후원에 쉽게 참여할 수 있는 기능을 제공합니다.모금 현황을 투명하게 확인하고, 직접 도움을 전할 수 있습니다.- 재난 알림 및 필터링
전국 대피소 : 해당 기능은 제공하지 않습니다.
안전디딤돌 : 재난 알림 수신 지역/유형(긴급 재난, 안전 안내) 을 설정할 수 있습니다.
ResQ : 재난 알림 수신 지역/유형(화재, 지진, 폭염 등) 을 설정할 수 있습니다.
- 지역 사회 재난 대응력 강화본 앱은 사용자의 위치를 기반으로 실시간 재난 정보와 대피소 안내를 제공함으로써, 지역 주민이 신속하고 효율적으로 대응할 수 있는 환경을 조성합니다. 특히 부산대학교처럼 산불·산사태에 취약한 녹지 밀집 지역이나 인구 밀도가 높은 생활권에서 유용하게 활용될 수 있으며, 재난 발생 시 혼란을 최소화하고 생명과 재산 피해를 줄이는 데 기여합니다.
- 재난 정보 공유 커뮤니티를 통한 시민 협력앱 내 커뮤니티 기능을 통해 사용자가 재난 상황을 직접 공유하고 실시간 피드백을 주고받으며, 지역 기 반의 협력 체계와 공동 대응 문화 형성에 기여할 수 있습니다.
| 범주 | 이름 | 버전 |
|---|---|---|
| Frontend | Flutter | 3.29.3 |
| Dart | 3.7.2 | |
| Backend | FastAPI | 0.115.12 |
| Python | 3.11.9 | |
| ORM | SQLModel | 0.0.24 |
| Auth | PyJWT | 2.10.1 |
| Database | MySQL | 8.0 |
| Infra | AWS EC2 | Ubuntu 22.04 |
| Redis | 6.1.0 | |
| CI/CD | GitHub Actions | - |
| Container | Docker | 27.5.1 |
| Storage | Amazon S3 | - |
- 사용자는 로그인, 회원가입, 비회원 로그인 중 하나를 선택할 수 있습니다.
- 로그인, 회원가입은 각 버튼 클릭 시 해당 페이지로 이동합니다.
- 비회원 로그인 선택 시 지도페이지로 이동합니다.
- 사용자로부터 아이디와 비밀번호를 입력받습니다.
- 입력창에 입력 시 유효성 검사가 진행됩니다.
- 유효성 검사를 통과하지 못한 경우, 각 입력창 하단에 오류 메시지가 표시됩니다.
- 하단 링크를 통해 회원가입 또는 비회원 로그인을 선택할 수 있습니다.
- 사용자로부터 아이디, 비밀번호, 비밀번호 확인, 이메일 정보를 입력받습니다.
- 이메일 입력 시, 오른쪽의 인증 버튼을 클릭하여 이메일 인증 요청을 보냅니다.
- 이메일 인증이 완료된 후 , 인증코드 입력란이 활성화됩니다.
- 인증 성공 시 성공 메시지가 하단에 표시되고, 다음 버튼을 누르면 지도 페이지로 이동합니다.
- 사용자가 가입한 이메일 주소를 입력하고 메일 인증 버튼을 클릭합니다.
- 유효한 이메일이면 인증코드가 해당 이메일로 발송되고 다음 버튼을 누르면 인증코드 입력 화면으로 이동합니다.
- 인증 성공 시 성공 메시지가 하단에 표시되고, 새 비밀번호 설정 페이지로 이동합니다.
- 사용자로부터 새로운 비밀번호와 비밀번호 확인을 입력받습니다.
- 입력된 비밀번호는 8자 이상 조건을 만족해야하며, 유효성 검사가 진행됩니다.
- 두 필드가 일치하지 않으면 오류 메시지가 표시됩니다.
- 변경 성공 시 완료 메시지가 표시되며, 로그인 페이지로 이동합니다.
- 현재 위치 기반으로 주소를 불러오고, 지도에 표시합니다.
- 주요 카테고리 버튼(대피소, 재난정보, 병원)을 제공하여 해당 정보를 확인할 수 있습니다.
- 재난 문자 상태가 상단에 시각적으로 표시됩니다.(예: “재난 문자가 없습니다”)
- 입력창을 통해 사용자의 질문을 받으며, 챗봇이 자동 응답을 제공합니다.
- 전체글, 인기글을 모아볼 수 있습니다. 더보기 버튼을 클릭할 경우 각 카테고리의 항목들을 볼 수 있습니다.
- 각 게시글의 상세페이지에서 좋아요를 누르거나 댓글과 대댓글을 작성하여 소통할 수 있습니다.
- 하단의 연필 아이콘을 클릭하면 게시글 작성 페이지로 이동합니다.
- 사용자는 이미지 추가, 제목 입력, 지역 선택, 본문 입력을 할 수 있습니다.
- 모든 입력이 완료되면 하단의 작성 완료 버튼을 눌러 게시합니다.
- 사용자는 여러 카테고리(전체 재난 정보, 대피 방법, 체크리스트, 뉴스, 후원)를 탐색할 수 있습니다.
- 각 카테고리 클릭 시 상세 페이지로 이동합니다.
- 현재까지 발생한 모든 재난 문자를 시간순으로 확인할 수 있습니다.
- 각 항목은 시간, 메시지 내용, 지역정보로 구성되어 있습니다.
- 상단의 필터 아이콘을 클릭하면 재난 유형을 필터링할 수 있습니다.
- 특정 재난 유형(예: 화재, 지진, 태풍 등)을 필터링 할 경우 사용자가 선택한 유형에 따라 목록이 실시간 갱신됩니다.
- 재난별 행동요령을 확인할 수 있습니다.
- 상단에서 다른 재난 유형(산사태, 홍수 등)으로 쉽게 전환 가능합니다.
- 가방에 챙길 것, 집에 비치할 것 등 카테고리별로 구분되어 있으며, 각 카테고리별 진행률과 상단에 전체 진행률이 표시됩니다.
- 각 카테고리는 클릭 시 하위 항목이 펼쳐져 세부 체크리스트를 확인할 수 있습니다.
- 세부 체크리스트에서는 세부 항목을 체크할 수 있습니다.
- 별표 표시된 항목은 중요도가 높음을 의미합니다.
- 완료된 항목은 취소선과 함께 체크박스로 표현됩니다.
- 사용자 정보, 포인트, 계정 관리, 재난 문자 설정, 내가 작성한 게시글 및 댓글 확인, 로그아웃, 회원 탈퇴 등의 메뉴로 구성되어 있습니다.
- 닉네임 변경 또는 비밀번호 변경 클릭 시 각 페이지로 이동합니다.
- 사용자가 새 닉네임을 입력하고 변경하기 버튼을 클릭할 경우 마이페이지로 돌아가며 변경된 닉네임이 반영됩니다.
- 사용자로부터 현재 비밀번호와 새 비밀번호, 새 비밀번호 확인을 입력받습니다.
- 입력된 새 비밀번호는 8자 이상 조건을 만족해야하며, 세 필드에 유효성 검사가 진행됩니다.
- 각 필드가 일치하지 않으면 오류 메시지가 표시됩니다.
- 변경하기 버튼을 눌러서 변경 성공 시 완료 메시지가 표시되며, 마이 페이지로 이동합니다.
재난 문자 수신 지역을 선택할 수 있습니다.
- 광역자치단체로 항목화 되어있으며, 각 항목 클릭 시 기초 자치 단체로 구성된 하위 지역 선택 모달이 뜹니다.
- 각 모달에서 사용자가 알림을 받고자 하는 지역을 선택할 수 있습니다.
- 선택된 지역은 빨간색으로 표시되며, 한 번 더 누르면 선택 해제가 가능합니다.
- 사용자가 알림을 받고자 하는 재난 유형을 선택할 수 있습니다.
- 선택한 재난 유형은 붉은색 배경과 체크 아이콘으로 강조됩니다.
- 하단의 “알림 설정 완료” 버튼을 눌러 서버에 설정을 저장하고 이전 화면으로 돌아갑니다.
- 마이페이지에서 회원탈퇴를 클릭하면 뜨는 페이지 입니다.
- 탈퇴 시 모든 포인트가 삭제되며, 작업은 되돌릴 수 없다는 안내 문구 포함한 “정말 탈퇴하시겠습니까?”의 경고 메시지가 뜹니다.
- 두 개의 선택지 중 “예, 탈퇴하겠습니다.”를 선택할 경우 회원 탈퇴가 이루어지고 “아니오, 계속 이용하겠습니다.” 를 선택할 경우 이전 화면으로 돌아갑니다.
- 상단에는 재난 관련 영상 썸네일이 가로 슬라이드 방식으로 표시되고 하단에는 재난 관련 기사들이 수직으로 정렬 되어있습니다.
FE
project-root/
│
├── lib/
│ ├── main.dart
│ ├── routes.dart
│ ├── firebase_options.dart
│ ├── api/
│ ├── http_client.dart
│ ├── asset/
│ ├── 글자없는로고.png
│ └── pages/
│ ├── allposts_page.dart
│ ├── chatbot_page.dart
│ ├── coldwave_page.dart
│ ├── community_page.dart
│ ├── disaster_detail_page.dart
│ ├── disaster_list_page.dart
│ ├── disaster_menu_page.dart
│ ├── disaster_text_only_page.dart
│ ├── disastertype_filtering_page.dart
│ ├── earthquake_page.dart
│ ├── fire_page.dart
│ ├── firebase_page.dart
│ ├── flood_page.dart
│ ├── hotposts_page.dart
│ ├── landslide_page.dart
│ ├── login_page.dart
│ ├── map_page.dart
│ ├── password_reset_new_page.dart
│ ├── password_reset_request_page.dart
│ ├── password_reset_verify_page.dart
│ ├── region_category_page.dart
│ ├── signup_page.dart
│ ├── typhoon_page.dart
│ ├── user_page.dart
│ ├── withdrawl_page.dart
│ └── writepost_page.dart
│
├── pubspec.yaml
├── analysis_options.yaml
├── .gitignore
├── README.md4
BE
project-root/
│
├── README.md
├── .env
├── .gitignore
├── main.py
├── requirements.txt
├── Dockerfile
├── docker-compose.yml
├── .dockerignore
│
├── .github/
│ └── workflows/
│ └── deploy.yml
│
├── data/
│ └── RegionCategory.csv
│
├── secrets/
│ └── firebase_service_account.json
│
├── app/
│ ├── core/
│ │ ├── firebase.py
│ │ └── redis.py
│ ├── db/
│ │ ├── session.py
│ │ └── init_db.py
│ ├── handlers/
│ │ ├── chatbot_handler.py
│ │ ├── comment_handler.py
│ │ ├── disaster_handler.py
│ │ ├── email_handler.py
│ │ ├── fcm_handler.py
│ │ ├── like_handler.py
│ │ ├── notification_disastertype_handler.py
│ │ ├── notification_handler.py
│ │ ├── notification_region_handler.py
│ │ ├── post_handler.py
│ │ ├── shelter_handler.py
│ │ ├── sponsor_handler.py
│ │ ├── hospital_handler.py
│ │ ├── youtube_handler.py
│ │ └── user_handler.py
│ ├── models/
│ │ ├── chatbot_model.py
│ │ ├── comment_model.py
│ │ ├── disaster_model.py
│ │ ├── disaster_region_model.py
│ │ ├── like_model.py
│ │ ├── notification_model.py
│ │ ├── post_model.py
│ │ ├── region_model.py
│ │ ├── shelter_model.py
│ │ ├── sponsor_model.py
│ │ ├── hospital_model.py
│ │ ├── news_model.py
│ │ ├── youtube_model.py
│ │ └── user_model.py
│ ├── schemas/
│ │ ├── chatbot_schema.py
│ │ ├── comment_schema.py
│ │ ├── common_schema.py
│ │ ├── disaster_schema.py
│ │ ├── email_schema.py
│ │ ├── like_schema.py
│ │ ├── notification_disastertype_schema.py
│ │ ├── notification_region_schema.py
│ │ ├── notification_schema.py
│ │ ├── post_schema.py
│ │ ├── shelter_schema.py
│ │ ├── sponsor_schema.py
│ │ ├── hospital_schema.py
│ │ ├── news_schema.py
│ │ ├── youtube_schema.py
│ │ └── user_schema.py
│ ├── services/
│ │ ├── chatbot_service.py
│ │ ├── comment_service.py
│ │ ├── disaster_region_service.py
│ │ ├── disaster_service.py
│ │ ├── email_service.py
│ │ ├── fcm_service.py
│ │ ├── like_service.py
│ │ ├── notification_disastertype_service.py
│ │ ├── notification_region_service.py
│ │ ├── notification_service.py
│ │ ├── post_service.py
│ │ ├── region_service.py
│ │ ├── shelter_service.py
│ │ ├── sponsor_service.py
│ │ ├── hospital_service.py
│ │ ├── news_service.py
│ │ ├── youtube_service.py
│ │ └── user_service.py
│ └── utils/
│ ├── fcm_util.py
│ ├── jwt_util.py
│ ├── redis_util.py
│ └── s3_util.py
| 임나빈 | 박지은 | 판킨킨자우 | 황수민 |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| 팀장 백엔드 개발 |
백엔드 개발 | 프론트엔드 개발 | 프론트엔드 개발 |
| Github | Github | Github | Github |
| [email protected] | [email protected] | [email protected] | [email protected] |
- 임나빈
장기간 프로젝트의 팀장을 맡아, 팀 전반의 개발 흐름을 조율하고 진행 상황을 관리하였으며 백엔드 개발 및 배포를 담당하였습니다. 새로운 기술 스택의 도입과 실제 서비스에서 사용되는 핵심 기능들을 직접 설계하고 구현함으로써 개발자로서의 역량을 크게 향상시킬 수 있었고 자신감을 얻을 수 있었습니다. 또한, 팀원 간의 원활한 커뮤니케이션과 효율적인 역할 분담의 중요성을 깊이 체감하며, 팀장의 책임감과 리더십을 실질적으로 경험하고 성장할 수 있었습니다.
- 박지은
간단한 팀 프로젝트는 해보았지만 이렇게 긴 시간동안 여러 사람들괴 함께 팀으로서 프로젝트를 진행한 것은 처음이라 정말 새로운 경험을 했습니다. 개발자로서 한단계 성장하는 시간이었던 것 같고 특히 미리 구조를 짜고 api 명세서를 적는 등의 사전작업들을 미리 해둔 후 개발에 들어가는 것이 매우 중요함을 깨달았습니다. 어려운 기능, 어려운 코드를 배우기보다는 개발자로서 프로젝트를 진행할 때 해야하는 여러 단계들과 마음가짐을 배우는 기회였다고 생각합니다.
- 황수민
이번 활동을 통해 단순한 과제나 실습으로는 느끼기 어려운 실전 감각을 익힐 수 있었습니다. 실전 프로젝트에 대한 경험이 부족한 상태에서, 처음 접하는 프로그래밍 언어로 개발을 하기로 결정했기 때문에 초반에는 막막함을 느꼈으나 팀원들과 함께 구상한 아이디어를 하나씩 앱 화면으로 구현해 나가는 과정이 점점 재미있게 느껴졌고, 눈에 보이는 결과물이 쌓여갈수록 큰 성취감도 함께 따라왔습니다. 이 과정을 통해 기술적인 부분은 물론이고, 소통과 협업의 중요성까지도 몸소 배울 수 있었습니다. 앞으로도 이번 경험을 바탕으로 더욱 성장해 나가고 싶습니다.
- 판킨킨자우
이번 프로젝트를 통해 Flutter와 팀 협업의 중요성을 깊이 느낄 수 있었습니다. 특히 실시간 재난 정보를 제공하는 기능을 구현하면서 사용자 경험에 대해 고민해볼 수 있었고, 백엔드와의 연동을 통해 전체 시스템 구조와 데이터 흐름에 대한 이해도도 높일 수 있었습니다. 초반에는 생소한 기술 스택으로 인해 어려움도 있었지만, 팀원들과 지속적으로 소통하며 문제를 하나하나 해결해 나가는 과정이 인상 깊었습니다. 다 같이 늦은 시간까지 고생했는데, 서로 의지하고 협력했던 경험은 앞으로의 개발자 커리어에서도 큰 자산이 될 것 같습니다. 완성된 결과물을 통해 성취감을 느낄 수 있었고, 함께했던 모든 시간이 소중하게 느껴졌습니다.










