|
| 1 | + |
| 2 | +# <img width="80" height="80" alt="image" src="https://github.com/user-attachments/assets/3548a1ef-6de9-43d3-a1b7-80c905f28d72" /> TEAM 이장님들 - Docsa |
| 3 | + |
| 4 | +## 🔗 배포 링크 |
| 5 | +https://app.docsa.kro.kr/ |
| 6 | + |
| 7 | +## 🙌 프로젝트 소개 |
| 8 | +Docsa는 문서의 변경 이력과 다양한 버전을 효율적으로 관리할 수 있는 문서 버전 관리 시스템입니다. |
| 9 | +이 프로젝트의 목표는 Git을 모르는 사용자도 손쉽게 버전 관리를 활용하여 문서를 편집하고 운용할 수 있도록 돕는 것입니다. |
| 10 | +<br><br> |
| 11 | +사용자는 그래프로 구현된 시각적인 UI를 통해 문서를 직접 편집하고, 다양한 버전 흐름을 한눈에 확인하며 관리할 수 있습니다. |
| 12 | +Docsa는 문서의 변경 사항을 기록(commit) 단위로 추적하고, 버전(branch) 를 분기하거나, 서로 다른 버전을 병합(merge) 할 수 있는 강력한 기능을 제공합니다. <br><br> |
| 13 | +이러한 기능은 editor.js 기반의 블록 단위 저장 방식을 통해 구현되며, 변경된 블록만을 감지하여 데이터베이스에 저장하고 이를 조합하여 기록함으로써 저장 효율성과 자원 활용도를 극대화합니다. |
| 14 | + |
| 15 | +## 📌 주요 기능 |
| 16 | +>*Git의 개념과 용어를 모르는 일반인 유저를 위해, Docsa에서는 일반적인 Git의 개념과 대응되는 용어를 다음과 같이 재정의합니다. <br> |
| 17 | +>(기록: commit, 버전: branch, 병합하기: merge) |
| 18 | +
|
| 19 | +### 문서 버전 관리 |
| 20 | + |
| 21 | +- 문서는 기록,저장과 버전을 가진 최상위 단위입니다. 문서마다 모든 변경 사항을 기록 단위로 저장하여, 원하는 시점의 기록을 조회 (checkout) 할 수 있으며, 메인화면에서 생성과 삭제가 가능합니다. |
| 22 | + |
| 23 | +### 버전(branch) 분기 및 병합 |
| 24 | + |
| 25 | +- 하나의 문서에서 여러 버전을 생성하여 자유롭게 분기해나갈 수 있으며, 브랜치 간 병합을 통해 작업 내용을 통합할 수 있습니다. main버전 이외 버전 단위의 삭제도 가능합니다. |
| 26 | + |
| 27 | +### 저장(Save) 및 기록(Commit) 시스템 |
| 28 | + |
| 29 | +- 작성 중인 내용을 저장할 수 있는 ‘저장하기’ 기능과, 특정 시점의 변경 사항을 확정하는 ‘기록하기’ 기능을 사용할 수 있습니다. 기록마다 제목과 설명을 추가할 수 있으며, 저장 또는 기록을 단일 삭제할 수도 있습니다. |
| 30 | + |
| 31 | +### 두 기록 비교하기 |
| 32 | + |
| 33 | +- ‘비교하기’를 통해 현재 보고있는 기록과 다른 기록을 문단 단위로 비교할 수 있습니다. |
| 34 | + |
| 35 | +### 시각화된 버전 그래프 UI |
| 36 | + |
| 37 | +- 기록과 저장,브랜치 간의 관계를 트리 구조 그래프로 시각화하여, 문서의 버전 흐름을 직관적으로 확인할 수 있습니다. |
| 38 | + |
| 39 | +### 실시간 문서 편집 |
| 40 | + |
| 41 | +- Docsa의 에디터를 통해 직접 문서를 작성 및 수정할 수 있으며, 블록 기반 편집과 마크다운 문법을 지원합니다. |
| 42 | + |
| 43 | + |
| 44 | + |
| 45 | +## 👩💻 팀 이장님 소개 |
| 46 | +<table align="center"> <thead> <tr> <th style="text-align:center;">팀원</th> <th style="text-align:center;">역할</th> <th style="text-align:left;">담당 업무</th> </tr> </thead> <tbody> <tr> <td align="center"> <a href="https://github.com/sleepyhoon"> <img src="https://avatars.githubusercontent.com/u/101882530?v=4" width="60"><br/> <sub><b>한승훈</b></sub> </a> </td> <td align="center"><b>PO</b></td> <td> - 프론트 개발자님과 소통<br> - 프로젝트 일정 관리<br> - 저장 관련 API 구현 </td> </tr> <tr> <td align="center"> <a href="https://github.com/heets-blue"> <img src="https://avatars.githubusercontent.com/u/89324994?v=4" width="60"><br/> <sub><b>배문성</b></sub> </a> </td> <td align="center"><b>BE 팀장</b></td> <td> - 문서 관련 API 구현<br> - 이종간 트랜잭션 삭제 로직 설계 및 구현 </td> </tr> <tr> <td align="center"> <a href="https://github.com/Jeongmin39"> <img src="https://avatars.githubusercontent.com/u/80705450?v=4" width="60"><br/> <sub><b>한정민</b></sub> </a> </td> <td align="center"><b>AWS 관리자</b></td> <td> - 인증 및 사용자 관련 API 구현<br> - AWS 인프라 운영<br> - Docker 기반 배포<br> - 모니터링 시스템 구축 </td> </tr> <tr> <td align="center"> <a href="https://github.com/2ternal"> <img src="https://avatars.githubusercontent.com/u/26919446?v=4" width="60"><br/> <sub><b>권우철</b></sub> </a> </td> <td align="center"><b>BE 팀원</b></td> <td> - 기록(커밋) 관련 API 구현<br> - 병합기능(머지) API 구현<br> - 이종간 트랜잭션 삭제 로직 설계 </td> </tr> <tr> <td align="center"> <a href="https://github.com/ky1nonly"> <img src="https://avatars.githubusercontent.com/u/117032989?v=4" width="60"><br/> <sub><b>이예원</b></sub> </a> </td> <td align="center"><b>BE 팀원</b></td> <td> - 버전(브랜치) 관련 API 구현<br> - 그래프 조회 API 구현 </td> </tr> </tbody> </table> |
| 47 | + |
| 48 | +<div align="center"> |
| 49 | + |
| 50 | +### 🤝 팀 컨벤션 |
| 51 | +[Git 컨벤션](https://github.com/prgrms-web-devcourse-final-project/WEB5_7_2Jangs_BE/wiki/%F0%9F%91%A9%E2%80%8D%F0%9F%92%BB-%ED%8C%80-%EC%BB%A8%EB%B2%A4%EC%85%98#git-%EC%BB%A8%EB%B2%A4%EC%85%98)<br> |
| 52 | +[Code 컨벤션](https://github.com/prgrms-web-devcourse-final-project/WEB5_7_2Jangs_BE/wiki/%F0%9F%91%A9%E2%80%8D%F0%9F%92%BB-%ED%8C%80-%EC%BB%A8%EB%B2%A4%EC%85%98#code-%EC%BB%A8%EB%B2%A4%EC%85%98)<br> |
| 53 | +[package 구조](https://github.com/prgrms-web-devcourse-final-project/WEB5_7_2Jangs_BE/wiki/%F0%9F%91%A9%E2%80%8D%F0%9F%92%BB-%ED%8C%80-%EC%BB%A8%EB%B2%A4%EC%85%98#%ED%8C%A8%ED%82%A4%EC%A7%80-%EA%B5%AC%EC%A1%B0)<br> |
| 54 | + |
| 55 | +</div> |
| 56 | + |
| 57 | +## 🌐 시스템 아키텍처 |
| 58 | +<img width="2000" height="1000" alt="이장님들-System-arch (1)" src="https://github.com/user-attachments/assets/fa59f678-fd4e-4e1e-af54-a61d502a206f" /> |
| 59 | + |
| 60 | + |
| 61 | + |
| 62 | +<div align="center"> |
| 63 | + |
| 64 | +### Backend |
| 65 | + |
| 66 | + |
| 67 | + |
| 68 | + |
| 69 | + |
| 70 | + |
| 71 | + |
| 72 | + |
| 73 | + |
| 74 | + |
| 75 | + |
| 76 | + |
| 77 | + |
| 78 | + |
| 79 | + |
| 80 | + |
| 81 | + |
| 82 | + |
| 83 | + |
| 84 | + |
| 85 | + |
| 86 | + |
| 87 | + |
| 88 | +### Collaboration & Tools |
| 89 | + |
| 90 | + |
| 91 | + |
| 92 | + |
| 93 | + |
| 94 | + |
| 95 | + |
| 96 | +</div> |
| 97 | + |
| 98 | +## 📚 Swagger API 문서 |
| 99 | + |
| 100 | +<div align="center"> |
| 101 | + <img src="https://img.shields.io/badge/Swagger-85EA2D?style=for-the-badge&logo=swagger&logoColor=black" alt="Swagger Badge"/> |
| 102 | +</div> |
| 103 | + |
| 104 | +<p align="center"> |
| 105 | + 🧪 API 명세서 및 테스트를 위한 Swagger 문서입니다. |
| 106 | +</p> |
| 107 | + |
| 108 | +<div align="center"> |
| 109 | + 🔗 <a href="https://docsa.kro.kr/swagger-ui/index.html#/"><strong>배포 서버 Swagger 문서 보기</strong></a><br/> |
| 110 | + 🔗 <a href="https://ky1nonly.github.io/docsa_swagger/"><strong>(서버 중단시 조회용) GitHub Pages Swagger 문서 보기</strong></a> |
| 111 | +</div> |
| 112 | + |
| 113 | +<br> |
| 114 | + |
| 115 | +## 📲 애플리케이션 UI |
| 116 | + |
| 117 | +🔗 [서비스 배포 주소](https://app.docsa.kro.kr/)<br> |
| 118 | +🎥 [시연 영상](https://www.youtube.com/watch?v=-1J7JvvATXw&t=2s) |
| 119 | + |
| 120 | +### [UI 스크린샷 및 상세 설명](https://github.com/prgrms-web-devcourse-final-project/WEB5_7_2Jangs_BE/wiki/%F0%9F%92%BB-UI-%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7-%EB%B0%8F-%EC%83%81%EC%84%B8-%EC%84%A4%EB%AA%85) |
| 121 | + |
| 122 | + |
| 123 | +[대표 사진] |
| 124 | +<img width="1658" height="891" alt="image" src="https://github.com/user-attachments/assets/2873f6bb-33c2-4d79-91e8-80cbf6e3b54f" /> |
| 125 | +<img width="1646" height="927" alt="image" src="https://github.com/user-attachments/assets/12121c14-ccb3-4167-b633-11cfbb134fa8" /> |
| 126 | +<img width="1652" height="927" alt="화면 캡처 2025-08-03 184713" src="https://github.com/user-attachments/assets/be0454ed-4350-4ae7-962c-608acbea41a3" /> |
| 127 | + |
| 128 | + |
| 129 | + |
| 130 | +## 📄 ERD |
| 131 | +### [데이터 모델 도출 과정](https://github.com/prgrms-web-devcourse-final-project/WEB5_7_2Jangs_BE/wiki/%F0%9F%93%84-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%AA%A8%EB%8D%B8-%EB%8F%84%EC%B6%9C-%EA%B3%BC%EC%A0%95) |
| 132 | +<img width="1700" height="806" alt="docsa-몽고도입 후" src="https://github.com/user-attachments/assets/fa0367db-218b-4553-891f-23c9615e73ca" /> |
| 133 | + |
| 134 | +## 📄 Flow Chart |
| 135 | +<img width="1468" height="1021" alt="이장님들-페이지-1 drawio" src="https://github.com/user-attachments/assets/1204efd2-94d9-42db-a7fd-c79af0efeace" /> |
| 136 | + |
| 137 | + |
| 138 | + |
| 139 | +## ⚡ 기술적 이슈 |
| 140 | +*정리 후 이슈마다 블록 링크 걸 예정 |
| 141 | +- [비즈니스 로직 구현 방식 상세](https://github.com/prgrms-web-devcourse-final-project/WEB5_7_2Jangs_BE/wiki/%E2%9A%A1-%EA%B8%B0%EC%88%A0%EC%A0%81-%EC%9D%B4%EC%8A%88#%EB%B9%84%EC%A6%88%EB%8B%88%EC%8A%A4-%EB%A1%9C%EC%A7%81-%EA%B5%AC%ED%98%84-%EC%84%A4%EB%AA%85) |
| 142 | + |
| 143 | +## 🎇 트러블 슈팅 |
| 144 | +*정리 후 이슈마다 블록 링크 걸 예정 |
| 145 | +- [RDB-MongoDB간 트랜잭션 분리](https://github.com/prgrms-web-devcourse-final-project/WEB5_7_2Jangs_BE/wiki/%F0%9F%8E%87-%ED%8A%B8%EB%9F%AC%EB%B8%94-%EC%8A%88%ED%8C%85#rdb--mongodb-%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98-%EB%B6%84%EB%A6%AC) |
| 146 | +- [간선 CASCADE 삭제 시도시 오류와 해결](https://github.com/prgrms-web-devcourse-final-project/WEB5_7_2Jangs_BE/wiki/%F0%9F%8E%87-%ED%8A%B8%EB%9F%AC%EB%B8%94-%EC%8A%88%ED%8C%85#%EC%97%B0%EA%B4%80%EA%B4%80%EA%B3%84-cascade-%EC%98%A4%EB%A5%98-%EB%B0%8F-%ED%95%B4%EA%B2%B0) |
| 147 | + |
| 148 | + |
| 149 | +## ❓ QnA |
| 150 | +### [답변 정리 링크](https://github.com/prgrms-web-devcourse-final-project/WEB5_7_2Jangs_BE/wiki/%E2%9D%93-QnA) |
| 151 | +*추가 예정 |
| 152 | + |
| 153 | +1. 질문 1 |
| 154 | +2. 질문 2 |
| 155 | +3. 질문 3 |
| 156 | + |
| 157 | + |
| 158 | + |
| 159 | + |
0 commit comments