Skip to content

kusitms-com/28th_Meetup_TeamE_GwangJang_front

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๊ด‘์žฅ URL

https://www.gwang-jang.co.kr

๐Ÿ’ป Technology

FrontEnd

Server

Co-working Tools


๐Ÿ’ป System Architecture

architect


๐Ÿ  ๊ธฐ์ˆ  ์Šคํƒ ๋ฐ ํ”„๋ ˆ์ž„์›Œํฌ ์‚ฌ์šฉ ์ด์œ 

๐ŸŒฟย FrontEnd

React TypeScript
๋น ๋ฅธ ๋ Œ๋”๋ง
React๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๊ฐ•๋ ฅํ•˜๊ณ  ์œ ์—ฐํ•œ JavaScript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ์„œ, ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜์™€ ๊ฐ€์ƒ DOM์„ ํ†ตํ•ด ๋น ๋ฅธ ๋ Œ๋”๋ง์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“ˆ ๊ฐœ๋ฐœ ์ปดํฌ๋„ŒํŠธ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ๊ฐ€๋…์„ฑ์ด ๋›ฐ์–ด๋‚˜๋ฉฐ, ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ์ƒํƒœ๊ณ„๊ฐ€ ํฌ๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ ํ•ด๊ฒฐ์ด๋‚˜ ๋ชจ๋“ˆ ๊ฐœ๋ฐœ์— ๋„์›€์ด ๋˜๊ธฐ์— React๋กœ ์„ ์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
์ฝ”๋“œ ์•ˆ์ •ํ™”
TypeScript๋Š” ์ •์  ํƒ€์ž… ์–ธ์–ด๋กœ, ์ฝ”๋“œ๋ฅผ ๋” ์•ˆ์ •์ ์œผ๋กœ ๋งŒ๋“ค๊ณ  ๊ฐœ๋ฐœ์ž ์‚ฌ์ด์˜ ํ˜‘์—…์„ ์šฉ์ดํ•˜๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

์ƒ์‚ฐ์„ฑ
์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ ์—๋Ÿฌ๋ฅผ ๋ฐœ๊ฒฌํ•˜์—ฌ ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๋ฉฐ, ์ฝ”๋“œ ํžŒํŠธ์™€ ์ž๋™ ์™„์„ฑ์„ ์ œ๊ณตํ•˜์—ฌ ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ์„ ๋†’์—ฌ์ฃผ๋Š” ์žฅ์ ์ด ์žˆ์–ด TypeScript๋ฅผ ์„ ์ •ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
vite Recoil
์‹ ์†ํ•œ ๊ฐœ๋ฐœ
Vite๋Š” ๋น ๋ฅธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๋Š” ๋„๊ตฌ๋กœ, ์‹ ์†ํ•œ ๊ฐœ๋ฐœ๊ณผ ๋นŒ๋“œ ์‹œ๊ฐ„์„ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค.

๋น ๋ฅธ ๋ฆฌ๋กœ๋”ฉ
HMR(Hot Module Replacement)์„ ํ†ตํ•ด ๋น ๋ฅธ ๋ฆฌ๋กœ๋”ฉ์„ ์ œ๊ณตํ•˜๊ณ , ๊ธฐ๋ณธ์ ์œผ๋กœ ES ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œ ์‹œ๊ฐ„์„ ์ค„์—ฌ์ค€๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์–ด vite๋ฅผ ์„ ์ •ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๋ณต์žก์„ฑ ์ตœ์†Œํ™”
Recoil์€ React ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, ์ปดํฌ๋„ŒํŠธ ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ณต์œ ๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

์ค‘์•™ ์ƒํƒœ ๊ด€๋ฆฌ ํŒจํ„ด๊ณผ ๋น„๊ตํ–ˆ์„ ๋•Œ ์ฝ”๋“œ์˜ ๋ณต์žก์„ฑ์„ ์ค„์ด๋ฉฐ, ๋ณต์žกํ•œ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ๋ฉ”๋ฆฌํŠธ๊ฐ€ ์žˆ์–ด ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ Recoil์„ ์„ ์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
axios styled components
Promise ๊ธฐ๋ฐ˜์˜ ์ข‹์€ ํ˜ธํ™˜์„ฑ
์š”์ฒญ๊ณผ ์‘๋‹ต ์ธํ„ฐ์…‰ํ„ฐ, ์ทจ์†Œ ์ฒ˜๋ฆฌ, ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ๋“ฑ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Promise ๊ธฐ๋ฐ˜ API๋กœ ๋น„๋™๊ธฐ ์ฝ”๋“œ ์ž‘์„ฑ์„ ์šฉ์ดํ•˜๊ฒŒ ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— axios๋กœ ์„ ์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
CSS-in-JS
Styled Components๋Š” CSS๋ฅผ JavaScript๋กœ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ, ์ปดํฌ๋„ŒํŠธ ์Šคํƒ€์ผ๋ง์„ ์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.

๋™์  ์Šคํƒ€์ผ๋ง
์ปดํฌ๋„ŒํŠธ ์Šค์ฝ”ํ”„ ์Šคํƒ€์ผ๋ง์„ ํ†ตํ•ด ์Šคํƒ€์ผ ์ถฉ๋Œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ ,
๋™์  ์Šคํƒ€์ผ๋ง์„ ์‰ฝ๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ํฐ ๋ฉ”๋ฆฌํŠธ๋ผ๊ณ  ์ƒ๊ฐํ•ด ์„ ์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

โ˜๏ธย BackEnd

MSA ์„ ์ • ์ด์œ 

๊ธฐ์กด์˜ ๋ชจ๋†€๋ฆฌ์‹ ์•„ํ‚คํ…์ณ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ชจ๋‘ ๋‹จ์ผ ํ”„๋กœ์ ํŠธ์— ์กด์žฌํ•˜์—ฌ ๋‹จ์ˆœํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค. ๋˜ํ•œ ์˜ค๋ฅ˜ ์‹œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ์œ„์น˜๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์‰ฝ๊ณ , ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰์ด ์‰ฝ๋‹ค. ํ•˜์ง€๋งŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ทœ๋ชจ๊ฐ€ ํฌ๋‹ค๋ฉด ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๊ณ  ์ด ๋ฐฉ์‹์€ ํ™•์žฅ์— ์œ ์—ฐํ•˜์ง€ ์•Š๋‹ค.
๋‹ค๋ฅธ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ ์ถ”๊ฐ€๋กœ ํ™•์žฅํ•  ๊ณ„ํš์ด ์žˆ๊ณ , ํ˜„์žฌ ๊ธฐํš๋‹จ๊ณ„์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ทœ๋ชจ๊ฐ€ ํฐ โ€˜๊ด‘์žฅโ€™ ์—์„œ๋Š” ๋ณต์žกํ•œ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๋ฐ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๊ณ  ๋‹ค๋ฅธ ์„œ๋น„์Šค์™€ ๋…๋ฆฝ์ ์œผ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” MSA ๊ตฌ์กฐ๋ฅผ ์ฑ„ํƒํ•˜์˜€๋‹ค.

Spring Eureka QueryDSL
์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ
Spring Eureka๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐ„์˜ ํ†ต์‹ ์„ ์œ„ํ•ด ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์„œ๋น„์Šค๊ฐ€ ๋™์ ์œผ๋กœ ๋“ฑ๋ก๋˜๊ณ  ํ•ด์ง€๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ Eureka ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ์„œ๋น„์Šค์˜ ์œ„์น˜๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ
Spring Eureka๋Š” ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์„ ์ง€์›ํ•˜์—ฌ ์—ฌ๋Ÿฌ ์ธ์Šคํ„ด์Šค ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜์—ฌ ์š”์ฒญ์„ ๋ถ„์‚ฐ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ™•์žฅ์„ฑ๊ณผ ๊ฐ€์šฉ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๋ฏ€๋กœ Spring Eureka๋กœ ์„ ์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
ํƒ€์ž… ์•ˆ์ •์„ฑ
QueryDSL์€ ์ปดํŒŒ์ผ ์‹œ์ ์— ํƒ€์ž… ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ ๋Ÿฐํƒ€์ž„ ์‹œ์ ์— ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” SQL ์ฟผ๋ฆฌ ๊ด€๋ จ ์˜ค๋ฅ˜๋ฅผ ์‚ฌ์ „์— ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ฝ”๋“œ์˜ ์•ˆ์ •์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ณ  ๋ฒ„๊ทธ๋ฅผ ์ค„์—ฌ์ค๋‹ˆ๋‹ค.

๋™์  ์ฟผ๋ฆฌ ์ž‘์„ฑ
QueryDSL์€ ๋™์ ์œผ๋กœ ์ฟผ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž ์ž…๋ ฅ ๋˜๋Š” ์กฐ๊ฑด์— ๋”ฐ๋ผ ์ฟผ๋ฆฌ๋ฅผ ๋™์ ์œผ๋กœ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๊ธฐ์— QueryDSL๋กœ ์„ ์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
Docker ElastiCache
์ผ๊ด€์„ฑ
์ปจํ…Œ์ด๋„ˆ๋Š” ํ™˜๊ฒฝ์„ ํŒจํ‚ค์ง€ํ™”ํ•˜๋ฏ€๋กœ ๊ฐœ๋ฐœ, ํ…Œ์ŠคํŠธ ๋ฐ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ ์‚ฌ์ด์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ๊ฐ€ ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋กœ์ปฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•˜๊ณ  ํ”„๋กœ๋•์…˜ ์„œ๋ฒ„์—์„œ ์‹คํ–‰ํ•  ๋•Œ ์˜ˆ์ƒ๋Œ€๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์„ ์–ธ์  ๊ตฌ์„ฑ
Docker Compose์™€ ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์„ฑ์„ ์„ ์–ธ์ ์œผ๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํ™˜๊ฒฝ ๋ณ€์ˆ˜, ๋„คํŠธ์›Œํ‚น, ๋ณผ๋ฅจ ๋งˆ์šดํŠธ ๋“ฑ์„ ์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด Docker๋ฅผ ์„ ์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
๋น ๋ฅธ ์„ฑ๋Šฅ
์ฒ˜๋ฆฌ๋Ÿ‰์ด ๋งŽ๊ณ  ์ง€์—ฐ ์‹œ๊ฐ„์ด ์งง์€ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ ์Šคํ† ์–ด์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ์„ ๊ฐ•ํ™”๋กœ ๋น ๋ฅธ ์‘๋‹ต ์†๋„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์œ ์—ฐํ•œ ๋ฐ์ดํ„ฐ ๋งŒ๋ฃŒ ๊ด€๋ฆฌ
๊ฐ ํ‚ค์— ๋Œ€ํ•ด ๋งŒ๋ฃŒ ์‹œ๊ฐ„์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์–ด, Refresh Token์˜ ์œ ํšจ ๊ธฐ๊ฐ„ ๊ด€๋ฆฌ๊ฐ€ ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ElastiCache๋กœ Refresh Token์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํ•ด๋‹น ๊ธฐ์ˆ ์„ ์„ ์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๐Ÿ”–ย Naming Rules

  • ์ปดํฌ๋„ŒํŠธ, ํƒ€์ž…, ์ธํ„ฐํŽ˜์ด์Šค, ์ƒ์„ฑ์ž, ํด๋ž˜์Šค : PascalCase
  • ๋ฉ”์†Œ๋“œ & ํŒŒ๋ผ๋ฏธํ„ฐ & ๋ณ€์ˆ˜ : camelCase
  • ์ƒ์ˆ˜ : SNAKE_CASE

๐Ÿ—‚๏ธ Commit Convetion

๐Ÿ“Œ Type

commit๋ช… commit ๊ทœ์น™
feat ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€
fix ๋ฒ„๊ทธ ์ˆ˜์ • ํ˜น์€ ๊ธฐ๋Šฅ ์ˆ˜์ •
design css ๋“ฑ ์‚ฌ์šฉ์ž UI ๋””์ž์ธ ์ถ”๊ฐ€ ๋ฐ ์ˆ˜์ •
docs ๋ฌธ์„œ ์ถ”๊ฐ€ ๋ฐ ์ˆ˜์ •
test ํ…Œ์ŠคํŠธ์ฝ”๋“œ, ๋ฆฌํŒฉํ† ๋ง ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์„ ๋•Œ
style ์ฝ”๋“œ ํฌ๋งทํŒ…, ์„ธ๋ฏธ์ฝœ๋ก  ๋ˆ„๋ฝ, ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ์—†์ด ์ถ”๊ฐ€ ๋ฐ ์ˆ˜์ •
refactor ์ฝ”๋“œ ๋ฆฌํŽ™ํ† ๋ง
build ๋นŒ๋“œ ๊ด€๋ จ ํŒŒ์ผ ์ถ”๊ฐ€ ๋ฐ ์ˆ˜์ •
rename ํŒŒ์ผ ํ˜น์€ ํด๋”๋ช…์„ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์˜ฎ๊ธฐ๋Š” ์ž‘์—…๋งŒ ์ˆ˜ํ–‰
remove ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๋Š” ์ž‘์—…๋งŒ ์ˆ˜ํ–‰
chore ๊ทธ ์™ธ ์ž์ž˜ํ•œ ์ˆ˜์ •

  • commit message example
    • feat : ์ž‘์—… ๋‚ด์šฉ
    • fix : ์ž‘์—… ๋‚ด์šฉ
    • chore : โ€ฆ
  • ์ปค๋ฐ‹์€ ํŒŒ์ผ ๋‹จ์œ„๋กœ ์ž‘์—…ํ•œ ๋‚ด์šฉ ์ชผ๊ฐœ์„œ ํ•˜๊ธฐ
  • ์ปค๋ฐ‹๋ฉ”์‹œ์ง€๋Š” ์˜์–ด๋กœ ์ž‘์„ฑ

๐Ÿ‘จ๐Ÿปโ€๐ŸŽ“ย Branch Rules

  • ํ˜•์‹ [Header]/[์ด์Šˆ ๋ฒˆํ˜ธ]/[์ด์Šˆ ์ž‘์—… ๋‚ด์šฉ ์š”์•ฝ]
    • ex) feat/#2/login
Header ๊ธฐ๋Šฅ
main ์ตœ์ข… ๋ฐฐํฌํ•  ์„œ๋น„์Šค ๋‚ด์šฉ์˜ ๋ธŒ๋žœ์น˜
develop ์ฃผ์š” ๊ฐœ๋ฐœ ๋ธŒ๋žœ์น˜, ์ด ๋ธŒ๋žœ์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ฐ์ž ์ž‘์—…ํ•œ ๊ธฐ๋Šฅ์„ merge
feat ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ๋ธŒ๋žœ์น˜, ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์ด ์™„๋ฃŒ ์‹œ develop ๋ธŒ๋žœ์น˜์— merge
fix ๊ธฐ๋Šฅ ์ˆ˜์ • ๋ธŒ๋žœ์น˜, ์ด๋ฏธ develop ๋ธŒ๋žœ์น˜์— merge๋œ ๊ธฐ๋Šฅ์„ ์ˆ˜์ •ํ•˜๊ณ  ์™„๋ฃŒ ์‹œ develop ๋ธŒ๋žœ์น˜์— merge
hotfix master ๋ธŒ๋žœ์น˜๋กœ ๋ฐฐํฌ ํ›„์— ๋ฒ„๊ทธ๊ฐ€ ์ƒ๊ฒผ์„ ๋•Œ ๊ธด๊ธ‰ ์ˆ˜์ •ํ•˜๋Š” ๋ธŒ๋žœ์น˜

โšฝ๏ธ Issues

  • ์ด์Šˆ ์ œ๋ชฉ - feat : mainPage ์ˆ˜์ •

  • ๋งˆ์ผ์Šคํ†ค ์ ์šฉ

  • ํ…œํ”Œ๋ฆฟ ์ด์šฉ

    ## ๐Ÿ“Œ์ด์Šˆ ์„ค๋ช…
    
    ## ๐Ÿ—’๏ธํˆฌ๋‘๋ฆฌ์ŠคํŠธ
    - [ ]
    - [ ]
    
    ## ๐Ÿ‘ฃ์ฐธ๊ณ ์‚ฌํ•ญ

๐Ÿ‘ปย Pull requests

  • pr ์ œ๋ชฉ - feat : mainPage ์ˆ˜์ • (์ด์Šˆ์ œ๋ชฉ๊ณผ ๋™์ผํ•˜๊ฒŒ)

  • ํ…œํ”Œ๋ฆฟ ์ด์šฉ

    ### ๐Ÿ“ Description
    ์ด์Šˆ ๋ฒˆํ˜ธ : #๋ฒˆํ˜ธ
    
    ### ๐Ÿ’ฝ ์ž‘์—… ๋‚ด์šฉ
    - 1
    - 2
    
    ### ๐Ÿ–ผ ๊ฒฐ๊ณผ (์‚ฌ์ง„ ๋ฐ ์ž‘์—… ๊ฒฐ๊ณผ)

๐ŸŽƒย Directory Structure

๐ŸŒฟย FrontEnd

