Skip to content

다양한 분야의 독서 기록을 체계적으로 정리하고, 공유할 수 있는 플랫폼

Notifications You must be signed in to change notification settings

treejh/booktree

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

952 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Image



📚 BookTree - 독서 기록 공유 플랫폼

🔗 서비스 접속하기: https://www.booktri.site
🎥 서비스 영상 보기: YouTube 링크



1. Project Overview (프로젝트 개요)

📚 BookTree

독서 입문자와 다독가 모두를 위한 독서 기록 플랫폼

BookTree는 단순한 독서 기록을 넘어서, 책을 카테고리별로 정리하고 공유하며, 다시 쉽게 꺼내볼 수 있는 공간을 제공합니다.
나만의 블로그를 통해 독서의 즐거움을 더 풍부하게 경험해보세요!


🛠️ 기술 스택

  • Backend: Java (Spring Boot)
  • Frontend: JavaScript, HTML
  • 기타: OAuth2 (Kakao, GitHub)

🌟 주요 기능

📝 나만의 블로그

  • 카테고리를 자유롭게 생성하여 독서 기록을 체계적으로 분류
  • 독서 후기를 공유하고, 사람들과 소통하는 블로그 운영 가능

📄 내 글 정렬 기능

  • 작성한 게시글을 최신순 / 좋아요순으로 정렬하여 손쉽게 탐색 가능
  • 자주 찾는 글을 빠르게 다시 꺼내볼 수 있도록 구성

🔥 인기 게시글

  • 메인 페이지에서 실시간 인기 게시글 확인 (조회수 기준)
  • 월간 인기 게시글 기능으로 분야별 트렌디한 책 추천

🌳 초보자도 쉽게!

  • 게시글 및 댓글 기능으로 자유로운 정보 교류
  • 좋아요, 댓글 좋아요 기능으로 유익한 글과 반응 높은 댓글을 쉽게 탐색

🎯 팔로우 & 스크랩

  • 관심 있는 사용자를 팔로우하고, 마음에 드는 글은 스크랩하여 따로 모아보기

🚀 간편한 소셜 로그인

  • OAuth2 기반 소셜 로그인 지원
  • Kakao, GitHub 계정으로 한 번의 클릭으로 로그인 및 회원가입 가능

✨ 프로젝트 배경

독서 기록을 단순히 모으는 것을 넘어, 종류별로 정리하고 다시 꺼내보기 쉬운 공간이 필요하다고 느꼈습니다.
BookTree는 책을 더 오래, 더 깊이 기억할 수 있는 독서 공간을 목표로 개발되었습니다.



2. Team Members (팀원 및 팀 소개)

장지현 백선영 김건호 이현석
장지현 백선영 김건호 이현석
BE,FE(팀장) BE,FE BE,FE BE,FE
GitHub GitHub GitHub GitHub


3. Key Features (주요 기능 상세)

  • 회원 관리:

    • 일반 로그인 및 OAuth2 로그인을 통해 사용자 인증을 지원합니다.
      • 일반 로그인: 사용자 이메일과 비밀번호를 통한 로그인
      • OAuth2 로그인: Kakao 및 GitHub 계정을 통한 간편 로그인
  • 게시글 관리:

    • 사용자는 게시글을 생성하고 수정, 삭제할 수 있고 비사용자는 조회할 수 있습니다.
  • 카테고리 관리:

    • 카테고리 생성, 수정, 삭제 기능을 제공합니다.
  • 블로그 관리:

    • 블로그 생성, 수정, 삭제 기능을 제공합니다.
  • 댓글 관리:

    • 사용자는 게시글에 댓글을 달거나, 수정 삭제할 수 있고 비사용자는 조회할 수 있습니다.
  • 대댓글 관리:

    • 사용자는 댓글에 답 댓글을 달거나 수정, 삭제할 수 있고 비사용자는 조회할 수 있습니다.
  • 인기 게시글 기능 :

    • 카테고리별 가장 많이 조회된 책 TOP5 을 조회할 수 있습니다.
    • 실시간 월간 일기 게시글을 조회할 수 있습니다.
  • 팔로우 관리:

    • 로그인 한 사용자끼리 팔로우하거나 팔로우를 취소하거나 내가 팔로우, 팔로잉한 사람들과 그들의 게시글을 확인할 수 있습니다.
  • 좋아요 관리:

    • 게시글, 댓글, 답글에 좋아요를 누르거나 좋아요를 취소할 수 있고 내가 좋아요를 한 게시글들을 확인할 수 있습니다.


4. Tasks & Responsibilities (작업 및 역할 분담)

4.1 백엔드

장지현
  • 회원 API(비밀번호 찾기 - 이메일 API)
  • 로그인(깃허브, 카카오), 로그아웃 API
  • 블로그 API
  • 본인 게시글 검색 API
  • 게시글 조회(팔로잉, 좋아요) API
  • S3 이미지 API
백선영
  • 게시글 API
  • 게시글 좋아요 API
  • 최근 1주 간 인기, 최신 순 정렬과 페이징
  • 조회(블로그별, 회원별, 게시글에 좋아요 한 유저 목록) API
김건호
  • 카테고리 API
  • 메인 카테고리 API
  • 메인 카테고리별 인기 게시글 API
  • 월간 실시간 인기 게시글 API
  • 팔로우 API
이현석
  • 댓글, 댓글좋아요 API
  • 대댓글, 대댓글좋아요 API
  • 검색 기능

4.2 프론트

장지현
  • 회원 로그인(+깃허브, 카카오 로그인), 회원 가입, 탈퇴
  • 비밀번호, 이메일 찾기
  • 블로그 기능
  • 본인 게시글 내 검색
  • 블로그 내 팔로잉, 스크랩 조회
  • 회원 카테고리별 게시글 가져오기 페이지
백선영
  • 게시글 작성, 조회, 수정, 삭제 기능
  • 게시글 좋아요 toggle, 조회 기능
  • 블로그 내 게시글 리스트 최신순, 추천순 정렬 및 페이징
  • 블로그 페이지, 게시글 프로필창에 유저 info 연결
김건호
  • 전체 게시글 조회수순 인기 게시글
  • 메인 카테고리 별 조회수순 인기 게시글
  • 메인 카테고리 별 월간 실시간 인기 게시글
  • 팔로워 페이지
  • 게시글 상세보기 팔로잉 기능
이현석
  • 게시글 검색 페이지(전체, 게시글 제목, 작가, 책이름 검색)
  • 댓글, 댓글 좋아요 기능
  • 대댓글, 대댓글 좋아요 기능
  • 사용자에 따른 댓글 버튼 기능


5. Technology Stack (기술 스택)

5.1 Frotend

Amazon S3

Next.js

OAuth

Vercel



5.2 Backend

Spring

MySQL

Amazon EC2

Docker

Nginx

OAuth



5.3 Etc

HAProxy

Git

GitHub_Actions

Notion



6. Project Structure (프로젝트 구조)

6-1 백엔드 프로젝트 구조

📦main
 ┣ 📂java
 ┃ ┗ 📂com
 ┃ ┃ ┗ 📂example
 ┃ ┃ ┃ ┗ 📂booktree
 ┃ ┃ ┃ ┃ ┣ 📂auditable
 ┃ ┃ ┃ ┃ ┣ 📂blog
 ┃ ┃ ┃ ┃ ┣ 📂category
 ┃ ┃ ┃ ┃ ┣ 📂comment
 ┃ ┃ ┃ ┃ ┣ 📂config
 ┃ ┃ ┃ ┃ ┣ 📂email
 ┃ ┃ ┃ ┃ ┣ 📂enums
 ┃ ┃ ┃ ┃ ┣ 📂exception
 ┃ ┃ ┃ ┃ ┣ 📂follow
 ┃ ┃ ┃ ┃ ┣ 📂image
 ┃ ┃ ┃ ┃ ┣ 📂jwt
 ┃ ┃ ┃ ┃ ┣ 📂likecomment
 ┃ ┃ ┃ ┃ ┣ 📂likepost
 ┃ ┃ ┃ ┃ ┣ 📂likereply
 ┃ ┃ ┃ ┃ ┣ 📂maincategory
 ┃ ┃ ┃ ┃ ┣ 📂oauth
 ┃ ┃ ┃ ┃ ┣ 📂popularpost
 ┃ ┃ ┃ ┃ ┣ 📂post
 ┃ ┃ ┃ ┃ ┣ 📂reply
 ┃ ┃ ┃ ┃ ┣ 📂role
 ┃ ┃ ┃ ┃ ┣ 📂security
 ┃ ┃ ┃ ┃ ┣ 📂user
 ┃ ┃ ┃ ┃ ┣ 📂utils
 ┃ ┃ ┃ ┃ ┗ 📜BookTreeApplication.java
 ┗ 📂resources
 ┃ ┣ 📂static
 ┃ ┣ 📂templates
 ┃ ┃ ┗ 📜password.html
 ┃ ┣ 📜application-dev.yml
 ┃ ┣ 📜application-prod.yml
 ┃ ┣ 📜application-secret.yml
 ┃ ┣ 📜application-test.yml
 ┃ ┣ 📜application.yml
 ┃ ┣ 📜application.yml.default
 ┃ ┗ 📜data.sql

6-2 프론트 프로젝트 구조

📦src
 ┣ 📂app
 ┃ ┣ 📂account
 ┃ ┃ ┣ 📂edit
 ┃ ┃ ┣ 📂editPassword
 ┃ ┃ ┣ 📂findAccount
 ┃ ┃ ┃ ┣ 📂findId
 ┃ ┃ ┃ ┗ 📂findPassword
 ┃ ┃ ┣ 📂login
 ┃ ┃ ┣ 📂signup
 ┃ ┃ ┗ 📂withdraw
 ┃ ┣ 📂blog
 ┃ ┃ ┣ 📂[id]
 ┃ ┃ ┃ ┣ 📂search
 ┃ ┃ ┣ 📂create
 ┃ ┃ ┣ 📂edit
 ┃ ┃ ┗ 📂post
 ┃ ┣ 📂category
 ┃ ┃ ┣ 📂[categoryId]
 ┃ ┣ 📂components
 ┃ ┣ 📂follow
 ┃ ┃ ┗ 📂[id]
 ┃ ┣ 📂main
 ┃ ┃ ┗ 📂category
 ┃ ┃ ┃ ┣ 📂[slug]
 ┃ ┣ 📂mypage
 ┃ ┃ ┣ 📂[id]
 ┃ ┃ ┗ 📂editCategory
 ┃ ┃ ┃ ┗ 📂[userId]
 ┃ ┣ 📂post
 ┃ ┃ ┣ 📂[postId]
 ┃ ┃ ┃ ┗ 📂detail
 ┃ ┃ ┃ ┃ ┗ 📂get
 ┃ ┃ ┗ 📂write
 ┃ ┣ 📂search
 ┃ ┣ 📜.prettierrc
 ┃ ┣ 📜ClientLayout.tsx
 ┃ ┣ 📜favicon.ico
 ┃ ┣ 📜globals.css
 ┃ ┣ 📜layout.tsx
 ┃ ┗ 📜page.tsx
 ┗ 📂stores
 ┃ ┗ 📂auth

6-3 배포 프로젝트 구조

📦infra
 ┣ 📜.gitignore
 ┣ 📜.terraform.lock.hcl
 ┣ 📜main.tf
 ┣ 📜secrets.tf
 ┣ 📜secrets.tf.default
 ┣ 📜terraform.tfstate
 ┣ 📜terraform.tfstate.1745779507.backup
 ┣ 📜terraform.tfstate.backup
 ┗ 📜variables.tf


7. Development Workflow (개발 워크플로우)

7-1 브랜치 전략 (Branch Strategy)

우리의 브랜치 전략은 Git Flow를 기반으로 하며, 다음과 같은 브랜치를 사용합니다.

  • Main Branch

    • main
    • 배포 가능한 상태의 코드를 유지합니다.
    • 모든 배포는 이 브랜치에서 이루어집니다.
  • 프론트 단독 개발

    • front/#이슈번호-브랜치이름
      • 프론트엔드(html, css 등) 단독 작업 시 사용합니다.
      • 배포 가능한 상태의 코드를 유지해야 하며, 배포는 이 브랜치에서 직접 이루어집니다.
  • 프론트 + 백엔드 기능 연결

    • front/[type]/#이슈번호-브랜치이름
      • 프론트와 백엔드 기능이 함께 연결되는 작업 시 사용합니다.
      • 팀원 각자의 기능 개발용 브랜치입니다.
      • 기능 개발, 테스트, UI/서버 연동 등이 이 브랜치에서 이루어집니다.
      • 완료 시 main 혹은 다른 상위 브랜치에 병합합니다.
  • 백엔드 기능 개발

    • [type]/#이슈번호-브랜치이름
      • 백엔드 API, 서비스 로직, DB 처리 등 백엔드 중심 작업 시 사용합니다.
      • 팀원 각자의 기능 개발용 브랜치입니다.
      • 모든 기능 개발은 이 브랜치에서 진행되며, 완료 시 병합 요청합니다.


8. 커밋 컨벤션

8-1 기본 구조

[ 브랜치 앞 명명 type ]  : [ # 이슈 번호 ] subject

8-2 type 종류

feat : 새로운 기능 추가
fix : 버그 수정
refact : 코드 리펙토링
add : 파일 추가
delete : 파일 삭제 
docs : 문서 수정

8-3 이슈 네이밍 규칙

[ type ]  :  subject
  • 작업 목적 + 대상 + 내용을 포함해 작성합니다.

예시:

  • [ front / refact ] : 메인페이지 인기 게시글, 블로그 페이지 팔로우, 팔로우 페이지 블로그 연동
  • [ front / feat ] 댓글버튼 숨기기
  • [ feat ] : 이메일 인증 구현

About

다양한 분야의 독서 기록을 체계적으로 정리하고, 공유할 수 있는 플랫폼

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •