Skip to content

munwalk/moduwa-server

 
 

Repository files navigation



🗣️ 생각의 속도로 대화하는 스마트 의사소통

타이핑은 최소로, 표현은 최대로.

사용자의 대화 패턴과 상황 맥락을 실시간 분석하여 다음 문장을 선제적으로 제안합니다.
낱말 카드 몇 번의 터치만으로 자연스럽고 풍부한 문장을 완성하여,
기존 AAC의 고질적인 대화 지연 문제를 해결합니다.


📋 목차


👥 팀원 정보

이름 담당 도메인
장문선 (팀장) AI 문장 완성, 히스토리 관리
박현지 입력 & 선택
이정원 낱말 & 카테고리 관리
염수림 TTS 출력, 스타일 변환
박서윤 인증 & 회원가입/로그인

🛠 기술 스택

Backend (Node.js)

카테고리 기술 스택 용도
언어 & 런타임 Node.js Express.js RESTful API 서버
데이터베이스 MySQL Prisma Redis 관계형 DB, ORM
캐싱 및 세션 관리
인증 & 보안 JWT Passport.js JWT 토큰 인증
OAuth 2.0 소셜 로그인 (Kakao, Google, Naver)
외부 API Google Cloud Text-to-Speech 음성 합성
검증 & 문서화 Joi Swagger 요청 데이터 검증
API 문서 자동 생성

AI Server (Python)

카테고리 기술 스택 용도
언어 & 프레임워크 Python FastAPI 비동기 API 서버
AI/ML 서비스 OpenAI AI 문장 추천 및 스타일 변환
캐싱 Redis AI 응답 캐싱
HTTP 클라이언트 Axios 외부 API 통신

DevOps & Infrastructure

카테고리 기술 스택 용도
컨테이너화 Docker Docker Compose 컨테이너 기반 배포 및 오케스트레이션
CI/CD GitHub Actions 자동 빌드 및 배포 파이프라인
버전 관리 Git GitHub 코드 버전 관리

🏗 서버 아키텍처

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
Loading

🔑 주요 컴포넌트

1️⃣ Express API Server (Node.js)

  • 메인 REST API 서버
  • JWT 기반 인증/인가
  • OAuth 2.0 소셜 로그인 (Kakao, Google, Naver)
  • Prisma ORM을 통한 데이터베이스 관리

2️⃣ FastAPI AI Server (Python)

  • OpenAI GPT-4 기반 문장 추천
  • Redis 캐싱으로 응답 속도 최적화
  • 사용자 맥락(이전 대화, 시간) 기반 개인화

3️⃣ MySQL Database

  • 14개 테이블로 구성된 관계형 데이터베이스
  • 사용자, 낱말, 카테고리, 대화 이력, 구독 정보 관리

4️⃣ Redis Cache

  • 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

🌿 Branch Convention

브랜치 설명
main 배포용 브랜치
develop 기능 개발 통합 브랜치
feature/{이슈번호}-{간단한설명} 새로운 기능 개발 브랜치
fix/{이슈번호}-{간단한설명} 버그 수정 브랜치
hotfix/{이슈번호}-{간단한설명} 긴급 수정 브랜치
refactor/{이슈번호}-{간단한설명} 리팩토링 브랜치
chore/{이슈번호}-{간단한설명} 기타 설정, 패키지 변경 등

📌 Commit Convention

타입 설명
[feat] 새로운 기능
[fix] 버그 수정
[hotfix] 긴급 버그 수정
[refactor] 코드 리팩토링
[chore] 설정/패키지 변경
[docs] 문서 수정
[add] 파일/라이브러리 추가
[del] 코드 삭제

🗨️ Commit Message

형식: #이슈번호 [타입]: 변경 요약

예시:
#12 [feat]: 로그인 API 구현
#17 [fix]: CORS 에러 수정
#20 [chore]: 환경변수 설정 추가

About

모두와 AAC 서버

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages

  • JavaScript 75.7%
  • Python 23.4%
  • Dockerfile 0.9%