Atomic Design ํŒจํ„ด

์ปดํฌ๋„ŒํŠธ ์žฌ์‚ฌ์šฉ์„ ๋†’์ด๊ณ ์ž, ์•„ํ† ๋ฏน ๋””์ž์ธ ํŒจํ„ด ๋„์ž…
props drilling ์ตœ์†Œํ™”ํ•˜๊ณ ์ž, templates ๋‹จ๊ณ„ ์ œ๊ฑฐ ๋ฐ ์ƒํƒœ๊ด€๋ฆฌ recoil ๋„์ž…

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-10-13 แ„‹แ…ฉแ„Œแ…ฅแ†ซ 1 12 12

โ”Œโ”€โ”€ node_modules
โ”œโ”€โ”€ src
โ”‚   โ”œโ”€โ”€ apis // api ํ†ต์‹ 
โ”‚   โ”œโ”€โ”€ assets // ์ด๋ฏธ์ง€
โ”‚   โ”œโ”€โ”€ components
โ”‚   โ”‚   โ””โ”€โ”€ atoms // ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปดํฌ๋„ŒํŠธ
โ”‚   โ”‚   โ””โ”€โ”€ molecules // atom๋“ค์˜ ์ง‘ํ•ฉ
โ”‚   โ”‚   โ””โ”€โ”€ organisms // molecules์˜ ์ง‘ํ•ฉ
โ”‚   โ”œโ”€โ”€ layout // ๊ณตํ†ต ๋ ˆ์ด์•„์›ƒ 
โ”‚   โ”œโ”€โ”€ pages // ์‚ฌ์šฉ๋  ํŽ˜์ด์ง€ ๊ด€๋ฆฌ ํด๋” (ํŽ˜์ด์ง€์—์„œ logic ์ฒ˜๋ฆฌ, async๋กœ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ )
โ”‚   โ”œโ”€โ”€ recoil // ์ƒํƒœ๊ด€๋ฆฌ recoil ํด๋”
โ”‚   โ”œโ”€โ”€ router // Page ๋ผ์šฐํŒ…
โ”‚   โ”œโ”€โ”€ style // ์ „์—ญ style ์ง€์ •
โ””โ”€โ”€โ”€โ””โ”€โ”€ types // type๊ณผ interface ์ง€์ •
โ”œโ”€โ”€ App.tsx
โ”œโ”€โ”€ main.tsx
โ”œโ”€โ”€ index.html
โ”œโ”€โ”€ package.json
โ”œโ”€โ”€ tsconfig.json
โ”œโ”€โ”€ eslintrc.json
โ””โ”€โ”€ vite.config.ts

โ˜๏ธย BackEnd

DDD ํŒจํ„ด

โ”Œโ”€โ”€ api-gateway
โ”œโ”€โ”€ service1
โ”‚   โ”œโ”€โ”€ src
โ”‚   โ”‚   โ”œโ”€โ”€ main
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ java.com.gwangjang.backend
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ domain
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ service1
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ application
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚       โ”‚    โ””โ”€โ”€ dto
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚       โ”‚    โ””โ”€โ”€ mapper
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚       โ”‚    โ””โ”€โ”€ service
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ domain
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚       โ”‚    โ””โ”€โ”€ entity
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚       โ”‚    โ””โ”€โ”€ repository
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚       โ”‚    โ””โ”€โ”€ service
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ exception
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚       โ”‚    โ””โ”€โ”€ exception
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚       โ””โ”€โ”€ presentation
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚            โ””โ”€โ”€ controller
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚            โ””โ”€โ”€ mapper
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚            โ””โ”€โ”€ service
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ global
โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ BackendApplication
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ resources
โ”‚   โ”‚   โ””โ”€โ”€ test
โ”‚   โ”œโ”€โ”€ build.gradle
โ”‚   โ”œโ”€โ”€ Dockerfile
โ”‚   โ”œโ”€โ”€ settings.gradle
โ”‚   โ”œโ”€โ”€ gradlew
โ”‚   โ””โ”€โ”€ gradlew.bat
โ””โ”€โ”€โ”€ service2
โ””โ”€โ”€โ”€ service3
โ””โ”€โ”€โ”€ service4

๐Ÿฌ Git Flow

แ„€แ…ตแ†บแ„‘แ…ณแ†ฏแ„…แ…ฉแ„‹แ…ฎ