Skip to content

monimoni12/Brain-Cleaner

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

배너

0. Getting Started (시작하기)

 .   ____          _            __ _ _
/\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/  ___)| |_)| | | | | || (_| |  ) ) ) )
 '  |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/

:: Spring Boot ::                (v3.4.4)

🖱️ 서비스 링크



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

  • 프로젝트 이름: Brain Cleaner
  • 프로젝트 설명: 도파민 디톡스 경험 공유 및 인증 커뮤니티


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

유재현 이서영 이은서 최정인
유재현 이서영 이은서 최정인
BE BE BE BE
GitHub GitHub GitHub GitHub


3. Key Features (주요 기능)

  • 회원가입:

    • 회원가입 시 DB에 유저정보가 등록됩니다.
  • 로그인:

    • 사용자 인증 정보를 통해 로그인합니다.
  • 프로필:

    • 개인 프로필에서 닉네임, 프로필 사진 설정이 가능합니다.
    • 포인트 조회가 가능합니다.
    • 이번 주 인증 현황, 연속 인증일 수 조회가 가능합니다.
    • 디톡스 희망 시간을 프로필에서 설정할 수 있습니다.
    • 다른 유저를 팔로우할 수 있습니다.
  • 도파민 디톡스 인증하기:

    • 메인화면 [인증게시판]에서 게시글 작성을 통해 도파민 디톡스 인증할 수 있습니다.
    • 작성한 게시글을 수정하거나 삭제할 수 있습니다.
    • 다른 유저의 게시글에 좋아요, 댓글, 대댓글 작성을 할 수 있습니다.
    • 게시글을 작성하면 관리자 승인 이후에 포인트가 지급됩니다.
  • 게시글 작성하기:

    • 인증게시글 이외 정보공유게시글, 자유게시글 작성을 통해 다른 유저들과 소통하고 도파민디톡스에 유용한 정보를 얻어갈 수 있습니다.
    • 게시글을 작성하면 포인트가 지급됩니다.
  • 회원별 등급제도

    • 인증게시글, 정보공유게시글, 자유게시글 작성을 통해 얻은 포인트가 누적되면 등업이 가능합니다.
    • 게시판 종류별 포인트는 다음과 같습니다.
      • 인증게시판 : 50점
      • 정보공유게시판 : 20점
      • 자유게시판 : 10점
    • (댓글 작성시 포인트 지급도 예정중에 있습니다.)
    • 회원 등급은 다음과 같습니다.
      • 디톡스새싹 : 0점
      • 절제수련생 : 100점
      • 집중탐험가 : 600점
      • 선명한의식 : 2000점
      • 도파민파괴자 : 4500점
      • 브레인클리너 : 7500점
  • 포인트상점:

    • 게시글을 작성하여 얻은 포인트를 차감시켜 귀여운 이모티콘으로 교환할 수 있습니다.
    • 구매한 이모티콘은 게시글과 댓글에서 사용할 수 있습니다.
  • 관리자:

    • 대시보드에서 총 회원 수, 오늘 가입자, 승인 대기 인증 수, 오늘 인증 처리수, 처리 대기 신고 수, 오늘 처리 신고 수 조회할 수 있습니다.
    • 회원들의 정보를 열람하고 상태 (계정 활성, 계정 정지, 계정 삭제)를 변경할 수 있습니다.
    • 신고된 게시글을 검토하고 게시글 삭제 / 회원제재 / 신고 처리 / 신고 반 할 수 있습니다.
    • 인증게시글을 검토하고 승인 / 반려 / 삭제할 수 있습니다.


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

유재현
  • 회원 인증
  • 일반 / 소셜 로그인, 토큰 관리
  • 메인 페이지 일부 구성요소
이서영
  • 메인 페이지 일부 구성요소
  • 팔로우기능 개발
  • 댓글 기능 개발
이은서
  • BrainCleaner🧠의 시그니처 디자인!✌🏻
  • 게시판 CRUD
  • 카테고리별 목록 조회 및 검색 기능
  • 포인트 상점 기능
  • 댓글 기능 일부 및 좋아요 기능
최정인
  • 관리자 관리 기능
  • 포인트 자동 적립 / 등업 기능


5. Technology Stack (기술 스택)

5.1 Language

Java TypeScript

5.2 Frontend

Next.js

5.3 Backend

Spring Boot Spring Security Spring Data JPA MySQL Swagger Lombok

5.4 Infra

Amazon EC2 Docker Nginx Amazon S3

5.5 Cooperation

Git GitHub Notion

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

6.1 Backend

