Skip to content

jhrchicken/doctorview-app

Repository files navigation


지역 기반 의료 서비스 매칭 플랫폼

지금 바로 닥터뷰를 시작해보세요!
모바일 앱 설치하기 »

목차
  1. 프로젝트 정보
  2. 사용 가이드
  3. 기술 스택
  4. 화면 구성
  5. 주요 기능
  6. 아키텍처
  7. 기타

01. 프로젝트 정보

프로젝트 개요

닥터뷰는 지역 기반 의료 서비스 매칭 플랫폼입니다.

닥터뷰는 병원 정보의 부족, 만족스러운 의료진 선택의 어려움, 긴급 상황에서 병원 찾기의 불편함, 번거로운 예약 과정 등 환자들이 겪는 문제를 해결하고자 하는 의도에서부터 출발하였습니다. 닥터뷰는 다양한 검색 방식과 조건을 통해 개인에게 적합한 병원을 찾고 예약할 수 있는 서비스를 제공합니다. 병원 방문 전후에는 채팅 기능을 통해 병원과 소통할 수 있으며, 게시판을 통해 건강 정보를 공유하는 커뮤니티를 형성하여 기존의 의료 시스템에 새로운 알고리즘을 도입합니다.

닥터뷰는 웹과 모바일 앱을 모두 지원합니다. 닥터뷰 웹에 대한 내용은 여기에서 확인하세요.

이 모바일 앱은 다음과 같은 기능들을 제공합니다.

  1. 다양한 검색 방식으로 검색 조건에 일치하는 병원과 의료진의 정보을 찾아 예약하고 리뷰를 남길 수 있습니다.
  2. 환자들이 병원 방문 전후에 의료진과 간편하게 소통할 수 있도록 채팅 기능을 제공합니다.
  3. 게시판을 통해 건강 정보를 공유하고 커뮤니티 내에서 자유롭게 상호작용할 수 있습니다.

이제 지역 기반 의료 시스템 매칭 플랫폼 닥터뷰를 시작해보세요!


소속 단체 및 개발 기간

  • 더조은아카데미 클라우드(AWS) 환경에서 개발하는 풀스택(프론트엔드&백엔드) 자바(JAVA)웹&앱 4기
  • 프로젝트 개발 기간: 2024.10.03 - 2024.10.13

팀원 구성 및 역할

닥터뷰 프로젝트는 모바일 앱 개발자 3명으로 구성된 팀이 개발하였습니다.

정하림 부다영 이회리
앱 개발 및 팀장 앱 개발 앱 개발

닥터뷰 프로젝트에서 정하림(@jhrchicken)의 주요 역할은 다음과 같습니다.

  • 프로젝트 설계
    • 데이터베이스 설계, 프로젝트 구조 설계
    • 요구사항 정의서 작성, 앱 기능 정의서 작성, 데이터베이스 정의서 작성, 개발 일정 작성 등 일부 개발 문서 작성

  • UI 구현
    • 홈, 네비게이션 바 등 모든 메인 관련 페이지
    • 병원 목록, 병원 상세보기, 병원 리뷰 목록, 병원 리뷰 작성, 병원 리뷰 수정 등 모든 병원 관련 페이지
    • 의사 목록, 의사 상세보기, 의사 리뷰 목록, 의사 리뷰 작성, 의사 리뷰 수정 등 모든 의사 관련 페이지
    • 게시판 목록, 게시판 작성, 게시판 수정, 게시판 상세 등 모든 게시판 관련 페이지
    • 채팅 목록, 채팅방 등 모든 게시판 관련 페이지
    • 작성한 리뷰 등 일부 마이페이지 관련 페이지

  • 기능 개발
    • 병원 키워드로 검색, 병원 목록 표시, 병원 진료중 여부 표시 등 모든 병원 찾기 기능
    • 병원 기본정보와 추가정보 표시, 병원에 소속된 의료진 정보 표시, 병원 찜 등 모든 병원 상세정보 확인 기능
    • 의사 키워드로 검색, 의사 기본정보와 추가정보 표시, 의사 찜 등 모든 의사 찾기 및 상세정보 확인 기능
    • 별점과 해시태그를 통한 리뷰 작성과 수정과 삭제, 리뷰 답변 작성과 수정과 삭제, 리뷰 수정 여부 표시 등 모든 리뷰 기능
    • Firebase 연동, 채팅 목록, 채팅방, 읽음 여부 표시, 안읽은 메세지 개수 표시, 채팅 날짜와 시간 표시 등 모든 채팅 기능
    • 게시글 작성과 수정과 삭제, 댓글 작성과 수정과 삭제, 게시글 좋아요 및 신고, 게시판 활동 내역 확인 등 모든 게시판 기능

