Skip to content

TodakService/Todak

Repository files navigation

토닥(TODAK) - 경계선 지능인 종합 지원 플랫폼

📋 프로젝트 개요

토닥(TODAK)은 경계선 지능인을 위한 통합 지원 시스템으로, 마이크로서비스 아키텍처를 기반으로 개발되었습니다. 다양한 서비스를 통해 경계선 지능인, 지원 센터, 가게 및 관계자들 간의 효율적인 소통과 관리를 지원하여 경계선 지능인의 자립과 사회 참여를 돕는 종합 플랫폼입니다.

🏗️ 시스템 아키텍처

전체 서비스 구성

클라이언트 → API Gateway (8080) → 마이크로서비스
                               ┌─→ Auth Service (8081)
                               ├─→ Relation Service (8082)
                               ├─→ Profile Service (8083)
                               ├─→ AI Service (8000)
                               ├─→ AI TTS Service (8001)
                               └─→ AI Notice Service (8002)

서비스별 설명

  • API Gateway: 모든 클라이언트 요청의 진입점 역할 (포트: 8080)
  • Auth Service: 인증 및 사용자 관리 담당 (포트: 8081)
  • Relation Service: 사용자 간 관계 및 가게 관리 담당 (포트: 8082)
  • Profile Service: 사용자 및 가게 프로필 관리 담당 (포트: 8083)
  • AI Service: 인공지능 기능 제공 (포트: 8000)
  • AI TTS Service: 음성 합성 서비스 제공 (포트: 8001)
  • AI Notice Service: 알림 서비스 제공 (포트: 8002)
  • Web Frontend: React 기반 관리자 웹 클라이언트 (포트: 80)
  • Android App: 경계선 지능인용 안드로이드 애플리케이션

🛠️ 기술 스택

백엔드

  • 프레임워크: Java 17, Spring Boot, Spring Cloud Gateway
  • AI 서비스: Python, FastAPI
  • 데이터베이스: MariaDB, MongoDB
  • 인증: JWT 기반 인증
  • 컨테이너화: Docker, Docker Compose
  • CI/CD: GitLab CI/CD
  • 클라우드 서비스: AWS S3, Firebase

프론트엔드 (관리자 웹)

  • 프레임워크: React 19
  • 언어: TypeScript
  • 스타일링: TailwindCSS 4
  • 빌드 도구: Vite 6
  • 라우팅: React Router v7
  • 차트 시각화: Chart.js, react-chartjs-2
  • HTTP 클라이언트: Axios
  • 폰트: Pretendard

안드로이드 앱

  • 언어: Kotlin
  • 최소 SDK: 24 (Android 7.0 Nougat)
  • 타겟 SDK: 35 (Android 14)
  • 아키텍처: MVVM + Repository 패턴
  • 음성 인식: Picovoice Porcupine (호출어 감지)
  • UI: Material Design

AI 서비스

  • AI 기능: OpenAI GPT, Google Cloud Vision, Google Cloud Speech-to-Text, Google Cloud Text-to-Speech
  • 분석: PyTorch (AutoEncoder), pandas
  • 스케줄링: APScheduler
  • 알림: Firebase Cloud Messaging (FCM)

🌟 주요 기능

1. 인증 및 사용자 관리

  • 회원가입, 로그인, 토큰 관리
  • JWT 기반 인증
  • 사용자 권한 관리 (경계선 지능인, 센터 관리자, 가게 관리자)

2. 일정 관리 시스템

  • 일정 등록, 조회, 수정, 삭제 기능
  • 반복 일정 설정 (일별, 주별)
  • 일정 알림 및 상태 업데이트 (시작, 완료, 연기, 미수행)
  • 일괄 일정 등록 및 충돌 확인 기능

3. 미션 시스템

  • 자립 훈련을 위한 단계별 미션 생성
  • 난이도별 미션 관리 (초급, 중급, 고급)
  • 미션 참가 및 진행 상태 추적
  • 피드백 제공 및 통계 분석

4. AI 음성 비서 ("토닥")

  • 호출어("토닥") 인식 시스템 통합
  • 실시간 음성 명령 처리 및 TTS 응답
  • 채팅 기록 저장 및 관리
  • 음성 기반 챗봇 서비스

5. 가게 관리 및 매뉴얼

  • 가게 등록 및 상세 정보 관리
  • 메뉴별 맞춤형 작업 매뉴얼
  • 단계별 시각적 가이드
  • OCR 기능 (주방 주문서 및 메뉴 인식)

6. 예산 및 소비 관리

  • SMS 기반 자동 지출 추적
  • 예산 설정 및 사용량 분석
  • 주간 지출 패턴 시각화
  • 이상 소비 탐지 및 알림

7. 루틴 관리

  • 아침 루틴 등록 및 관리
  • 루틴 단계별 상태 추적
  • 기상 시간 추천 및 알림
  • 날씨 정보 기반 준비 시간 조정

8. 보고서 및 분석

  • 개인별 활동 보고서 (일간, 주간, 월간)
  • 센터별 통합 보고서
  • 성취도 및 참여도 분석
  • 랭킹 시스템 (미션, 생활 습관, 일정, 예산 관리 분야별)

9. 알림 시스템

  • 일정 알림 (시작, 종료, 미리 알림)
  • 미션 관련 알림
  • 예산 경고 알림
  • 푸시 알림 (Firebase Cloud Messaging)

📁 프로젝트 구조

프로젝트 루트/
├── backEnd/                # 백엔드 마이크로서비스
│   ├── api-gateway/        # API Gateway 서비스
│   ├── auth-service/       # 인증 서비스
│   ├── relation-service/   # 관계 관리 서비스
│   └── profile-service/    # 프로필 관리 서비스
├── my-react-app/           # 프론트엔드 (React)
│   ├── src/
│   │   ├── api/            # API 호출 관련 코드
│   │   ├── components/     # 재사용 가능한 공통 컴포넌트
│   │   ├── pages/          # 페이지 컴포넌트
│   │   ├── types/          # TypeScript 타입 정의
│   │   └── styles/         # 전역 스타일 및 테마
├── project-ai/             # AI 서비스
│   ├── routers/            # API 엔드포인트
│   ├── services/           # 비즈니스 로직
│   ├── database/           # 데이터베이스 연결 및 관리
│   ├── train/              # AI 모델 학습
│   ├── main.py             # 메인 API 서버
│   ├── voice_main.py       # 음성 API 서버
│   └── scheduler_service.py # 스케줄러 서비스
├── android/                # 안드로이드 앱
│   └── app/src/main/java/com/example/todak/
│       ├── data/           # 데이터 레이어
│       ├── ui/             # UI 레이어
│       ├── util/           # 유틸리티 클래스
│       └── receiver/       # 브로드캐스트 리시버
├── .gitlab-ci.yml          # GitLab CI/CD 설정
├── docker-compose.yml      # Docker Compose 설정
└── README.md               # 이 파일

🚀 시작하기

사전 요구사항

  • Docker 및 Docker Compose 설치
  • GitLab 계정 및 저장소 접근 권한
  • AWS S3 계정 및 버킷 설정
  • Firebase 프로젝트 설정 (FCM 기능용)
  • Picovoice 개발자 계정 및 액세스 키 (안드로이드 앱용)
  • Node.js (프론트엔드용)
  • Android Studio (안드로이드 앱용)

환경 변수 설정

백엔드 (.env 파일)

JWT_SECRET=your_jwt_secret_key
DB_URL=jdbc:mariadb://your-db-host:3306/your-db-name
DB_USERNAME=your_db_username
DB_PASSWORD=your_db_password
AWS_ACCESS_KEY_ID=your_aws_access_key
AWS_SECRET_ACCESS_KEY=your_aws_secret_key
AWS_REGION=your_aws_region
S3_BUCKET_NAME=your_s3_bucket
API_GATEWAY_URL=http://localhost:8080/

AI 서비스 (./config/.env 파일)

MONGO_USER=username
MONGO_PASSWORD=password
MONGO_HOST=localhost:27017
MONGO_DB=borderline_iq_platform

MARIA_DB_HOST=localhost
MARIA_DB_PORT=3306
MARIA_DB_USER=username
MARIA_DB_PASSWORD=password
MARIA_DB_SCHEMA=borderline_iq_platform

OPENAI_API_KEY=openai_api_key
GOOGLE_APPLICATION_CREDENTIALS=path_to_google_credentials.json
FIREBASE_SERVICE_ACCOUNT_PATH=path_to_firebase_credentials.json

AWS_ACCESS_KEY=aws_access_key
AWS_SECRET_KEY=aws_secret_key
AWS_REGION=ap-northeast-2
S3_BUCKET_NAME=your_bucket_name

WEATHER_API_KEY=openweather_api_key

안드로이드 앱 (local.properties 파일)

picovoice.access.key=YOUR_PICOVOICE_ACCESS_KEY
server.address=YOUR_SERVER_ADDRESS
s3.address=YOUR_S3_ADDRESS

로컬 개발 환경 설정

1. 저장소 클론

git clone https://your-repository-url.git
cd project-directory

2. Docker Compose로 백엔드 서비스 실행

docker-compose up -d

3. 프론트엔드 개발 서버 실행

cd my-react-app
npm install
npm run dev

4. AI 서비스 실행

cd project-ai
pip install -r requirements.txt

# 메인 API 서버 실행
python main.py

# 음성 API 서버 실행 (별도 터미널)
python voice_main.py

# 스케줄러 서비스 실행 (별도 터미널)
python scheduler_service.py

5. 안드로이드 앱 빌드

# Android Studio에서 프로젝트 열기
# Gradle 동기화 후 기기 또는 에뮬레이터에서 실행

🚀 배포

CI/CD 파이프라인