be/
├── Dockerfile                      # 배포를 위한 컨테이너 구성
├── build.gradle.kts                # 의존성이 포함된 Gradle 빌드 설정
├── settings.gradle.kts             # Gradle 프로젝트 설정
├── gradlew                         # Unix용 Gradle 래퍼 스크립트
├── gradlew.bat                     # Windows용 Gradle 래퍼 스크립트
├── src/
│   └── main/
│       ├── java/com/dd/blog/       # 메인 패키지
│       │   ├── BlogApplication.java  # Spring Boot 애플리케이션
│       │   ├── domain/             # 기능별로 구성된 도메인
│       │   │   ├── admin/          # 관리자 패널 기능
│       │   │   ├── point/          # 포인트 시스템 기능
│       │   │   │   ├── point/      # 포인트 연산 기능
│       │   │   │   └── pointstore/ # 포인트 상점 기능
│       │   │   ├── post/           # 게시글 관련 기능
│       │   │   │   ├── category/   # 게시글 카테고리
│       │   │   │   ├── comment/    # 댓글 기능
│       │   │   │   ├── post/       # 게시글 기능
│       │   │   │   ├── postlike/   # 좋아요 기능
│       │   │   │   └── verification/  # 게시글 인증 시스템
│       │   │   ├── report/         # 신고 시스템
│       │   │   └── user/           # 사용자 관리
│       │   │       ├── follow/     # 팔로잉/팔로워 기능
│       │   │       └── user/       # 사용자 기능
│       │   └── global/             # 글로벌 패키지
│       │       ├── app/            # 애플리케이션 설정
│       │       ├── aws/            # AWS S3
│       │       ├── config/         # 설정 클래스
│       │       ├── exception/      # 예외 처리
│       │       ├── init/           # 초기화 도구
│       │       ├── jpa/           # 엔티티 기본 설정 (id, createdAt, updatedAt)
│       │       ├── json/           # JSON 유틸리티
│       │       ├── rq/             # 요청/응답 추상화
│       │       ├── security/       # 보안 설정
│       │       └── utils/          # 유틸리티
│       └── resources/
│           ├── application.yml     # 메인 애플리케이션 속성
│           ├── application-dev.yml  # 개발 환경 속성
│           ├── application-prod.yml # 배포 환경 속성
│           └── application-test.yml # 테스트 환경 속성
└── gradle/
   └── wrapper/                    # Gradle 래퍼 파일

6.2 Frontend

fe/ (Frontend - Next.js / TypeScript)
├── .next/                # Next.js 빌드/캐시 (Git 무시)
├── node_modules/         # 의존성 라이브러리 (Git 무시)
├── public/               # 정적 에셋 (이미지, 폰트 등)
├── src/                  # 소스 코드 루트
│   ├── app/              # Next.js App Router (라우팅, 페이지)
│   ├── components/       # 공통 UI 컴포넌트
│   ├── constants/        # 공통 상수
│   ├── contexts/         # React Context
│   ├── font/             # 폰트 설정/파일
│   ├── lib/              # 로직/라이브러리 (API 연동 등)
│   ├── types/            # TypeScript 타입 정의
│   └── utils/            # 유틸리티 함수
├── .env                  # 환경 변수 (기본)
├── .env.development      # 개발 환경 변수
├── .env.production       # 배포 환경 변수
├── .gitattributes        # Git 속성 설정
├── .gitignore            # Git 무시 목록
├── eslint.config.mjs     # ESLint 설정
├── next.config.js        # Next.js 설정
├── next-env.d.ts         # Next.js 환경 타입
├── package-lock.json     # 의존성 버전 고정
├── package.json          # 프로젝트 정보/의존성
├── postcss.config.js     # PostCSS 설정
├── README.MD             # 프로젝트 설명
├── tailwind.config.js    # Tailwind CSS 설정
└── tsconfig.json         # TypeScript 설정



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

브랜치 전략 (Branch Strategy)

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

  • 🌿dev

    • 배포 가능한 상태의 코드를 유지합니다.
    • 모든 배포는 이 브랜치에서 이루어집니다.
  • 🌿feature/#{number}

    • feature 개발 브랜치입니다.
    • 모든 기능 개발은 이 브랜치에서 이루어집니다.
  • 🌿refactor/#{number}

    • 리팩토링 브랜치입니다.
    • 구조 및 기타 개선사항 반영은 이 브랜치에서 이루어집니다.
  • 🌿fix/#{number}

    • 버그 수정 브랜치입니다.
    • bugfix는 이 브랜치에서 이루어집니다.


8. Coding Convention

명명 규칙

💻 Java 쪽 컨벤션

항목 표기법 예시 설명
클래스명 PascalCase PostCategory, UserController 파일 이름 = 클래스 이름
변수명/필드명 camelCase createdAt, userId 첫 글자 소문자
메서드명 camelCase getUserName(), createPost() 동사 중심
패키지명 lowercase + 점(.) com.example.post.entity 전부 소문자
제네릭 타입 PascalCase List<Post> 클래스명 기준
enum 상수 UPPER_SNAKE_CASE PENDING, APPROVED_REJECTED 고정된 상수 이름

🗄️ DB (JPA 매핑 관련) 컨벤션

항목 표기법 예시 설명
테이블명 snake_case "post_category" DB 테이블명에 맞춰 작성
컬럼명 snake_case "created_at", "user_id" DB 컬럼명에 맞춰 작성
시퀀스명/제약조건명 snake_case post_id_seq, fk_user_id 대부분 snake_case 사용
기본키 snake_case post_id, user_id 보통 테이블명 + _id

이슈 네이밍

태그 의미
FEAT 새로운 기능 추가
FIX 버그 수정
REFACTOR 리팩토링 (기능 변경 없이 코드 개선)
DOCS 문서 수정
STYLE 코드 포맷팅, 세미콜론 누락 등 의미 없는 변경
TEST 테스트 코드 관련
CHORE 빌드 설정, 패키지 설치 등 잡일성 작업
CI / BUILD CI/CD 관련 설정 작업

9. 커밋 컨벤션

기본 구조

type/#issue number

body 

type 종류

feat : 새로운 기능 추가
fix : 버그 수정
refactor : 코드 리펙토링



About

Resources

Stars

Watchers

Forks

Languages

  • Java 66.2%
  • TypeScript 27.1%
  • HCL 5.3%
  • Other 1.4%