다른 팀원에 대한 자세한 정보는 부다영(@budayeong)과 이회리(@leeeeeeeeeeeehr)에서 확인하세요.



02. 사용 가이드

앱 다운로드 및 설치

닥터뷰 앱 설치를 위해 다음 단계를 따릅니다.

  1. 다음 닥터뷰 APK 다운로드 링크를 클릭하여 APK 파일을 다운로드 합니다.
  2. 안드로이드 기기에서는 보안을 위해 기본적으로 외부 출처의 앱 설치가 차단되어 있습니다. 설정에서 알 수 없는 출처를 활성화하세요.
  3. 안드로이드에서 다운로드한 APK 파일을 실행하여 설치를 시작합니다.

최신 안드로이드 버전에서는 설치 경로 또는 보안 설정이 조금 다를 수 있습니다. 문제가 발생하면 APK 다운로드 경로 및 기기 설정을 다시 확인하세요.


Test ID/PW

  • 일반 사용자: harim1104 / 12341234
  • 병원 사용자: hospital1 / 12341234
  • 관리자: admin / 12341234



03. 기술 스택

분류 기술 스택
언어
프레임워크
데이터베이스
개발 환경 및 도구
라이브러리 및 API
협업



04. 화면 구성



05. 주요 기능

로그인 및 회원가입

  • 사용자 입력 정보를 조건과 실시간 비교 후 안내
  • 회원가입 시 닉네임 랜덤 추천 기능

병원 검색 및 상세정보 확인

병원 찾기

  • 지역, 병원명, 해시태그로 키워드 검색
  • GoogleMap으로 병원 위치를 지도에 표시
  • 현재 진료중 여부 표시 및 진료 중이 아닌 경우 다음 진료 시간 표시

병원 상세정보 확인

  • 진료 시간, 진료 과목, 주소, 소속된 의료진 등 병원 기본 정보 표시
  • 교통편, 주차 가능 여부, 해시태그 등 병원 추가 정보 표시
  • 병원 찜 기능
  • 별점과 해시태그를 추가하여 리뷰 작성, 수정, 삭제
  • 일반 사용자가 작성한 리뷰에 병원 사용자의 답변 작성, 수정, 삭제
  • 수정된 리뷰와 답변에 수정 여부 표시

의사 찾기

  • 의사명으로 키워드 검색

의사 상세정보 확인

  • 진료 시간, 진료 과목, 소속 병원 등 병원 기본 정보 제공
  • 의사 찜 기능
  • 별점과 해시태그를 추가하여 리뷰 작성, 수정, 삭제
  • 일반 사용자가 작성한 리뷰에 병원 사용자의 답변 작성, 수정, 삭제
  • 수정된 리뷰와 답변에 수정 여부 표시

예약

일반 사용자의 예약 기능

  • 병원의 진료 시간, 예약 가능한 시간에 맞춰 온라인 예약 가능
  • 현재 시간과 비교하여 지난 시간의 예약은 불가능
  • 일반사용자가 예약을 취소하면 취소된 시간의 예약 기능이 오픈되어 다른 사용자의 예약을 받을 수 있음

병원 사용자의 예약 기능

  • 회원가입 시 설정한 진료 시간 외 날짜별 예약시간 관리 가능

채팅

  • 일반 사용자와 병원 사용자 간의 실시간 채팅 기능
  • 대화 내용을 Firebase Realtime Database에 저장하여 채팅 이력과 이전 대화를 조회
  • 채팅 목록에서 읽지 않은 메시지 개수를 표시
  • 채팅방에서 메시지 읽음 여부 표시
  • 날짜와 시간을 적절히 표시하여 사용자의 편의 제공
  • 채팅방을 삭제 후 나가는 기능 제공

게시판

  • 게시글 작성, 수정, 삭제
  • 댓글 작성, 수정, 삭제
  • 게시글 좋아요 및 싫어요 표시
  • 내가 작성한 글, 좋아요한 글 등 게시판 활동 내역 확인



06. 아키텍처

아키텍쳐

닥터뷰 프로젝트는 프로바이더 패턴을 도입하여 효율적인 상태 관리와 데이터 공유를 구현하였습니다.

프로바이더 패턴을 이용한 이유는 다음과 같습니다.

  1. 관심사의 분리로 각 클래스가 명확한 역할만 수행하도록 설계
  2. 데이터 공유의 용이성으로 여러 페이지에서 상태를 손쉽게 관리

이를 통해 프로젝트를 API, 모델, 프로바이더, 화면 등 역할별로 폴더를 구분하여 효율적으로 관리하였습니다.


프로젝트 구조

DoctorViewApp
├── README.md
├── analysis_options.yaml
├── android
├── assets
│   ├── fonts
│   └── images
├── build
├── devtools_options.yaml
├── doctorviewapp.iml
├── ios
├── lib
│   ├── api
│   ├── body.dart
│   ├── component
│   ├── header.dart
│   ├── main.dart
│   ├── models
│   │   ├── board.dart
│   │   ├── ...
│   │   └── reserve.dart
│   ├── providers
│   │   ├── board_provider.dart 
│   │   ├── ...
│   │   └── reserve_provider.dart
│   ├── screens
│   │   ├── board
│   │   ├── ...
│   │   └── reserve
│   ├── theme
│   └── widgets
│       ├── board
│       ├── ...
│       └── reserve
├── linux
├── macos
├── pubspec.lock
├── pubspec.yaml
├── test
├── web
└── windows



07. 기타

개발 문서

정의서

디자인

기타


이슈 및 문제해결

1. 폼값 검증 시 전체폼값, 단일폼값 검증 혼용 문제

회원가입 과정에서 사용자가 각각의 폼값을 입력할 때 실시간으로 조건을 검증하고, 조건에 맞지 않을 경우 안내 문구를 출력하도록 개발했습니다. 또한, 모든 폼값의 입력 여부도 판단할 수 있도록 구현했습니다. 개발 당시 폼값을 검증하기 위해 FormState의 GlobalKey를 사용했습니다. Form 내부에 TextFormField가 포함되어 있기 때문에 FormState GlobalKey만으로 모든 폼값의 조건이 검증될 것이라고 잘못 이해했기 때문이었습니다. 실제로는 모든 입력 필드의 값이 입력되었는지 여부만 확인되었으며, 개별 필드의 조건은 검증되지 않았습니다.

검증역할을 하는 키의 문제일 것이라고 판단하여 정보를 검색한 결과, GlobalKey는 설정된 FormState만을 검증하며, Form의 자식 위젯(TextFormField)과는 직접적인 연관이 없다는 점을 알게 되었습니다.

이후 문제를 해결하기위해 다음 순서로 키를 설정했습니다.

  • 개별 필드 검증: 각 TextFormField에 적합한 GlobalKey를 설정하여, 개별 조건 검증이 가능하도록 수정.
  • 전체 폼값 검증: 부모 레벨에서 FormState의 GlobalKey를 활용하여 모든 폼값의 입력 여부를 판단.

이 과정을 통해 단일 폼값 조건 검증과 전체 폼값 입력 여부 판단을 모두 정상적으로 수행할 수 있었습니다.


2. 이슈2

이슈 및 해결방법 2


개선 사항

  • 플러터와 REST API 연동 구조 개선
    • 현재 플러터와 API를 연동하는 부분에서 조회 메서드만 구현되어 있음
    • REST API의 표준 HTTP 메서드(POST, GET, PUT, DELETE)를 사용하여 CRUD 기능을 모두 구현 필요

