타이핑은 최소로, 표현은 최대로.
사용자의 대화 패턴과 상황 맥락을 실시간 분석하여 다음 문장을 선제적으로 제안합니다.
낱말 카드 몇 번의 터치만으로 자연스럽고 풍부한 문장을 완성하여,
기존 AAC의 고질적인 대화 지연 문제를 해결합니다.
| 이름 | 담당 도메인 |
|---|---|
| 장문선 (팀장) | AI 문장 완성, 히스토리 관리 |
| 박현지 | 입력 & 선택 |
| 이정원 | 낱말 & 카테고리 관리 |
| 염수림 | TTS 출력, 스타일 변환 |
| 박서윤 | 인증 & 회원가입/로그인 |
| 카테고리 | 기술 스택 | 용도 |
|---|---|---|
| 언어 & 런타임 | RESTful API 서버 | |
| 데이터베이스 | 관계형 DB, ORM 캐싱 및 세션 관리 |
|
| 인증 & 보안 | JWT 토큰 인증 OAuth 2.0 소셜 로그인 (Kakao, Google, Naver) |
|
| 외부 API | Text-to-Speech 음성 합성 | |
| 검증 & 문서화 | 요청 데이터 검증 API 문서 자동 생성 |
| 카테고리 | 기술 스택 | 용도 |
|---|---|---|
| 언어 & 프레임워크 | 비동기 API 서버 | |
| AI/ML 서비스 | AI 문장 추천 및 스타일 변환 | |
| 캐싱 | AI 응답 캐싱 | |
| HTTP 클라이언트 | 외부 API 통신 |
| 카테고리 | 기술 스택 | 용도 |
|---|---|---|
| 컨테이너화 | 컨테이너 기반 배포 및 오케스트레이션 | |
| CI/CD | 자동 빌드 및 배포 파이프라인 | |
| 버전 관리 | 코드 버전 관리 |
graph TB
subgraph Client["클라이언트 (Android)"]
APP[모두와 AAC 앱]
end
subgraph Backend["백엔드 서버 (Node.js)"]
API[Express API Server<br/>Port: 3000]
AUTH[인증 & 소셜 로그인]
WORDS[낱말 관리]
CATEGORY[카테고리 관리]
HISTORY[사용 기록]
ROUTINE[루틴 메시지]
SETTINGS[사용자 설정]
TTS_SERVICE[TTS 서비스]
end
subgraph AI["AI 서버 (Python)"]
FASTAPI[FastAPI Server<br/>Port: 8000]
AI_MODEL[OpenAI GPT-4]
end
subgraph External["외부 서비스"]
GOOGLE_TTS[Google Cloud TTS]
OAUTH[OAuth Providers<br/>Kakao/Google/Naver]
end
subgraph Storage["데이터 저장소"]
MYSQL[(MySQL<br/>Port: 3306)]
REDIS[(Redis<br/>Port: 6379)]
end
APP -->|REST API| API
API --> AUTH
API --> WORDS
API --> CATEGORY
API --> HISTORY
API --> ROUTINE
API --> SETTINGS
API --> TTS_SERVICE
API -->|AI 문장 추천| FASTAPI
FASTAPI -->|GPT-4 요청| AI_MODEL
AUTH -->|소셜 로그인| OAUTH
TTS_SERVICE -->|음성 합성| GOOGLE_TTS
API -->|Prisma ORM| MYSQL
API -->|캐싱/세션| REDIS
FASTAPI -->|캐싱| REDIS
style Backend fill:#e3f2fd
style AI fill:#fff3e0
style Storage fill:#f3e5f5
style External fill:#e8f5e9
- 메인 REST API 서버
- JWT 기반 인증/인가
- OAuth 2.0 소셜 로그인 (Kakao, Google, Naver)
- Prisma ORM을 통한 데이터베이스 관리
- OpenAI GPT-4 기반 문장 추천
- Redis 캐싱으로 응답 속도 최적화
- 사용자 맥락(이전 대화, 시간) 기반 개인화
- 14개 테이블로 구성된 관계형 데이터베이스
- 사용자, 낱말, 카테고리, 대화 이력, 구독 정보 관리
- API 응답 캐싱 (24시간 TTL)
- JWT 토큰 블랙리스트 관리
- 세션 관리
moduwa-server/
├── 📂 src/
│ ├── 📄 app.js # Express 애플리케이션 진입점
│ ├── 📂 auth/ # 인증 & 소셜 로그인 (OAuth)
│ ├── 📂 ai-prediction/ # AI 문장 추천 & 스타일 변환
│ ├── 📂 words/ # 낱말 CRUD
│ ├── 📂 category/ # 카테고리 관리
│ ├── 📂 history/ # 사용 기록 관리
│ ├── 📂 routine/ # 루틴 메시지 관리
│ ├── 📂 settings/ # 사용자 설정 (TTS, 그리드)
│ ├── 📂 order/ # 순서 관리
│ ├── 📂 tts/ # Google Cloud TTS
│ ├── 📂 utils/ # 공통 유틸리티 (캐싱, 응답 헬퍼)
│ ├── 📂 errors/ # 에러 핸들링
│ ├── 📂 common/ # 공통 미들웨어 (인증, 검증)
│ ├── 📂 config/ # 설정 파일
│ └── 📂 swagger/ # API 문서
├── 📂 fastapi-server/
│ ├── 📄 main.py # FastAPI 애플리케이션
│ └── 📄 Dockerfile
├── 📂 prisma/
│ ├── 📄 schema.prisma # 데이터베이스 스키마 (14개 테이블)
│ └── 📄 seed.js # 초기 데이터
├── 📄 docker-compose.yml # 컨테이너 오케스트레이션
├── 📄 Dockerfile # Backend 이미지
└── 📄 package.json
| 브랜치 | 설명 |
|---|---|
main |
배포용 브랜치 |
develop |
기능 개발 통합 브랜치 |
feature/{이슈번호}-{간단한설명} |
새로운 기능 개발 브랜치 |
fix/{이슈번호}-{간단한설명} |
버그 수정 브랜치 |
hotfix/{이슈번호}-{간단한설명} |
긴급 수정 브랜치 |
refactor/{이슈번호}-{간단한설명} |
리팩토링 브랜치 |
chore/{이슈번호}-{간단한설명} |
기타 설정, 패키지 변경 등 |
| 타입 | 설명 |
|---|---|
[feat] |
새로운 기능 |
[fix] |
버그 수정 |
[hotfix] |
긴급 버그 수정 |
[refactor] |
코드 리팩토링 |
[chore] |
설정/패키지 변경 |
[docs] |
문서 수정 |
[add] |
파일/라이브러리 추가 |
[del] |
코드 삭제 |
형식: #이슈번호 [타입]: 변경 요약
예시:
#12 [feat]: 로그인 API 구현
#17 [fix]: CORS 에러 수정
#20 [chore]: 환경변수 설정 추가