- 서버:
cd server && docker-compose up -d --build - 앱:
flutter run --dart-define=KAKAO_APP_KEY=YOUR_KAKAO_JS_KEY - 통합 테스트:
flutter test test/features/integration/full_flow_test.dart -r expanded
- 메인: Node.js/Express (
server/src/) - 레거시: FastAPI (
server/app/) – 데모/참고용. 배포/실행 대상 아님
약드셔유는 안전한 의약품 순환 관리 서비스로, 가정에서 복용하지 않고 남거나 유효기간이 지나 부적절하게 폐기된 의약품으로 인한 수질 및 토양 오염을 방지하는 통합 플랫폼입니다.
- 의약품 오염: 항생제, 소염진통제, 호르몬제 등이 하수처리 시설에서 완벽히 제거되지 않아 강과 바다로 유입
- 생태계 영향: 수중 생물의 생식 기능 교란, 항생제 내성 확산, '슈퍼 박테리아' 발생 위험
- 연구 근거: Frontiers in Environmental Science (2022) 논문 "Minimizing the environmental impact of unused pharmaceuticals: Review focused on prevention"
- 통합 관리: 의약품 구매부터 복용, 폐기까지 전 과정 관리
- 스마트 알림: 복용 알림 및 폐의약품 수거 알림
- 사회적 지원: 거동이 불편한 노인, 만성질환자 등 취약 계층을 위한 찾아가는 서비스
- QR 코드 스캔: 처방전 QR코드로 자동 약물 등록
- 복용 알림: 정해진 시간에 복용 알림
- 복용 기록: 복용 이력 및 통계 관리
- 약물 캘린더: 복용 일정 시각화
- 폐기 알림: 유효기간 임박 시 자동 알림
- 수거함 찾기: GPS 기반 근처 폐의약품 수거함 안내
- 찾아가는 서비스: 거동 불편자를 위한 방문 수거 예약
- B2B 솔루션: 참여 약국용 재고 관리 시스템
- 수거 내역 관리: 폐의약품 처리 업체와의 연계 지원
- Flutter: 크로스 플랫폼 모바일 앱 개발
- Clean Architecture: 도메인, 데이터, 프레젠테이션 레이어 분리
- Riverpod: 상태 관리 및 의존성 주입
- AutoRoute: 라우팅 관리
- Node.js/Express: RESTful API 서버
- PostgreSQL: 메인 데이터베이스
- Redis: 캐싱 및 세션 관리
- Firebase: 푸시 알림 및 실시간 데이터
- 라즈베리파이: 스마트 수거함 제어 및 모니터링
- 센서: 용량, 온도, 잠금 상태 감지
- Wi-Fi/LTE: 실시간 데이터 전송
lib/
├── core/ # 핵심 기능
│ ├── constants/ # 앱 상수 (색상, 텍스트 스타일, 크기)
│ ├── theme/ # 앱 테마 설정
│ ├── errors/ # 에러 처리
│ ├── network/ # 네트워크 관련
│ └── utils/ # 유틸리티 함수
├── features/ # 기능별 모듈
│ ├── auth/ # 인증
│ ├── medication/ # 약물 관리
│ ├── disposal/ # 폐의약품 관리
│ ├── pharmacy/ # 약국 연계
│ └── profile/ # 사용자 프로필
├── shared/ # 공통 모듈
│ ├── models/ # 공통 모델
│ ├── widgets/ # 재사용 위젯
│ └── services/ # 공통 서비스
└── main.dart # 앱 진입점
- Flutter SDK 3.8.1 이상
- Dart SDK 3.8.1 이상
- Android Studio / VS Code
- iOS 개발을 위한 Xcode (macOS)
- 저장소 클론
git clone https://github.com/your-username/medi_cycle_app.git
cd medi_cycle_app- 의존성 설치
flutter pub get- 코드 생성 (Freezed, Riverpod 등)
flutter packages pub run build_runner build --delete-conflicting-outputs- 앱 실행
flutter run- 코드 생성:
flutter packages pub run build_runner watch - 코드 분석:
flutter analyze - 테스트 실행:
flutter test - 빌드:
flutter build apk(Android) /flutter build ios(iOS)
- Material Design 3: 최신 Material Design 가이드라인 준수
- 반응형 디자인: 다양한 화면 크기 지원
- 접근성: 색맹, 시각 장애인을 위한 고대비 및 음성 안내
- Primary: 환경 친화적 녹색 (#4CAF50)
- Secondary: 신뢰감 있는 파란색 (#2196F3)
- Accent: 주의를 끄는 주황색 (#FF9800)
- Eco Colors: 환경 보호를 상징하는 색상들
- Medication: 약물 정보 (이름, 용량, 복용법, 유효기간 등)
- MedicationSchedule: 복용 스케줄 (시간, 복용 여부, 기록)
- DisposalRecord: 폐의약품 기록 (종류, 수량, 처리 방법)
- Pharmacy: 약국 정보 (위치, 서비스, 연락처)
- 암호화: 민감한 의료 정보 AES-256 암호화
- 인증: 생체 인증, PIN, 패턴 잠금 지원
- 권한 관리: 최소 권한 원칙 적용
- GDPR 준수: 유럽 개인정보보호법 준수
- 필수: 약물 정보, 복용 기록, 기본 프로필
- 선택: 위치 정보 (근처 약국 찾기), 사용 통계
- 저장: 로컬 저장소 우선, 클라우드 동기화 선택적
- Unit Tests: 비즈니스 로직 단위 테스트
- Widget Tests: UI 컴포넌트 테스트
- Integration Tests: 전체 기능 통합 테스트
- E2E Tests: 사용자 시나리오 기반 테스트
# 단위 테스트
flutter test
# 특정 테스트 파일
flutter test test/medication_test.dart
# 커버리지 포함
flutter test --coverage- Google Play Store: 정식 배포
- APK 다운로드: 직접 설치 지원
- AAB: App Bundle 형식 지원
- App Store: 정식 배포
- TestFlight: 베타 테스트
- Enterprise: 기업 내부 배포
- 코드 스타일: Dart 공식 스타일 가이드 준수
- 커밋 메시지: Conventional Commits 형식 사용
- PR 템플릿: 기능 설명, 테스트 결과, 스크린샷 포함
- Fork 저장소
- 기능 브랜치 생성 (
feature/medication-management) - 코드 작성 및 테스트
- Pull Request 생성
- 코드 리뷰 및 병합
이 프로젝트는 MIT 라이선스 하에 배포됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.
- 프로젝트 관리자: [이메일]
- 기술 문의: [이메일]
- 버그 리포트: GitHub Issues
- 환경 보호 연구자들: 의약품 오염 문제 연구
- 의료진: 의약품 안전 관리 가이드라인
- 오픈소스 커뮤니티: Flutter, Dart 등 훌륭한 도구들
- 사용자들: 환경 보호를 위한 참여와 피드백
메디사이클과 함께 지구를 더 건강하게 만들어가요! 🌱💊♻️