프로젝트에서 배운 점

1. 여정 자체가 보상이다

프로젝트를 시작할 때는 제 부족함과 실력에 대한 막연한 두려움이 있었습니다. 하지만 프로젝트를 진행하면서, 배우려는 자세와 의지만 있다면 결과에 상관없이 저를 더 단단하게 만들어주는 실력과 경험을 얻을 수 있다는 것을 깨달았습니다. 앞으로 백엔드 개발자로 나아가면서 제가 모르는 기술들은 끝없이 쏟아져 나올 것입니다. 그 사실이 두렵고 때로는 자신감을 잃기도 하겠지만 그럼에도 불구하고 차근차근 공부하다 보면 꾸준히 성장하게 될 것입니다. 결국 이 여정 자체가 저에게 가장 큰 보상이 될 것이라고 믿습니다.


2. 경험에 두려움은 필요 없다.

앱 개발 학습 과정이 웹에 비해 상대적으로 부족했고, 완성된 앱을 만들어본 경험이 없어 개발을 시작할 때 두려움이 앞섰습니다. 하지만 막상 개발을 시작하자 두려움은 사라지고 자신감이 생기기 시작했습니다. 기초를 배우고 개발을 진행하면서 모르는 부분이 많았지만 검색하고, 질문하고, 공유하며 문제를 하나씩 해결해나갔습니다. 문제를 해결할수록 자신감이 생겼고 개발속도도 점점 빨라졌습니다. 그 결과 기한 내에 앱 개발을 마무리할 수 있었습니다. 개발 전에는 부족한 지식 탓에 시작조차 두렵게 느껴졌지만 실제로 경험해보니 예상보다 어려움을 해결할 수 있는 방법은 다양했고, 그 과정에서 배운 것이 훨씬 많다는 것을 깨달았습니다. 이 경험은 앞으로 두려움 대신 배움에 대한 적극적인 자세로 프로젝트에 임할 수 있는 자신감을 심어준 소중한 경험이었습니다.


결과 및 확장성

닥터뷰 프로젝트는 기업초청 발표에서 다음과 같은 총괄 평가를 받았습니다.

심사항목 심사 세부내용 평가점수
협동심 팀원 간의 협동 17 / 20
창의성 창의성과 기획력 16.5 / 20
실용성 명확한 목표 및 비전과 실용성 17.5 / 20
개발능력 개발 프로그래밍 능력 17.5 / 20
발표 발표력 9 / 10
가산점 기타 추가 가산점 5.5 / 10
- - 82
  1. 짧은 시간 내에 많은 기능을 굉장히 안정적으로 구현하였음
  2. 최근 의료 서비스 이슈에 따라 서비스를 제공하는 기획 의도가 좋았음
  3. 실제 서비스가 가능한 수준으로 보이며, 런칭 후 사용자 피드백을 받아 개선하는 단계로 나아가기를 기대함

이러한 평가를 통해 닥터뷰 프로젝트는 안정적인 기능과 사용자 맞춤형 서비스를 제공하고 사용자 피드백을 반영해 개선할 가능성을 갖추게 되었습니다.

이를 바탕으로 닥터뷰 프로젝트는 다음과 같이 확장할 수 있습니다.

  1. 의료 사각지대 지역의 의료 서비스 데이터를 집중적으로 분석하여 지역별 의료 서비스의 격차를 줄이고 질 높은 서비스를 제공
  2. 커뮤니티 기능을 강화하여 의료 목적을 넘어 소모임 혹은 정보 공유 커뮤니티로 확장함으로써 사용자들이 웹에 오랜 시간 머무를 수 있도록 유도

닥터뷰 프로젝트는 지속적으로 사용자 피드백을 반영하여 서비스의 안정성과 편의성을 강화할 계획입니다. 이를 바탕으로 향후 더 많은 지역과 다양한 의료 분야로 서비스를 확장하여 많은 사용자에게 유용한 서비스를 제공할 것입니다.

About

지역 기반 의료 서비스 매칭 플랫폼 닥터뷰

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors