카메라·웨어러블 없는 노인 안전 모니터링 시스템
WiFi 신호(CSI)로 낙상·호흡 이상·무활동을 감지하고,
AI 에이전트가 음성 확인부터 119 신고까지 자동으로 대응합니다.
ESP32-C6 × 3 AI 서버 (FastAPI) NotiFi-Server (이 레포) 보호자 앱
───────────── → ────────────────── → ────────────────────── → ─────────────
WiFi CSI 수집 신호처리 · 모델 판정 이벤트 저장 · 에스컬레이션 상태 대시보드
낙상 / 호흡 / 무활동 FCM 알림 · 119 자동신고 응급 알림 수신
| 영역 | 기술 |
|---|---|
| Backend | Spring Boot 4.1.0, Java 21, JPA/Hibernate |
| Database | PostgreSQL 15, Redis 7 |
| 인증 | JWT (앱), API Key (AI 서버 간) |
| 알림 | Firebase Cloud Messaging (FCM) |
| 인프라 | Docker, GitHub Actions, AWS |
# 1. 환경 변수 설정
cp .env.example .env
# 2. 전체 실행 (앱 + DB + Redis)
docker compose up --build
# 또는 인프라만 띄우고 IntelliJ / gradlew 로 앱 실행
docker compose up -d postgres redis
./gradlew bootRun.env 는 세 방법 모두에서 읽힙니다 — compose 는 env_file, 나머지는
application.yaml 의 spring.config.import 를 통해서입니다.
IntelliJ 로 실행할 때는 실행 구성의 Working directory 가 프로젝트 루트여야 합니다. import 경로가
file:./.env상대 경로라 프로세스 작업 디렉터리를 기준으로 찾습니다. 못 찾아도 에러 없이 기본값으로 떨어지므로,.env를 고쳤는데 반영이 안 되거나password authentication failed가 나면 이 설정부터 확인하세요../gradlew bootRun은 Gradle 이 작업 디렉터리를 프로젝트 루트로 잡아 주므로 그대로 동작합니다.
GET http://localhost:8080/actuator/health → {"status":"UP"} 확인
src/main/java/com/notifi/server/
├── domain/ # 도메인별 Entity · Repository · Service · Controller
└── global/ # 공통 응답 · 예외처리 · 인증 · 설정
경기대학교 컴퓨터공학부 · 팀 피우다(Bloom) · 2026