토닥(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 기능: OpenAI GPT, Google Cloud Vision, Google Cloud Speech-to-Text, Google Cloud Text-to-Speech
- 분석: PyTorch (AutoEncoder), pandas
- 스케줄링: APScheduler
- 알림: Firebase Cloud Messaging (FCM)
- 회원가입, 로그인, 토큰 관리
- JWT 기반 인증
- 사용자 권한 관리 (경계선 지능인, 센터 관리자, 가게 관리자)
- 일정 등록, 조회, 수정, 삭제 기능
- 반복 일정 설정 (일별, 주별)
- 일정 알림 및 상태 업데이트 (시작, 완료, 연기, 미수행)
- 일괄 일정 등록 및 충돌 확인 기능
- 자립 훈련을 위한 단계별 미션 생성
- 난이도별 미션 관리 (초급, 중급, 고급)
- 미션 참가 및 진행 상태 추적
- 피드백 제공 및 통계 분석
- 호출어("토닥") 인식 시스템 통합
- 실시간 음성 명령 처리 및 TTS 응답
- 채팅 기록 저장 및 관리
- 음성 기반 챗봇 서비스
- 가게 등록 및 상세 정보 관리
- 메뉴별 맞춤형 작업 매뉴얼
- 단계별 시각적 가이드
- OCR 기능 (주방 주문서 및 메뉴 인식)
- SMS 기반 자동 지출 추적
- 예산 설정 및 사용량 분석
- 주간 지출 패턴 시각화
- 이상 소비 탐지 및 알림
- 아침 루틴 등록 및 관리
- 루틴 단계별 상태 추적
- 기상 시간 추천 및 알림
- 날씨 정보 기반 준비 시간 조정
- 개인별 활동 보고서 (일간, 주간, 월간)
- 센터별 통합 보고서
- 성취도 및 참여도 분석
- 랭킹 시스템 (미션, 생활 습관, 일정, 예산 관리 분야별)
- 일정 알림 (시작, 종료, 미리 알림)
- 미션 관련 알림
- 예산 경고 알림
- 푸시 알림 (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 (안드로이드 앱용)
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/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_keypicovoice.access.key=YOUR_PICOVOICE_ACCESS_KEY
server.address=YOUR_SERVER_ADDRESS
s3.address=YOUR_S3_ADDRESSgit clone https://your-repository-url.git
cd project-directorydocker-compose up -dcd my-react-app
npm install
npm run devcd project-ai
pip install -r requirements.txt
# 메인 API 서버 실행
python main.py
# 음성 API 서버 실행 (별도 터미널)
python voice_main.py
# 스케줄러 서비스 실행 (별도 터미널)
python scheduler_service.py# Android Studio에서 프로젝트 열기
# Gradle 동기화 후 기기 또는 에뮬레이터에서 실행GitLab CI/CD를 사용하여 자동 배포를 구성하였습니다.
git checkout BE_dev
git add .
git commit -m "Deploy backend services"
git push origin BE_devgit checkout FE_dev
git add .
git commit -m "Deploy frontend"
git push origin FE_devgit checkout AI_dev
git add .
git commit -m "Deploy AI services"
git push origin AI_dev- Swagger UI:
http://your-domain:8080/swagger-ui.html
- Swagger UI:
http://your-domain:8000/docs - ReDoc:
http://your-domain:8000/redoc
- 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: 빌드 프로세스 변경, 패키지 매니저 설정 등
- 저장소 포크 (Fork the repository)
- 새 브랜치 생성 (Create a new branch)
- 변경사항 커밋 (Commit your changes)
- 브랜치에 푸시 (Push to the branch)
- 풀 리퀘스트 생성 (Open a pull request)
이 프로젝트는 [삼성 청년 SWㆍAI 아카데미] 라이센스 하에 배포됩니다.
프로젝트 관련 문의사항은 [zzzzz955@gmail.com]으로 연락주시기 바랍니다.
**토닥(TODAK)**은 경계선 지능인의 자립과 사회 참여를 지원하는 종합 플랫폼입니다. 다양한 기술을 통해 일상생활의 어려움을 해소하고, 체계적인 지원 시스템을 제공하여 경계선 지능인들의 삶의 질 향상에 기여합니다.