From 65727877812691f6c744a53eef2d656cf676fa8d Mon Sep 17 00:00:00 2001 From: j2noo Date: Thu, 29 Feb 2024 16:18:10 +0900 Subject: [PATCH] =?UTF-8?q?docs=20:=20readme=20=EC=97=85=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 161 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..be8a14f --- /dev/null +++ b/README.md @@ -0,0 +1,161 @@ +# 🌟 Soullive-A + +## πŸ•ŠοΈ 쏘울λͺ¨λΈ + +## πŸ‘©β€πŸ‘©β€πŸ‘§β€πŸ‘¦ R&R + +| λΆ„μ•Ό | 이름 | ν¬μ§€μ…˜ | +| --- |-----|--------------------------------------------------------| +| λ””μžμΈ | ν™μŠΉλ¦¬ | 🧹 PM & λ””μžμΈ : νŒ€ 총 관리, λ””μžμΈ 총괄 및 UI/UX νˆ΄μ„ μ΄μš©ν•œ ν”„λ‘œν† νƒ€μž… λ””μžμΈ | +| 기획 | μ†‘ν•˜μ€ | πŸ“ˆκΈ°νš : λ¦¬μ„œμΉ˜γƒ»μ„œλΉ„μŠ€ 핡심 κΈ°λŠ₯ 및 μ„ΈλΆ€ κΈ°λŠ₯ 섀계 λ‹΄λ‹Ή 및 μŠ€ν† λ¦¬λ³΄λ“œ λ‹΄λ‹Ή | +| 기획 | 김병진 | πŸ“ŠκΈ°νš : λ¦¬μ„œμΉ˜γƒ»μ„œλΉ„μŠ€ 핡심 κΈ°λŠ₯ 및 μ„ΈλΆ€ κΈ°λŠ₯ 섀계 λ‹΄λ‹Ή 및 μŠ€ν† λ¦¬λ³΄λ“œ λ‹΄λ‹Ή | +| 개발 | μ†‘μŠΉν¬ | πŸ–₯️ Front-End, μ†Œμ…œ 둜그인 κ΅¬ν˜„, μ„œλ²„ 연동 | +| 개발 | κΉ€μˆ˜ν˜„ | πŸ–₯️ Front-End, μ†Œμ…œ 둜그인 κ΅¬ν˜„, μ„œλ²„ 연동 | +| 개발 | 이상민 | πŸ–₯️ Back-End, ERD 섀계 및 MySQL ꡬ좕 ... | +| 개발 | μœ€μ†Œλ―Ό | πŸ’» Back-End, ERD 섀계 및 MySQL ꡬ좕 . .. | +| 개발 | λ°•μ§„μš° | πŸ’» Back-End, ERD 섀계 및 MySQL ꡬ좕 . .. | +
+ + +## **πŸ”Β System Architecture** + +![image](https://github.com/Kusitms-28th-Meetup-D/.github/assets/77064618/b31487de-eb5e-400b-b141-7e5d9817fb07) + +

+ +## πŸ”‘κΈ°μˆ  μŠ€νƒ + +### πŸ–₯️Frontend +- ![TypeScript](https://img.shields.io/badge/Typescript-3178C6?style=flat-square&logo=Typescript&logoColor=white) +- ![React](https://img.shields.io/badge/react-61DAFB?style=flat-square&logo=react&logoColor=white) + ![React-Query](https://img.shields.io/badge/reactquery-FF4154?style=flat-square&logo=reactquery&logoColor=white) + ![Axios](https://img.shields.io/badge/axios-DB5C3F?style=flat-square&logo=axios&logoColor=white) + ![Recoil](https://img.shields.io/badge/recoil-f26b00?style=flat-square&logo=recoil&logoColor=white) + ![Styled-Components](https://img.shields.io/badge/styledcomponents-DB7093?style=flat-square&logo=styledcomponents&logoColor=white) + +- ![vite](https://img.shields.io/badge/vite-646CFF?style=flat-square&logo=vite&logoColor=white) +
+ + + +### πŸ’»Backend +- ![IntelliJ IDEA](https://img.shields.io/badge/IntelliJ%20IDEA-000000.svg?style=flat-square&logo=intellij-idea&logoColor=white) + ![Java](https://img.shields.io/badge/Java-%23ED8B00.svg?style=flat-square&logo=Java&logoColor=white) + ![Springboot](https://img.shields.io/badge/Springboot-6DB33F?style=flat-square&logo=springboot&logoColor=white) + ![Shell Script](https://img.shields.io/badge/Shell_Script-%23121011.svg?style=flat-square&logo=gnu-bash&logoColor=white) + ![Gradle](https://img.shields.io/badge/Gradle-02303A.svg?style=flat-square&logo=Gradle&logoColor=white) + ![Spring Data JPA](https://img.shields.io/badge/Spring%20Data%20JPA-6DB33F?style=flat-square&logo=spring&logoColor=white) + ![JWT](https://img.shields.io/badge/JWT-black?style=flat-square&logo=JSON%20web%20tokens) +- ![MySQL](https://img.shields.io/badge/MySQL-%2300f.svg?style=flat-square&logo=mysql&logoColor=white) + ![RDS](https://img.shields.io/badge/AWS%20RDS-527FFF?style=flat-square&logo=Amazon%20RDS&logoColor=white) + ![S3](https://img.shields.io/badge/AWS%20S3-569A31?style=flat-square&logo=Amazon%20S3&logoColor=white) + ![Hibernate](https://img.shields.io/badge/Hibernate-59666C?style=flat-square&logo=Hibernate&logoColor=white) +- ![GitHub Actions](https://img.shields.io/badge/Github%20Actions-%232671E5.svg?style=flat-square&logo=githubactions&logoColor=white) + ![EC2](https://img.shields.io/badge/AWS%20EC2-FF9900?style=flat-square&logo=Amazon%20EC2&logoColor=white) + ![Docker](https://img.shields.io/badge/Docker-%230db7ed.svg?style=flat-square&logo=docker&logoColor=white) + ![Nginx](https://img.shields.io/badge/Nginx-%23009639.svg?style=flat-square&logo=nginx&logoColor=white) +
+ +#### Spring Data JPA +- μžλ°”μ—μ„œ db bender에 μ’…μ†λ˜μ§€ μ•Šκ³  객체 μ€‘μ‹¬μœΌλ‘œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 개발 κ°€λŠ₯ν•©λ‹ˆλ‹€. +#### AWS EC2 +- μŠ€ν”„λ§ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 배포 μ„œλ²„λ‘œ 프리티어λ₯Ό 톡해 무료둜 μΌμ •λŸ‰ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€., +#### RDS mysql +- μΌμ •λŸ‰ 무료둜 μ‚¬μš©ν•  수 있으며 ν΄λΌμš°λ“œ μΈμŠ€ν„΄μŠ€ν™” ν•  수 μžˆμŠ΅λ‹ˆλ‹€. +#### S3 +- ν•„μš”ν•œ 데이터λ₯Ό μ–΄λ””μ„œλ‚˜ μ‰½κ²Œ μ €μž₯ν•˜κ³  검색할 수 μžˆλ„λ‘ ν•΄μ€λ‹ˆλ‹€. +#### Docker +- CICDλ₯Ό 진행 ν•  λ•Œ μ‹€ν–‰ κ°€λŠ₯ν•œ μ„œλ²„ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ 도컀λ₯Ό 톡해 μ»¨ν…Œμ΄λ„ˆν™” μ‹œμΌœ μ„œλ²„ ν™˜κ²½μ—μ„œ μ‰½κ²Œ μ‹€ν–‰ν•  수 있게 ν•©λ‹ˆλ‹€. +#### Docker-compose +- EC2 μΈμŠ€ν„΄μŠ€ λ‚΄λΆ€μ—μ„œ λΉŒλ“œν•  docker image μ‰½κ²Œ 관리할 수 있게 ν•©λ‹ˆλ‹€. +#### git action +- Githubμ—μ„œ μ œκ³΅ν•˜λŠ” CICD ν”„λ‘œμ„ΈμŠ€λ‘œ μ  ν‚¨μŠ€μ™€ 같은 λ³„λ„μ˜ νŒŒμ΄ν”„λΌμΈμ„ ꡬ좕할 ν•„μš” μ—†λ‹€λŠ” μž₯점이 μžˆμŠ΅λ‹ˆλ‹€. +#### Spring Security +- Spring boot와 ν†΅ν•©ν•˜μ—¬ μ‚¬μš©μž 인증과 인가에 λŒ€ν•œ λ³΄μ•ˆ μš”κ΅¬μ‚¬ν•­μ„ μ‰½κ²Œ μ²˜λ¦¬ν•˜λ„λ‘ λ„μ™€μ€λ‹ˆλ‹€. + +

+ +### πŸ“‘Co-working Tool +- ![swagger](https://img.shields.io/badge/swagger-85EA2D.svg?style=flat-square&logo=swagger&logoColor=white) + ![Notion](https://img.shields.io/badge/Notion-%23000000.svg?style=flat-square&logo=notion&logoColor=white) + ![Postman](https://img.shields.io/badge/Postman-FF6C37?style=flat-square&logo=postman&logoColor=white) + + + +

+ +## πŸ”–Β Naming Rules +### πŸ–₯️Frontend +- component : **PascalCase** + - μ΅œμƒμœ„ νƒœκ·Έ : **-Layout** + - μ°¨μƒμœ„ νƒœκ·Έ : **-Container** +- constant : **SNAKE_CASE** +- λ³€μˆ˜ : **camelCase** +- recoil atom : **camelCaseState** +- Interface + - props : **PascalCaseProps** + - api response : **PascalCaseResponse** + +### πŸ’»Backend +- **Packages** + - 항상 μ†Œλ¬Έμžλ‘œ μƒμ„±ν•˜κΈ° +- **Classes** + - λͺ…사여야 ν•œλ‹€. + - 볡합 λ‹¨μ–΄μ˜ 경우 각 λ‹¨μ–΄μ˜ μ²«κΈ€μžλŠ” λŒ€λ¬Έμž. + - μ™„μ „ν•œ 단어λ₯Ό μ‚¬μš©ν•˜κ³ , 두 λ¬Έμžμ–΄μ™€ μ•½μ–΄λŠ” ν”Όν•œλ‹€. +- **Interfaces** + - μΈν„°νŽ˜μ΄μŠ€ 이름도 클래슀 이름과 같은 λŒ€λ¬Έμž κ·œμΉ™μ„ μ μš©ν•œλ‹€. +- **Methods** + - 동사여야 ν•œλ‹€. + - 볡합 λ‹¨μ–΄μ˜ 경우 첫 λ‹¨μ–΄λŠ” μ†Œλ¬Έμžλ‘œ μ‹œμž‘ν•œλ‹€. +- **Constants** + - 클래슀 μƒμˆ˜λ‘œ μ„ μ–Έλœ λ³€μˆ˜λ“€κ³Ό μƒμˆ˜λ“€μ˜ 이름은 λͺ¨λ‘ λŒ€λ¬Έμžλ‘œ μ“°κ³  각 λ‹¨μ–΄λŠ” 언더바 ("_")둜 λΆ„λ¦¬ν•œλ‹€. + -** Variables** + - λ³€μˆ˜ μ΄λ¦„μ˜ 첫번째 λ¬ΈμžλŠ” μ†Œλ¬Έμžμ—¬μ•Ό ν•œλ‹€. + - 언더바 λ˜λŠ” λ‹¬λŸ¬ ν‘œμ‹œ 문자둜 μ‹œμž‘ν•˜λŠ” 것이 ν—ˆμš© λ˜κΈ°λŠ” ν•˜μ§€λ§Œ, μ‚¬μš©ν•˜μ§€ 말자. + - μ§§μ§€λ§Œ 의미있게 μ§“λŠ”λ‹€. + - λ³€μˆ˜μ˜ μ‚¬μš© μ˜λ„λ₯Ό μ•Œ 수 μžˆλ„λ‘ 의미적으둜 μ§“λŠ”λ‹€. + - ν•œλ¬Έμžλ‘œλ§Œ 이루어진 λ³€μˆ˜λŠ” μ•”μ‹œμ μœΌλ‘œλ§Œ μ‚¬μš©ν•˜κ³  버릴 λ³€μˆ˜λ₯Ό μ œμ™Έν•˜κ³ λŠ” ν”Όν•œλ‹€. + - μž„μ‹œ λ³€μˆ˜μ˜ 이름은 integerλŠ” i,j,k,m,n 을 μ‚¬μš©ν•˜κ³  characterλŠ” c,d,eλ₯Ό μ‚¬μš©ν•œλ‹€. +- **ETC** + - DB ν…Œμ΄λΈ”: **lower_snake_case** + - ENUM, μƒμˆ˜: **Upper_snake_case** + - μ»¬λ ‰μ…˜(Collection): **λ³΅μˆ˜ν˜•**을 μ‚¬μš©ν•˜κ±°λ‚˜ **μ»¬λ ‰μ…˜μ„ λͺ…μ‹œν•œλ‹€**. (Ex. userList, users, userMap) + - LocalDateTime: 접미사에 **Date**λ₯Ό 뢙인닀. + +


+ +## **πŸ—‚οΈΒ Commit Convention** + + +Ex) `git commit -m "feat(#8) : μ•± μ„€μΉ˜ ν”Œλ‘œνŒ… λ°°λ„ˆ μΆ”κ°€" ` + +- `feat` : μƒˆλ‘œμš΄ κΈ°λŠ₯ μΆ”κ°€ +- `fix` : 버그 μˆ˜μ • +- `chore` : λΉŒλ“œ 업무, νŒ¨ν‚€μ§€ λ§€λ‹ˆμ €, 라이브러리, dependencies μ„€μ • +- `docs` : λ¬Έμ„œ μˆ˜μ • - README.md, .github, ..etc +- `design` : μ‚¬μš©μž UI λ””μžμΈ λ³€κ²½ - CSS +- `style` : κΈ°λŠ₯ μˆ˜μ • μ—†λŠ” μ½”λ“œ μŠ€νƒ€μΌ λ³€κ²½ +- `refactor` : μ½”λ“œ λ¦¬νŒ©ν„°λ§ +- `test` : ν…ŒμŠ€νŠΈ μ½”λ“œ, λ¦¬νŽ™ν† λ§ ν…ŒμŠ€νŠΈ μ½”λ“œ μΆ”κ°€ +- `ci` : ci μ„€μ • 파일 μˆ˜μ • +- `perf` : μ„±λŠ₯ κ°œμ„  +- `rename` : 파일 ν˜Ήμ€ 폴더λͺ… λ³€κ²½ + + + +
+ +## **🐬 Git Flow** +- `main` : μΆœμ‹œ κ°€λŠ₯ν•œ ν”„λ‘œλ•μ…˜ μ½”λ“œμ˜ 브랜치 +- `develop` : λ‹€μŒ 버전을 κ°œλ°œν•˜λŠ” 브랜치 +- `feature` : κΈ°λŠ₯을 κ°œλ°œν•˜λŠ” 브랜치 +- `hotfix` : μΆœμ‹œ λ²„μ „μ—μ„œ λ°œμƒν•œ 버그λ₯Ό μˆ˜μ •ν•˜λŠ” 브랜치 + + 브랜치 넀이밍 : `feat/이슈번호` + +
+ +## ERD 및 μ›Œν¬ν”Œλ‘œμš° + +![image](https://github.com/Kusitms-28th-Meetup-D/.github/assets/77064618/7e22fb9b-45b9-4fe6-9a04-ef615b8181b7)