Skip to content
Merged
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
337 changes: 336 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,336 @@
# 럭키비키즈 팀 프로젝트 여행 경비 매니저
# 🍀 럭키비키즈 팀 프로젝트 - 여행 경비 매니저


## ✈️ 프로젝트 소개

팀 단위로 여행 경비를 쉽고 정확하게 관리할 수 있는 정산 플랫폼입니다.

공동 예산을 설정하고 지출 내역을 입력하면,
누가 얼마를 부담해야 하는지 자동으로 계산해주어
팀원 간 경비 정산을 더욱 간편하고 투명하게 만들어줍니다.

---

## 📌 주요 기능

### 👥 팀 관리

* 팀 생성 및 참여
* 팀 멤버 조회 및 삭제
* 팀 대시보드 조회

### 💸 예산 관리

* 팀 단위 예산 등록
* 예산 정보 조회, 수정, 삭제
* 원화/외화 예산 분리 지원

### 💵 지출 내역 관리

* 팀별 지출 등록
* 지출 항목 수정, 삭제
* 지출 상세 및 리스트 조회

### 💰 정산 기능

* 정산 단건 조회 및 수정
* 정산 목록 및 멤버별 정산 현황 조회
* 정산 완료 처리

### 🔐 사용자 인증

* 회원가입 / 로그인 / 로그아웃
* 사용자 기반 팀 참여

---

## ⚙ 기술 스택
### 언어
<table>
<tr>
<td align="center">
<img src="https://github.com/yewon-Noh/readme-template/blob/main/skills/Java.png?raw=true" width="80" alt="Java"/><br/>
<sub><b>Java 21</b></sub>
</td>
</tr>
</table>

### 프레임 워크 및 라이브러리
<table>
<tr>
<td align="center">
<img src="https://github.com/yewon-Noh/readme-template/blob/main/skills/SpringBoot.png?raw=true" width="80" alt="Spring Boot"/><br/>
<sub><b>Spring Boot 3.4.5</b></sub>
</td>
<td align="center">
<img src="https://github.com/yewon-Noh/readme-template/blob/main/skills/React.png?raw=true" width="80" alt="React"/><br/>
<sub><b>React</b></sub>
</td>
<td align="center">
<img src="https://github.com/yewon-Noh/readme-template/blob/main/skills/SpringSecurity.png?raw=true" width="80" alt="Spring Security"/><br/>
<sub><b>Spring Security</b></sub>
</td>
<td align="center">
<img src="https://github.com/yewon-Noh/readme-template/blob/main/skills/SpringDataJPA.png?raw=true" width="80" alt="Spring Data JPA"/><br/>
<sub><b>Spring Data JPA</b></sub>
</td>
</tr>
</table>

### 데이터 베이스
<table>
<tr>
<td align="center">
<img src="https://github.com/yewon-Noh/readme-template/blob/main/skills/Mysql.png?raw=true" width="80" alt="MySQL"/><br/>
<sub><b>MySQL</b></sub>
</td>
</tr>
</table>

### 협업 도구
<table>
<tr>
<td align="center">
<img src="https://cdn.jsdelivr.net/gh/devicons/devicon/icons/git/git-original.svg" width="80" alt="Git"/><br/>
<sub><b>Git</b></sub>
</td>
<td align="center">
<img src="https://github.com/yewon-Noh/readme-template/blob/main/skills/Github.png?raw=true" width="80" alt="GitHub"/><br/>
<sub><b>GitHub</b></sub>
</td>
<td align="center">
<img src="https://github.com/yewon-Noh/readme-template/blob/main/skills/Notion.png?raw=true" width="80" alt="Notion"/><br/>
<sub><b>Notion</b></sub>
</td>
</tr>
</table>


### 문서

<table>
<td align="center">
<img src="https://raw.githubusercontent.com/yewon-Noh/readme-template/main/skills/Swagger.png" width="80" alt="Swagger"/><br/>
<sub><b>Swagger</b></sub>
</td>
</table>


----

## 💁‍♂️ 프로젝트 팀원

<table>
<thead>
<tr>
<th align="center">팀장</th>
<th align="center">팀원</th>
<th align="center">팀원</th>
<th align="center">팀원</th>
<th align="center">팀원</th>
</tr>
</thead>
<tbody>
<tr>
<td align="center">
<a href="https://github.com/johnhuh619">
<img src="https://github.com/johnhuh619.png" width="120" height="120" alt="허재원"/><br/>
<sub><b>허재원</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/garusitell">
<img src="https://github.com/garusitell.png" width="120" height="120" alt="이선빈"/><br/>
<sub><b>이선빈</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/KEEKE132">
<img src="https://github.com/KEEKE132.png" width="120" height="120" alt="안필온"/><br/>
<sub><b>안필온</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/mipangg">
<img src="https://github.com/mipangg.png" width="120" height="120" alt="정미광"/><br/>
<sub><b>정미광</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/pbk2312">
<img src="https://github.com/pbk2312.png" width="120" height="120" alt="박유한"/><br/>
<sub><b>박유한</b></sub>
</a>
</td>
</tr>
</tbody>
</table>

----

## 🛠️ 역할 분담

