TTS-App
Text to Speech Project for Spring Boot Module (etc Resource, Auth Server, Python with Fast API (gTTS))
Python의 gTTS lib를 활용하여 텍스트를 음성으로 변환하는 서비스를 구조를 잡고 구현해봅니다.
- 회사 업무로 인해 프로젝트 진행이 느릴 수 있습니다.
프로젝트 구조
- 추가, 변경 가능
- 21-11-08. JWT refresh token store 용도의 Redis Server 추가
프로젝트 개발 요구 사항 정의
서버 구조
- User API, Auth, TTS Server, MySQL, Prometeus + Grafana 는 같은 Host System에 Docker Container 형태로 배포되어야 한다. (Docker File, Compose 활용)
- 배포 시에는 Docker File, Docker Compose를 활용하여야 한다.
파일 관리
- Text File Upload 혹은 사용자가 Text 작성하였을 때에는 내용의 무결성 검증을 진행하여야 한다.
- Host File System을 활용하여 File에 대해 Persist, Download(Download Page 제공), Select, Delete(Scheduler) 기능을 작성해야 한다.
- File Multiple download 시 확장자가 아니라 Zip에 압축하여 제공하여야 한다.
API end-point
실제 호출 정보는 프로젝트의 XxxRequest.http 파일을 참고한다.
- Autorization API
- GET /api/accounts/sign-up
사용자 이름, 비밀번호, 이메일 그리고 생일을 입력받아 새로운 계정 정보를 생성한다. - POST /oauth/token
사용자 이름과 비밀번호를 생성된 사용자 정보를 바탕으로 검증하여 인증 정보를 담은 JWT를 발급한다. - GET /oauth/check_token
발급받은 인증 토큰의 유효성을 검증한다. - POST /oauth/token (사용하지 않을 예정)
발급한 토큰 정보에서 재발급 토큰 정보를 받아 새로운 인증 토큰을 발급한다.
- GET /api/accounts/sign-up
프로젝트 개발 시 준수 사항
Convention
- 명시적인 Naming Convention 준수
- Encapsulation 을 지킬 수 있는 원칙들을 준수
- 좋은 커밋 메시지를 위해 Git commit 규칙을 준수 https://blog.ull.im/engineering/2019/03/10/logs-on-git.html
Work Flow
- Git Branch Strategy "Git-Flow"
Tech Stack
- Spring Boot 2.5.6
- Spring Actuator + Admin + Security + Resource Server + Authorization Server
- Python + Fast API + gTTS
- React + TypeScript + React-Router-Dom + Material-UI
- Testcontainers (redis, mysql..) + MySQL + Data JPA, QueryDSL
- Prometheus + Grafana
- Docker Compose + Docker