|
1 | | -# WEB6_8_ZOOPZOOP_BE |
2 | | -사용자 맞춤형 자료 추천과 시각화 아카이빙을 결합한 협업 플랫폼 - 서버 |
| 1 | + WEB6_8_ZOOPZOOP_BE |
| 2 | +사용자 맞춤형 자료 추천과 시각화 아카이빙을 결합한 협업 플랫폼 - 서버 파트 |
| 3 | + |
| 4 | +--- |
| 5 | + |
| 6 | +## 목차 |
| 7 | +1. [소개](#소개) |
| 8 | +2. [핵심 기능](#핵심-기능) |
| 9 | +3. [기술 스택](#기술-스택) |
| 10 | +4. [프로젝트 구조](#프로젝트-구조) |
| 11 | +5. [설치 및 실행](#설치-및-실행) |
| 12 | +6. [개발 컨벤션](#개발-컨벤션) |
| 13 | + |
| 14 | +--- |
| 15 | + |
| 16 | +## 💡소개 |
| 17 | +본 프로젝트는 웹 서핑 중 발견한 정보를 **효율적으로 수집, 요약, 정리**하고, 이를 팀 단위로 **공유 및 브레인스토밍**까지 이어갈 수 있는 **지식 관리 및 협업 플랫폼**을 목표로 합니다. |
| 18 | + |
| 19 | +**홈페이지:** [ZoopZoop](https://www.zoopzoop.kro.kr/) |
| 20 | + |
| 21 | +FE Repository: [Link](https://github.com/prgrms-web-devcourse-final-project/WEB5_6_ZOOPZOOP_FE) |
| 22 | + |
| 23 | +Chrome Extension Repository: [Link](https://github.com/prgrms-web-devcourse-final-project/WEB5_6_ZOOPS_TENSION_FE) |
| 24 | + |
| 25 | +--- |
| 26 | + |
| 27 | +## 📄핵심 기능 |
| 28 | + |
| 29 | +#### A. 정보 수집 |
| 30 | +- **크롬 확장자(Extension) 제공** |
| 31 | + - 웹 페이지에서 원하는 부분 선택 후 저장 |
| 32 | + - 제목, 본문 요약, URL, 태그, 썸네일을 카드뷰 형태로 개인 아카이브에 저장 |
| 33 | +- **직접 URL 저장** |
| 34 | + - 사용자가 원하는 웹 페이지 URL을 개인 아카이브에 직접 추가 가능 |
| 35 | + |
| 36 | +#### B. 개인 아카이브 |
| 37 | +- **카테고리 분류** |
| 38 | + - 폴더 생성 후 데이터를 카테고리별로 분류 가능 |
| 39 | +- **대시보드** |
| 40 | + - 수집한 정보 카드 형태로 한눈에 확인 |
| 41 | + |
| 42 | +#### C. 협업 기능 (공유 아카이브) |
| 43 | +- 팀원 초대 → 동일한 대시보드 공유 |
| 44 | +- 팀원이 공유한 데이터에 댓글 작성 가능 → 브레인스토밍 지원 |
| 45 | +- 여러 카드 배열/연결 → **지식 맵(마인드맵) 형태 구성** |
| 46 | +- 공통 수정 및 실시간 동기화 (Liveblocks 사용) |
| 47 | +- **AI 추천 기능** → 공유된 URL 태그 기반 맞춤형 뉴스 추천 |
| 48 | + |
| 49 | +#### D. AI 기반 맞춤형 뉴스 추천 |
| 50 | +- 뉴스 API 연동 → 특정 키워드 관련 최신 뉴스 수집 |
| 51 | +- **오늘의 뉴스 추천** |
| 52 | +- 개인 & 공유 아카이브 내용 기반 **맞춤형 뉴스 추천** |
| 53 | + |
| 54 | +--- |
| 55 | + |
| 56 | +## 🔧기술 스택 |
| 57 | +- **Framework & Language:** Spring Boot 3.5.5, Java 21 |
| 58 | +- **Database:** MySQL (production), H2 (development) |
| 59 | +- **Security & Auth:** Spring Security, OAuth2, JWT |
| 60 | +- **AI:** Spring AI, Groq |
| 61 | +- **Testing:** JUnit, Mockito |
| 62 | +- **Deployment:** Docker |
| 63 | +- **Utilities & External Services:** |
| 64 | + - Messaging: RabbitMQ |
| 65 | + - Caching & TTL: Redis |
| 66 | + - Documentation: Swagger |
| 67 | + - Monitoring: Sentry |
| 68 | + - Crawling: Jsoup |
| 69 | + - Storage: AWS S3 |
| 70 | + - Search Engine: Elastic Search |
| 71 | + |
| 72 | +--- |
| 73 | + |
| 74 | +## 📁프로젝트 구조 |
| 75 | +``` |
| 76 | +src/main/java/org/tuna/zoopzoop/backend |
| 77 | +├── domain |
| 78 | +│ └── archive # 아카이브 |
| 79 | +│ ├── archive # 아카이브 로직 |
| 80 | +│ └── folder # 아카이브 내 폴더 로직 |
| 81 | +│ ├── auth # 인증/인가 비즈니스 로직 |
| 82 | +│ ├── dashboard # Liveblocks 그래프 데이터 |
| 83 | +│ ├── datasource # 자료 데이터 크롤링 및 저장 |
| 84 | +│ ├── home # 백엔드 홈 화면 컨트롤러 |
| 85 | +│ ├── member # 사용자 |
| 86 | +│ ├── news # 뉴스 조회 API |
| 87 | +│ ├── space # 스페이스(협업 공간) 관련 |
| 88 | +│ ├── archive # 스페이스 공용 아카이브 |
| 89 | +│ ├── membership # 스페이스 권한 관리 |
| 90 | +│ └── space # 스페이스 비즈니스 로직 |
| 91 | +│ └── SSE # SSE 연결 |
| 92 | +└── global |
| 93 | + ├── aspect # AOP 공통 로직 (로깅/응답 등) |
| 94 | + ├── aws # AWS 관련 유틸리티 |
| 95 | + ├── clients # 외부 API 클라이언트 |
| 96 | + ├── config # 각종 환경 설정(JWT, ElasticSearch, Redis, RabbitMQ 등) |
| 97 | + ├── exception # 글로벌 예외 처리 |
| 98 | + ├── headlessBrowser # 크롤링용 헤드리스 브라우저 |
| 99 | + ├── initData # 테스트용 초기 데이터 |
| 100 | + ├── jpa # 공용 엔티티 |
| 101 | + ├── rsData # RsData 응답 객체 |
| 102 | + ├── security # Spring Security |
| 103 | + ├── springDoc # OpenAPI/Swagger & 문서화 |
| 104 | + ├── test # 모니터링 테스트 |
| 105 | + └── webMvc # 공통 WebMVC 설정 |
| 106 | +``` |
| 107 | + |
| 108 | +## 🔌설치 및 실행 |
| 109 | + |
| 110 | +``` |
| 111 | +# 1. 환경 설정 |
| 112 | +# application-secrets.yml.template를 참고하여 application-secrets.yml을 작성합니다. |
| 113 | +
|
| 114 | +# 2. 의존성 설치 |
| 115 | +./gradlew build |
| 116 | +
|
| 117 | +# 3. RabbitMQ, Elastic Search 컨테이너 실행 |
| 118 | +# 별도로 로컬 환경에 Redis가 설치되어 있어야 합니다. |
| 119 | +docker compose up -d |
| 120 | +docker ps // 정상적으로 실행 중인지 확인. |
| 121 | +
|
| 122 | +# 4. 로컬 서버 실행 |
| 123 | +java -jar build/libs/backend-0.0.1-SNAPSHOT.jar |
| 124 | +
|
| 125 | +# 5. 정상 작동 확인 |
| 126 | +# API 문서: http://localhost:8080/swagger-ui.html |
| 127 | +``` |
| 128 | + |
0 commit comments