GitLab CI/CD를 사용하여 자동 배포를 구성하였습니다.

백엔드 배포

git checkout BE_dev
git add .
git commit -m "Deploy backend services"
git push origin BE_dev

프론트엔드 배포

git checkout FE_dev
git add .
git commit -m "Deploy frontend"
git push origin FE_dev

AI 서비스 배포

git checkout AI_dev
git add .
git commit -m "Deploy AI services"
git push origin AI_dev

📚 API 문서

백엔드 API

  • Swagger UI: http://your-domain:8080/swagger-ui.html

AI 서비스 API

  • Swagger UI: http://your-domain:8000/docs
  • ReDoc: http://your-domain:8000/redoc

API 분류

  • Auth Service: 인증 관련 API
  • Relation Service: 관계 관리 API
  • Profile Service: 프로필 관리 API
  • AI Service: AI 기능 API
  • TTS Service: 음성 합성 관련 API

안드로이드 앱

  • 채팅 인터페이스: 토닥이 AI 비서와의 채팅 화면
  • 홈 화면: 예산 현황, 기상 정보, 다음 일정, 랭킹 정보
  • 미션 화면: 참여 가능한 미션 목록과 진행 상황
  • 일정 관리: 캘린더 형식의 일정 확인 및 관리
  • 보고서: 사용자의 활동 보고서

웹 관리자 화면

  • 교육생 리스트: 교육생 전체 확인 및 랭킹
  • 미션 관리: 미션 등록 및 참가자 상황 확인
  • 가게 관리: 가게 등록 및 메뉴별 매뉴얼 관리

🔒 권한 및 보안

안드로이드 앱 권한

  • RECORD_AUDIO: 음성 인식 및 호출어 감지
  • INTERNET: 서버 통신
  • FOREGROUND_SERVICE: 지속적인 호출어 감지 서비스
  • POST_NOTIFICATIONS: 알림 게시 (Android 13+)
  • RECEIVE_SMS, READ_SMS: SMS 수신 및 지출 추적
  • ACCESS_FINE_LOCATION: 위치 정보

보안 고려사항

  • 모든 민감한 정보는 환경 변수로 관리
  • API Gateway를 통한 인증 및 권한 관리
  • CORS 설정을 통한 허용된 출처 관리
  • JWT 기반 토큰 인증
  • AWS 보안 자격 증명의 안전한 관리

🔧 모니터링 및 로깅

로그 확인 방법

# 서비스별 로그 확인
docker-compose logs api-gateway
docker-compose logs auth-service
docker-compose logs relation-service
docker-compose logs profile-service
docker-compose logs ai-service
docker-compose logs ai-tts-service
docker-compose logs ai-notice-service

일반적인 문제 해결

  • 서비스 상태 확인: docker-compose ps
  • 서비스 재시작: docker-compose restart [service-name]
  • 로그 확인: docker-compose logs [service-name]

🌍 브라우저 지원

  • Chrome (최신 2개 버전)
  • Firefox (최신 2개 버전)
  • Safari (최신 2개 버전)
  • Edge (최신 2개 버전)

📝 개발 가이드라인

코드 스타일

  • Java: Google Java Style Guide 준수
  • JavaScript/React: Airbnb JavaScript Style Guide 준수
  • Python: PEP 8 준수
  • Kotlin: Kotlin Coding Conventions 준수

브랜치 전략

  • master: 안정화된 릴리스 버전
  • BE_dev: 백엔드 개발 브랜치
  • FE_dev: 프론트엔드 개발 브랜치
  • AI_dev: AI 서비스 개발 브랜치
  • feature/feature-name: 피처 브랜치

커밋 메시지 규칙

  • feat: 새로운 기능 추가
  • fix: 버그 수정
  • docs: 문서 수정
  • style: 코드 포맷팅, 세미콜론 누락 등
  • refactor: 코드 리팩토링
  • test: 테스트 코드 추가
  • chore: 빌드 프로세스 변경, 패키지 매니저 설정 등

🤝 기여하기

  1. 저장소 포크 (Fork the repository)
  2. 새 브랜치 생성 (Create a new branch)
  3. 변경사항 커밋 (Commit your changes)
  4. 브랜치에 푸시 (Push to the branch)
  5. 풀 리퀘스트 생성 (Open a pull request)

📄 라이센스

이 프로젝트는 [삼성 청년 SWㆍAI 아카데미] 라이센스 하에 배포됩니다.

📞 문의

프로젝트 관련 문의사항은 [zzzzz955@gmail.com]으로 연락주시기 바랍니다.


**토닥(TODAK)**은 경계선 지능인의 자립과 사회 참여를 지원하는 종합 플랫폼입니다. 다양한 기술을 통해 일상생활의 어려움을 해소하고, 체계적인 지원 시스템을 제공하여 경계선 지능인들의 삶의 질 향상에 기여합니다.

About

경계선 지능인과 보호자를 위한 AI 통합 플랫폼

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors