GitHub: https://github.com/Daily-Boram/daily-boram-spring
늘보람 (Daily Boram)은 작가들이 AI 기술을 활용하여 소설 표지 및 등장인물 이미지를 생성하고, 작품을 손쉽게 연재할 수 있도록 지원하는 웹 플랫폼입니다. Stable Diffusion 모델을 기반으로 독창적인 캐릭터 이미지 생성을 돕고, 사용자 친화적인 연재 환경을 제공합니다.
SOFTWAVE 2022 부스 운영 및 COEX 전시 참가
- AI 소설 표지 생성: 소설의 분위기와 내용에 맞는 표지를 AI가 생성합니다.
- AI 등장인물 이미지 생성: 텍스트 설명을 바탕으로 소설 속 등장인물의 비주얼을 AI가 구현합니다.
- 소설 연재 및 관리: 작가가 시리즈 및 에피소드 단위로 작품을 게시하고 관리할 수 있습니다.
- 사용자 인증: Naver OAuth2.0을 이용한 간편 로그인 기능을 제공합니다.
- 커뮤니티 기능: 독자들이 작품에 대한 댓글을 작성하고 '좋아요'를 통해 선호도를 표현할 수 있습니다.
- 작품 검색 및 탐색: 제목, 장르 등 다양한 기준으로 작품을 검색하고 탐색할 수 있습니다.
- 사용자 프로필: 작가 및 독자의 프로필 정보와 작성/구매 내역을 관리합니다.
- 백엔드: Spring Boot (Java), Spring Security, JPA
- 데이터베이스 쿼리: QueryDSL
- AI 모델: Stable Diffusion
- AI 서버: FastAPI
- 인증: OAuth2 (Naver Login), JWT (Json Web Token)
- API 클라이언트: OpenFeign
- 기타: Lombok, Spring Data JPA Auditing
- Spring Boot 백엔드: 핵심 비즈니스 로직 처리, 사용자 관리, 소설 데이터 관리, 인증/인가, API 제공.
- AI 서버 (FastAPI): Stable Diffusion 모델을 사용하여 이미지 생성 요청 처리. Spring Boot 백엔드와 API 통신.
- 데이터베이스: 사용자 정보, 소설 시리즈/에피소드, 댓글, 좋아요 등 데이터 저장 (JPA/QueryDSL 사용).
- Naver API: OAuth2 인증을 위한 외부 연동.
- 도메인 모델링: User, Series, Episode, Character, Content, Comment, Like (Series/Episode), Genre, Purchase 등 핵심 엔티티 설계 및 JPA 매핑.
- 인증/인가 구현: Spring Security와 JWT를 활용한 인증 시스템 구축 및 Naver OAuth2 연동.
- 핵심 기능 개발:
- 시리즈/에피소드 CRUD 기능 구현.
- 댓글 및 좋아요 기능 구현 (SeriesLike, EpisodeLike).
- 사용자 프로필 관리 및 조회 기능 구현.
- AI 연동: Stable Diffusion 모델을 활용하는 별도의 AI 서버(FastAPI)와 OpenFeign을 이용한 API 통신 구현.
- 데이터 조회 최적화: QueryDSL을 활용하여 메인 페이지 정렬(최신순, 인기순, 랜덤), 검색 기능 등 복잡한 데이터 조회 로직 구현.
- API 설계: 각 기능별 RESTful API 엔드포인트 설계 및 구현 (Controller, Service, Repository 패턴).
- 예외 처리: Global Exception Handler를 통한 체계적인 오류 관리 및 응답 표준화.
- 전시 준비: SOFTWAVE 2022 전시를 위한 기능 안정화 및 데모 준비.
- Java Development Kit (JDK) 11 또는 이후 버전
- Maven 또는 Gradle (프로젝트 빌드 도구에 따라)
- 관계형 데이터베이스 (MySQL)
- (선택사항) AI 이미지 생성을 위한 별도 AI 서버 환경 (Python, PyTorch/TensorFlow, Stable Diffusion 모델 등)
-
저장소 클론
git clone https://github.com/Daily-Boram/daily-boram-spring.git cd daily-boram-spring
-
설정 파일 구성
src/main/resources/application.yml
(또는application.properties
) 파일 생성 및 수정.- 데이터베이스 연결 정보 (URL, username, password) 입력.
- JWT 비밀키 (
jwt.jwt-secret
) 설정. - Naver OAuth2 클라이언트 ID (
spring.security.oauth2.client.registration.naver.client-id
) 및 Secret (spring.security.oauth2.client.registration.naver.client-secret
) 설정. - (선택사항) AI 서버 API 엔드포인트 설정.
-
프로젝트 빌드
- Maven 사용 시:
./mvnw clean package
- Gradle 사용 시:
./gradlew clean build
- Maven 사용 시:
-
Spring Boot 애플리케이션 실행
java -jar target/dailyboramspring-*.jar # 또는 IDE에서 직접 실행
-
(선택사항) AI 서버 실행
- 별도로 구축된 AI 서버(FastAPI 등) 실행.
-
웹 서비스 접속
- 설정된 포트(기본 8080) 및 프론트엔드 주소로 접속.
- 사용자가 웹사이트에 접속하여 Naver 계정으로 로그인합니다.
- 작가는 '새 시리즈 만들기'를 통해 소설 제목, 요약, 장르 등을 입력합니다.
- (선택사항) AI 생성 기능을 이용하여 표지 또는 등장인물 이미지를 생성하고 시리즈에 추가합니다.
- 작가는 에피소드를 작성하고, 등장인물의 대사 등을 포함하여 게시합니다.
- 독자는 게시된 소설을 검색하거나 메인 페이지에서 탐색하여 읽습니다.
- 독자는 마음에 드는 시리즈나 에피소드에 '좋아요'를 누르거나 댓글을 작성하여 소통합니다.
- 사용자는 '내 프로필'에서 자신이 작성한 시리즈 목록이나 구매(읽기) 내역 등을 확인할 수 있습니다.
- AI 모델 성능: 현재 연동된 AI 모델의 성능에 따라 결과물의 품질이 달라질 수 있으며, 지속적인 모델 개선 및 파인튜닝이 필요합니다.
- 결제 시스템: 현재 'cookie' 필드로 구현된 포인트/재화 시스템을 실제 결제 시스템과 연동하여 확장할 수 있습니다.
- 고급 기능: 작품 추천 시스템, 작가 후원 기능, 통계 기능 등 사용자 경험 향상을 위한 추가 기능 개발을 고려할 수 있습니다.