| 이름 | 담당 기능 |
|--------|------------------------|
| **재원** | 팀 도메인 담당<br/>React 프론트 페이지 개발 |
| **유한** | 지출 도메인 담당<br/>React 프론트 페이지 개발 |
| **미광** | 예산 도메인 담당<br/>React 프론트 페이지 개발 |
| **필온** | 정산 도메인 담당<br/>React 프론트 페이지 개발 |
| **선빈** | 회원 도메인 담당<br/>React 프론트 페이지 개발 |

---

## 🛠️ 프로젝트 아키텍쳐

### 시스템 아키텍처

![시스템 아키텍쳐](https://github.com/user-attachments/assets/90daa01f-4e3b-4927-8b0e-45f2cdbc5eee)


### ERD

![ERD](https://github.com/user-attachments/assets/b1d7c51d-cbd9-479c-bf8e-4da8c1728f5d)


### 플로우차트



![플로우 차트](https://github.com/user-attachments/assets/561eaed1-6006-4a14-87d2-b8ea54bda9b9)



<img width="1053" alt="스크린샷 2025-05-07 15 10 04" src="https://github.com/user-attachments/assets/62ff0a5f-5c32-4843-9611-ba1bba78f96f" />


----


## 화면 구성

### 회원가입 및 로그인

https://github.com/user-attachments/assets/cb83d174-a0a5-44e9-8c3f-2df4d17d5d83

### 팀 생성

![image](https://github.com/user-attachments/assets/24a1d694-b63d-47aa-a677-62540a18df08)

#### 팀 대시보드

![image](https://github.com/user-attachments/assets/707d6c9d-31d7-4ceb-a0d6-9d14a34f2675)

#### 예산 설정, 수정 , 삭제


https://github.com/user-attachments/assets/7f384c95-ebae-4c7b-a7a8-02325d286a1f

#### 지출 등록, 수정, 삭제


https://github.com/user-attachments/assets/0306a909-2c8c-4158-a9fa-a15efdccaef0


#### 정산 수정 및, 정산하기



https://github.com/user-attachments/assets/84a81b25-53c2-4627-8cfa-ff15c6cbca2e






## 협업 방식

### 🛠️ 브랜치 전략
![Image20250428163351](https://github.com/user-attachments/assets/71405653-385a-4bd0-95dd-bb0f58aed569)
1. **이슈 생성**
- GitHub 이슈를 통해 작업 항목 정의

2. **브랜치 생성**
- `dev` 브랜치에서 이슈별 작업 브랜치 생성
- 브랜치 명명 규칙 예시: `feature/이슈번호-작업내용`

3. **PR 및 코드 리뷰**
- 작업 완료 후 Pull Request(PR) 생성
- 팀원 간 코드 리뷰 진행

4. **Merge 및 브랜치 정리**
- 리뷰 완료 후 `dev` 브랜치로 Merge
- Merge 후 이슈 브랜치 삭제
- `dev` 브랜치 최신 상태 유지
---

### 🧑‍💻 코딩 컨벤션

**스타일 가이드**
- [Google Java Style Guide](https://google.github.io/styleguide/javaguide.html) 적용

**패키지 구조**
- domain
- core
- sharedKernel

---

## 🗂️ APIs

작성한 API는 아래에서 확인할 수 있습니다.

<details>
<summary>👉🏻 API 바로보기</summary>

<br>

### 💸 예산 API

| 메서드 | URL | 설명 |
|--------|-----|------|
| POST | /api/teams/{teamId}/budget | 팀 예산 추가 |
| GET | /api/teams/{teamId}/budget | 팀 예산 조회 |
| PATCH | /api/teams/{teamId}/budget | 팀 예산 수정 |
| DELETE | /api/teams/{teamId}/budget | 팀 예산 삭제 |

### 💰 정산 API

| 메서드 | URL | 설명 |
|--------|-----|------|
| GET | /api/settlements/{settlementId} | 정산 단건 조회 |
| GET | /api/teams/{teamId}/settlements | 정산 목록 조회 |
| PATCH | /api/settlements/{settlementId} | 정산 수정/완료 |

### 💵 지출 API

| 메서드 | URL | 설명 |
|--------|-----|------|
| POST | /api/{teamId}/expense | 지출 등록 |
| PATCH | /api/expense/{expenseId} | 지출 수정 |
| DELETE | /api/expense/{expenseId} | 지출 삭제 |
| GET | /api/expense/{expenseId} | 지출 상세 조회 |
| GET | /api/teams/{teamId}/expenses | 지출 목록 조회 |

### 👥 팀 API

| 메서드 | URL | 설명 |
|--------|-----|------|
| POST | /api/teams | 팀 생성 |
| POST | /api/teams/members | 팀 참여 |
| GET | /api/teams/{teamId}/members | 팀 멤버 조회 |
| DELETE | /api/teams/{teamId}/members/{memberId} | 멤버 삭제 |
| GET | /api/teams/{teamId}/dashboard | 대시보드 조회 |

### 🙋‍♂️ 회원 API

| 메서드 | URL | 설명 |
|--------|-----|------|
| POST | /api/users | 회원가입 |
| POST | /api/users/login | 로그인 |
| POST | /api/users/logout | 로그아웃 |
| POST | /api/users/{userId} | 회원 탈퇴 |

</details>

## 🤔 기술적 이슈와 해결 과정