Skip to content

Commit

Permalink
Merge pull request #136 from boostcampwm-2024/feature/be/#80-getLocation
Browse files Browse the repository at this point in the history
[Feat][BE] : #40 : webSocket ์—ฐ๊ฒฐ ์„ธํŒ…
  • Loading branch information
happyhyep authored Nov 11, 2024
2 parents f74e667 + 0655101 commit 6bf7474
Show file tree
Hide file tree
Showing 82 changed files with 31,161 additions and 4,122 deletions.
16 changes: 9 additions & 7 deletions .github/workflows/auto-merge.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,20 +14,20 @@ jobs:
with:
result-encoding: string
script: |
const { data: pr } = await github.pulls.get({
const { data: pr } = await github.rest.pulls.get({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.payload.pull_request.number,
});
return JSON.stringify(pr);
core.setOutput('prResult', JSON.stringify(pr));
- name: 'Check Approvals and Labels'
id: check
uses: actions/github-script@v6
with:
script: |
const pr = JSON.parse(steps.pr.outputs.result);
const reviews = await github.pulls.listReviews({
const pr = JSON.parse(process.env.PR_RESULT);
const reviews = await github.rest.pulls.listReviews({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: pr.number,
Expand All @@ -37,7 +37,9 @@ jobs:
// ๋ฉ”์ธ ๋ธŒ๋žœ์น˜๋กœ ํ–ฅํ•˜๋Š” PR์ธ ๊ฒฝ์šฐ ๋ฆฌ๋ทฐ์–ด 3๋ช…, ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์ธ ๊ฒฝ์šฐ 2๋ช… ํ•„์š”
const requiredApprovals = pr.base.ref === 'main' ? 3 : 2;
return approvals.length >= requiredApprovals && hasLabel;
// Check ์กฐ๊ฑด ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅ์— ์„ค์ •
core.setOutput('result', approvals.length >= requiredApprovals && hasLabel);
- name: 'Change Label to ์ž‘์—… ์™„๋ฃŒ'
if: steps.check.outputs.result == 'true'
Expand All @@ -58,10 +60,10 @@ jobs:
uses: actions/github-script@v6
with:
script: |
await github.pulls.merge({
await github.rest.pulls.merge({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.payload.pull_request.number,
merge_method: 'merge', # 'squash' ๋˜๋Š” 'rebase'๋กœ๋„ ์„ค์ • ๊ฐ€๋Šฅ
merge_method: 'merge', // 'squash' ๋˜๋Š” 'rebase'๋กœ๋„ ์„ค์ • ๊ฐ€๋Šฅ
commit_title: `์ž๋™ ๋จธ์ง€: PR #${context.payload.pull_request.number}`
});
3 changes: 0 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,6 @@
#TMP
tmp

#DOCS
/docs

#idea
.idea

Expand Down
3 changes: 2 additions & 1 deletion backend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
"express": "^4.21.1",
"pg": "^8.13.1",
"swagger-jsdoc": "^6.2.8",
"swagger-ui-express": "^5.0.1"
"swagger-ui-express": "^5.0.1",
"ws": "^8.18.0"
}
}
1 change: 1 addition & 0 deletions backend/src/constants.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const PORT = 3001;
14 changes: 11 additions & 3 deletions backend/src/index.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
import express from 'express';
import swaggerUi from 'swagger-ui-express';
import http from 'http';
import { specs } from '../swaggerConfig';
import { pool } from './db';
import { PORT } from './constants';
import { initializeWebSocketServer } from './websocketServer';

const app = express();
app.use(express.json());
const port = 3001;

app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(specs));

Expand All @@ -25,6 +27,12 @@ app.get('/example', (req, res) => {
res.send('Hello World');
});

app.listen(port, () => {
console.log(`Server is running on http://localhost:${port}`);
// HTTP ์„œ๋ฒ„ ์ƒ์„ฑ
const server = http.createServer(app);

// WebSocket ์„œ๋ฒ„ ์ดˆ๊ธฐํ™”
initializeWebSocketServer(server);

app.listen(PORT, () => {
console.log(`Server is running on http://localhost:${PORT}`);
});
41 changes: 41 additions & 0 deletions backend/src/websocketServer.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import { WebSocketServer } from 'ws';

const activeConnections = {}; // token๋ณ„๋กœ ์—ฐ๊ฒฐ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ์ฒด

export function initializeWebSocketServer(server) {
const wss = new WebSocketServer({ server });

wss.on('connection', (ws, req) => {
// URL์—์„œ token ์ถ”์ถœ
// TODO: ํ”„๋ก ํŠธ ๋ผ์šฐํ„ฐ ๋ฐ token ์„ค์ • ์™„๋ฃŒ ํ›„ ํ…Œ์ŠคํŠธ
const url = new URL(req.url, `http://${req.headers.host}`);
const token = url.searchParams.get('token');

if (!token) {
ws.close(4001, 'Token is required');
return;
}

// ๋™์ผํ•œ token์œผ๋กœ ์ด๋ฏธ ์—ฐ๊ฒฐ๋œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์žˆ์œผ๋ฉด ์ด์ „ ์—ฐ๊ฒฐ์„ ๊ฐ•์ œ๋กœ ์ข…๋ฃŒ
if (activeConnections[token]) {
activeConnections[token].close(4000, 'Duplicate connection');
}

// ์ƒˆ๋กœ์šด ์—ฐ๊ฒฐ์„ ํ™œ์„ฑํ™”๋œ ์—ฐ๊ฒฐ ๋ชฉ๋ก์— ์ €์žฅ
activeConnections[token] = ws;

console.log(`Client connected with token: ${token}`);

// ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ๋ฉ”์‹œ์ง€ ๋ฐ›์•˜์„ ๋•Œ์˜ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ
ws.on('message', message => {
console.log(`Received from ${token}:`, message);
});

// ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ ์ข…๋ฃŒ ์‹œ
ws.on('close', (code, reason) => {
console.log(`Client disconnected with token: ${token}, Code: ${code}, Reason: ${reason}`);
// ์—ฐ๊ฒฐ์ด ์ข…๋ฃŒ๋˜๋ฉด activeConnections์—์„œ ํ•ด๋‹น token ์ œ๊ฑฐ
delete activeConnections[token];
});
});
}
27 changes: 27 additions & 0 deletions docs/docusaurus/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

node_modules
dist
dist-ssr
*.local

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

.docusaurus
build
60 changes: 60 additions & 0 deletions docs/docusaurus/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
<div align="center">
<img width="600" alt="image" src="https://github.com/user-attachments/assets/f7973fe3-dd8a-4643-9536-53e63db1f6fe">
<h3 align="center">๐Ÿงญ ์„ ๋”ฐ๋ผ ๊ธธ๋”ฐ๋ผ ๐Ÿงญ</h3>
<h4 align="center">์ค‘์žฅ๋…„์ธต์„ ์œ„ํ•œ ์ ‘๊ทผ์„ฑ์„ ๋ฐ”ํƒ•์œผ๋กœ ํ•œ ์œ„์น˜ ๊ธฐ๋ฐ˜ ์„œ๋น„์Šค</h4>
</div>


<div align="center">
<br />

## ๐Ÿ‘ฉโ€๐Ÿ’ป ํŒ€ ์†Œ๊ฐœ

<img width="200" src="https://github.com/user-attachments/assets/ab367ecb-be89-4076-abdf-bf00bdc29a4f" />
<div>(๋”ฐ๋ผํ•‘)</div>

### ์•ˆ๋…•ํ•˜์„ธ์š”, ํŒ€ "๋”ฐ๋ผ๋”ฐ๋ผ" ์ž…๋‹ˆ๋‹ค!

<br />

## ๐Ÿ— ๋งํฌ ์•ˆ๋‚ด

<p>
<a href="https://www.notion.so/127b1b2b649180e88f70d6a4648924a0?pvs=4">ํŒ€ ๋…ธ์…˜</a> |
<a href="https://github.com/boostcampwm-2024/web28-DDara/wiki">ํŒ€ ์œ„ํ‚ค</a> |
<a href="https://www.figma.com/design/r9nl4Jcz9VXIMbrpf50wY6/PickMeUp?node-id=90-1897">๊ธฐํš์„œ</a> |
<a href="https://www.figma.com/design/r9nl4Jcz9VXIMbrpf50wY6/PickMeUp?node-id=87-929">๋””์ž์ธ</a>
<!-- <br />
<a href="https://www.notion.so/127b1b2b6491805b9055d480ab56e432?v=ee8c766f016148d7bfd6c6f49d782b10&pvs=4">ํšŒ์˜๋ก</a> |
<a href="https://www.notion.so/129b1b2b649180ef8ad6f356251f2dec?pvs=4">๊ทธ๋ผ์šด๋“œ ๋ฃฐ</a> |
<a href="https://www.notion.so/812667c55af84dba8d18f4902b56a85e?pvs=4">๊ธฐ๋Šฅ ๋ช…์„ธ</a> -->
</p>

</div>

<div align="center">
<br /><br /><br />



## ๐ŸŒฑ ํŒ€์› ์†Œ๊ฐœ

|J060_๊น€์ฃผ์›|J174_์ด๋™์œจ|J210_์ž„์žฌ๋„|J234_์ •ํ˜œ์ธ|
|:--:|:--:|:--:|:--:|
|<a href="https://github.com/juwon5272"><img src="https://github.com/user-attachments/assets/f774ff48-8831-490f-b0fe-b18b024f7916" width="150px;" alt=""/></a>|<a href="https://github.com/leedongyull"><img src="https://github.com/user-attachments/assets/4d682b1f-0f91-4547-8a7d-1f6b00bee674" width="150px;" alt=""/></a>|<a href="https://github.com/effozen"><img src="https://github.com/user-attachments/assets/92bddae1-19ce-4b06-811e-52df15ac726c" width="150px;" alt=""/></a>|<a href="https://github.com/happyhyep"><img src="https://github.com/user-attachments/assets/40ac933c-3e19-4884-a5e9-da2f2298dd72" width="150px;" alt=""/></a>|
|FE|FE|FE|Full Stack (FE + BE)|
|<a href="https://github.com/juwon5272">@juwon5272</a>|<a href="https://github.com/leedongyull">@leedongyull</a>|<a href="https://github.com/effozen">@effozen</a>|<a href="https://github.com/happyhyep">@happyhyep</a>|

<br />

## โ› ๊ธฐ์ˆ  ์Šคํƒ

์ถ”ํ›„ ์ถ”๊ฐ€ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

<!--
## ๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ ํ˜‘์—… ์ „๋žต
## ๐Ÿ‘‚ ๊ทธ๋ผ์šด๋“œ ๋ฃฐ
-->
</div>
33 changes: 33 additions & 0 deletions docs/docusaurus/dev_log/authors.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
zen:
name: ์ž„์žฌ๋„
title: J210
url: https://fantasmith.com
image_url: https://github.com/effozen.png
socials:
x: EffoZen
github: effozen
linkedin: effozen

leedongyull:
name: ์ด๋™์œจ
title: J174
url: https://github.com/leedongyull
image_url: https://github.com/leedongyull.png
socials:
github: leedongyull

juwon5272:
name: ๊น€์ฃผ์›
title: J060
url: https://github.com/juwon5272
image_url: https://github.com/juwon5272.png
socials:
github: juwon5272

happyhyep:
name: ์ •ํ˜œ์ธ
title: J234
url: https://github.com/happyhyep
image_url: https://github.com/happyhyep.png
socials:
github: happyhyep
127 changes: 127 additions & 0 deletions docs/docusaurus/dev_log/intro.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
---
slug: ground_rule
title: โš–๏ธ Ground Rule
tags: [teamInfo]
sidebar_position: 2
sidebar_label: โš–๏ธ ๊ทธ๋ผ์šด๋“œ ๋ฃฐ
keywords: ['members', 'team', 'ํŒ€์›', '์†Œ๊ฐœ']
pagination_label: Markdown features
authors: [zen]
last_update:
date: 2024-10-30
authors: [zen]
---

<br/>

> ์šฐ๋ฆฌ๋“ค์˜ ๊ณตํ†ต ๋ชฉํ‘œ์™€ ๊ทธ์— ๋”ฐ๋ฅธ ํ–‰๋™ ๊ฐ•๋ น์ž…๋‹ˆ๋‹ค.
ํŒ€์˜ ๋ชจ๋“  ์˜์‚ฌ๊ฒฐ์ •์€ ๊ทธ๋ผ์šด๋“œ ๋ฃฐ์— ์ž…๊ฐํ•ด์„œ ํŒ๋‹จํ•ฉ๋‹ˆ๋‹ค.
>

## โ“ ์ œ 1 ์›์น™

### โ“ย No Dummy Qeustion!

- ์„ธ์ƒ์— ๋ฐ”๋ณด๊ฐ™์€ ์งˆ๋ฌธ์€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ ํƒœ๋„์— ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ๋ฟ.
- ์ €ํฌ๋Š” ์ ˆ๋Œ€ ๊ทธ ์–ด๋– ํ•œ ์งˆ๋ฌธ์—๋„ ๋น„์›ƒ์Œ, ์กฐ์†Œ ๋“ฑ์„ ํ‘œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค..!
- ์–ด๋– ํ•œ ์งˆ๋ฌธ์—๋„ ์ตœ์„ ์˜ ๋‹ต์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
- ๋ฐ˜๋Œ€๋กœ, ์งˆ๋ฌธ์ž๋Š” ๋ฐ˜๋“œ์‹œ ์งˆ๋ฌธํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๊ทผ๊ฑฐ๋ฅผ ๋งˆ๋ จํ•œ ์ƒํƒœ๋กœ ์งˆ๋ฌธํ•ฉ๋‹ˆ๋‹ค.
- ์ƒํ˜ธ ์˜ˆ์˜๋ฅผ ์กด์ค‘ํ•ฉ๋‹ˆ๋‹ค.

<br/><br/>

## ๐Ÿ“ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ๊ณตํ†ต์˜ ๋ชฉํ‘œ

### ๐Ÿš€ย ํฌํŠธํด๋ฆฌ์˜ค์— ์“ธ ์ˆ˜ ์žˆ๋Š” ์‹ค์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ์„œ๋น„์Šค

- **ํฌํŠธํด๋ฆฌ์˜ค์— ๋‹ด์„ ๊ฐ€์น˜ ์žˆ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐœ๋ฐœ**: ๋ชจ๋“  ํŒ€์›์€ ํฌํŠธํด๋ฆฌ์˜ค๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์™„์„ฑ๋„ ๋†’์€ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ชฉํ‘œ๋กœ ํ•œ๋‹ค.
- **์‹ค์‚ฌ์šฉ์ž์—๊ฒŒ ์˜๋ฏธ ์žˆ๋Š” ์„œ๋น„์Šค**: ํ”„๋กœ์ ํŠธ๋Š” ์‹ค์ œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด์•ผ ํ•œ๋‹ค. ์žฌ๋ฏธ๋ฅผ ์œ„ํ•œ ํ”„๋กœ์ ํŠธ์ผ์ง€๋ผ๋„, ๋ช…ํ™•ํ•œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜(UX)์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ด์•ผ ํ•จ.
- **์œ ์ง€๋ณด์ˆ˜ ๊ฐ€๋Šฅ์„ฑ**: ํ”„๋กœ์ ํŠธ๋Š” ์ง€์†์ ์œผ๋กœ ์œ ์ง€๋ณด์ˆ˜๋  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„ํ•˜๋ฉฐ, ์ตœ์†Œ 1๋…„๊ฐ„ ์œ ์ง€๋ณด์ˆ˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ณ„ํš์„ ์„ธ์šด๋‹ค.

<br/><br/>


## ๐Ÿ“ ๊ธฐ์ˆ ์ ์ธ ๋ชฉํ‘œ

- ์ถ”ํ›„ ์ฃผ์ œ๊ฐ€ ์ •ํ•ด์ง€๋ฉด ๋„์ž…

<br/><br/>

## ๐Ÿ“ ํŒ€ ๋ฌธํ™”

### ๐Ÿ˜†ย ์‹ฑ๊ธ€๋ฒ™๊ธ€ ํ•˜ํ•˜ํ˜ธํ˜ธ ์šฐ๋ฆฌ๋“ค

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

<br/><br/>

## ๐Ÿ“ ํ˜‘์—… ๋ฐ ์˜์‚ฌ์†Œํ†ต ๊ทœ์น™

### ๐Ÿ’ฌย ์žฆ์€ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์„ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

- **์Šฌ๋ž™ ๋ฐ ํ˜‘์—… ๋„๊ตฌ ํ™œ์šฉ**: ์Šฌ๋ž™์„ ๊ธฐ๋ณธ ์†Œํ†ต ๋„๊ตฌ๋กœ ์‚ฌ์šฉํ•˜๋ฉฐ, ๋ฉ”์‹œ์ง€๋ฅผ ์ฝ์—ˆ์„ ๋•Œ๋Š” **์ด๋ชจ์ง€ ๋Œ€์‹  ๋ช…ํ™•ํ•œ ๋‹ต๋ณ€**์„ ๋‚จ๊ฒจ ์†Œํ†ต์˜ ๋ช…ํ™•์„ฑ์„ ์œ ์ง€ํ•œ๋‹ค.
- **์‹ค์‹œ๊ฐ„ ํ˜‘์—… ๋„๊ตฌ ์‚ฌ์šฉ**: ์‹ค์‹œ๊ฐ„ ์†Œํ†ต์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ, `Zep` ์„ ์‚ฌ์šฉํ•ด ๋น„๋Œ€๋ฉด ์ƒํ™ฉ์—์„œ๋„ **์‹ค์‹œ๊ฐ„ ํ”ผ๋“œ๋ฐฑ๊ณผ ์†Œํ†ต**์ด ์ด๋ฃจ์–ด์ง€๋„๋ก ํ•œ๋‹ค.
- **์ฝ”์–ด ํƒ€์ž„ ์ค€์ˆ˜**: ๋งค์ผ 10์‹œ๋ถ€ํ„ฐ 7์‹œ๊นŒ์ง€ ์ฝ”์–ด ํƒ€์ž„์„ ์šด์˜ํ•˜๋ฉฐ, ์ด ์‹œ๊ฐ„ ๋™์•ˆ์—๋Š” ์ง‘์ค‘์ ์œผ๋กœ ํ”„๋กœ์ ํŠธ์— ์ฐธ์—ฌํ•˜๊ณ  ๋น ๋ฅธ ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•œ๋‹ค. ์ฝ”์–ด ํƒ€์ž„ ์™ธ์—๋Š” ์ž์œจ์ ์œผ๋กœ ํ™œ๋™ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ธด๊ธ‰ํ•œ ์ƒํ™ฉ์—์„œ๋Š” `Zep`, `์Šฌ๋ž™`์„ ํ†ตํ•ด ์ฆ‰๊ฐ์ ์ธ ์†Œํ†ต์ด ์ด๋ฃจ์–ด์ ธ์•ผ ํ•œ๋‹ค.
- **์‹ ๋ขฐ**: ์ฃผ๋ณ€์˜ ๋ฐ˜์‘ ๋ฐ ์ƒ๊ฐ์— ํ”๋“ค๋ฆฌ์ง€ ๋ง๊ณ , ํŒ€์ด ๊ฒฐ์ •ํ•œ ๋‚ด์šฉ์„ ์ „์ ์œผ๋กœ ์‹ ๋ขฐํ•œ๋‹ค.


<br/><br/>

## ๐Ÿ“ ์˜์‚ฌ๊ฒฐ์ • ๋ฐฉ์‹

### ๐Ÿคย ํŒ€ ์ „์ฒด๊ฐ€ ๋™์˜ํ•˜๋Š” ์˜์‚ฌ๊ฒฐ์ •

- **์˜์‚ฌ๊ฒฐ์ •์€ ํŒ€ ์ „์ฒด๊ฐ€ ์ฐธ์—ฌ**: ์ฃผ์š” ๊ฒฐ์ •์€ ํŒ€์› ๋ชจ๋‘๊ฐ€ ๋…ผ์˜ํ•˜๋ฉฐ, GitHub Issue๋ฅผ ํ†ตํ•ด ์ •๋ฆฌ๋œ ๋ฌธ์ œ์ ๊ณผ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ์„ ๊ณต์œ ํ•œ ํ›„, ์ถฉ๋ถ„ํ•œ ๊ทผ๊ฑฐ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๊ฒฐ์ •ํ•œ๋‹ค.
- **๋ฐ์ผ๋ฆฌ ์Šคํฌ๋Ÿผ**: ๋งค์ผ ์•„์นจ **๋ฐ์ผ๋ฆฌ ์Šคํฌ๋Ÿผ**์„ ํ†ตํ•ด ๊ฐ์ž์˜ ์ž‘์—… ์ง„ํ–‰ ์ƒํ™ฉ์„ ๊ณต์œ ํ•˜๊ณ , ๋ฌธ์ œ์  ๋ฐ ํ•ด๊ฒฐ์ฑ…์„ ๋…ผ์˜ํ•œ๋‹ค.
- **๊ธด๊ธ‰ ์˜์‚ฌ๊ฒฐ์ •**: ํ•„์š”์‹œ `Zep` ๋˜๋Š” `์Šฌ๋ž™` ์–ธ๊ธ‰์„ ํ†ตํ•ด ํŒ€์›๋“ค์„ ์†Œ์ง‘ํ•ด **๊ธด๊ธ‰ ์˜์‚ฌ๊ฒฐ์ •**์„ ๋น ๋ฅด๊ฒŒ ๋‚ด๋ฆฐ๋‹ค.
- **๋‚ด ๋ง์ข€ ๋“ค์–ด์ค˜ ์นด๋“œ!:** ๊ฐ์ž 2 ์žฅ์˜ ์นด๋“œ๊ฐ€ ๋ถ€์—ฌ๋˜๋ฉฐ, ์„œ๋กœ๊ฐ€ ๋‚ฉ๋“ํ• ๋งŒํ•œ ์ˆ˜์ค€์—์„œ ์˜๊ฒฌ์ด ๋Œ€๋ฆฝ๋  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ์‚ฌ์šฉํ•œ ์‚ฌ๋žŒ์˜ ์˜๊ฒฌ์„ ๋ฌด์กฐ๊ฑด์ ์œผ๋กœ ์ˆ˜์šฉํ•œ๋‹ค. (โ€์„œ๋กœ๊ฐ€ ๋‚ฉ๋“ ๊ฐ€๋Šฅํ•œ ์ƒ์‹์„ โ€์ด๋ผ๋Š” ์ „์ œ)

<br/><br/>

## ๐Ÿ“ ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ ์›์น™

### ๐Ÿ˜‡ย ์‚ฌ์šฉ์ž ๊ฒฝํ—˜(UX) ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ

- **์‚ฌ์šฉ์ž ๊ฒฝํ—˜(UX) ์ค‘์‹ฌ ๊ฐœ๋ฐœ**: ๊ธฐ์ˆ ์ ์ธ ์™„์„ฑ๋„๋ฟ๋งŒ ์•„๋‹ˆ๋ผ **์‚ฌ์šฉ์ž์˜ ๊ด€์ ์—์„œ ์„œ๋น„์Šค์˜ ์œ ์šฉ์„ฑ**์„ ๊ณ ๋ คํ•œ๋‹ค. ๊ธฐ๋Šฅ์ด ์ž˜ ๋™์ž‘ํ•  ๋ฟ ์•„๋‹ˆ๋ผ, ์‚ฌ์šฉ์ž๊ฐ€ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
- **์ž‘์—… ๊ณต์œ  ๋ฐ ๋ฌธ์„œํ™”**: ๋ชจ๋“  ์ž‘์—…์€ ๋ช…ํ™•ํžˆ ๊ณต์œ ๋˜์–ด์•ผ ํ•˜๋ฉฐ, **GitHub Issue**์™€ **๋…ธ์…˜**์„ ํ†ตํ•ด ์ง„ํ–‰ ์ƒํ™ฉ๊ณผ ๋ฌธ์ œ์ ์„ ๊ธฐ๋กํ•œ๋‹ค. ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…, ๋ฐฐ์šด ๊ธฐ์ˆ , ์ด์Šˆ ๋“ฑ์„ ๊ผผ๊ผผํžˆ ๋ฌธ์„œํ™”ํ•ด ํ”„๋กœ์ ํŠธ์˜ ์ „์ฒด ์ง„ํ–‰์„ ๊ธฐ๋กํ•œ๋‹ค.

<br/><br/>

## ๐Ÿ“ ์ž‘์—… ๋ถ„๋ฐฐ ๋ฐ ๊ธฐ๋ก ๊ด€๋ฆฌ

### ๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘ย ๋ถ„์—…์ด ์•„๋‹Œ ํ˜‘์—…

- **์ž‘์—… ๊ธฐ๋ก ๊ด€๋ฆฌ**: ๋ชจ๋“  ์ž‘์—…์€ ๋…ธ์…˜๊ณผ GitHub Pull Request, Issue ๋“ฑ์„ ํ†ตํ•ด **ํˆฌ๋ช…ํ•˜๊ฒŒ ๊ด€๋ฆฌ**๋œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ์˜ ์ง„ํ–‰ ์ƒํ™ฉ์„ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•˜๊ณ , ์ž‘์—…์˜ ํ๋ฆ„์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.
- **์Šคํ”„๋ฆฐํŠธ ๋ฐฉ์‹ ๋„์ž…**: ์ฝ”์–ด ํƒ€์ž„ ๋‚ด์—์„œ ์ฃผ์–ด์ง„ ์ž‘์—…์„ ๋งˆ๋ฌด๋ฆฌํ•˜๊ณ , **์ฃผ ๋‹จ์œ„๋กœ ๋ชฉํ‘œ๋ฅผ ์„ค์ •ํ•ด ๋‹ฌ์„ฑ ์—ฌ๋ถ€๋ฅผ ํ™•์ธ**ํ•œ๋‹ค. ์Šคํ”„๋ฆฐํŠธ ์ข…๋ฃŒ ํ›„ ํšŒ๊ณ ๋ฅผ ์ง„ํ–‰ํ•ด ๋‹ค์Œ ์Šคํ”„๋ฆฐํŠธ์— ๋ฐ˜์˜ํ•  ๊ฐœ์„ ์ ์„ ๋„์ถœํ•œ๋‹ค.

<br/><br/>

## ๐Ÿ“ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋ฐ PR ๊ทœ์น™

### ๐Ÿง‘โ€๐Ÿ’ปย 4๋ช…์˜ PR Approve ๋ฐ ์ตœ์†Œ ์ฃผ 2ํšŒ์˜ ์ฝ”๋“œ ๋ฆฌ๋ทฐ

- **์ตœ์†Œ ์ฃผ 2ํšŒ์˜ ์ปจ๋ฒค์…˜ ๋ฐ ๋งฅ๋ฝ ํŒŒ์•… ๋ชฉ์ ์˜ ์ฝ”๋“œ ๋ฆฌ๋ทฐ**: ํŒ€์›๋“ค์ด ์„œ๋กœ์˜ ์ฝ”๋“œ๋ฅผ ๋ฆฌ๋ทฐํ•˜๋ฉฐ, ์ฝ”๋“œ์˜ ํ’ˆ์งˆ๋„ ์ค‘์š”ํ•˜์ง€๋งŒ, ์ด๋•Œ์˜ ํ•ต์‹ฌ์€ ์šฐ๋ฆฌ์˜ ์ปจ๋ฒค์…˜์„ ์„œ๋กœ ์–ผ๋งˆ๋‚˜ ์ž˜ ์ง€ํ‚ค๊ณ  ์žˆ๋Š”์ง€ ์ด๋‹ค.. ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋Š” ํŒ€์›์˜ ์„ฑ์žฅ๋ฟ ์•„๋‹ˆ๋ผ, **์„œ๋กœ์˜ ์ž‘์—…์„ ์ดํ•ดํ•˜๊ณ  ์†Œํ†ตํ•˜๋Š” ๊ณผ์ •**์œผ๋กœ ์‚ผ๋Š”๋‹ค. ์ฆ‰, ๊ฐ์ž์˜ ๊ฐœ๋ฐœ ๋งฅ๋ฝ์„ ํŒŒ์•…ํ•˜๋Š” ๋ชฉ์ ์„ ์ฃผ๋กœ ํ•œ๋‹ค.
- **PR ์Šน์ธ ๊ทœ์น™**: 4๋ช… ๋ชจ๋‘์˜ **PR ์Šน์ธ**์ด ์žˆ์–ด์•ผ๋งŒ ๊ธฐ๋Šฅ์„ ๋จธ์ง€ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ชจ๋“  ํŒ€์›์ด ํ•ด๋‹น ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ถฉ๋ถ„ํ•œ ์ดํ•ด๋ฅผ ๊ฐ–์ถœ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
- **์ž‘์—…์˜ ํˆฌ๋ช…์„ฑ ์œ ์ง€**: ์ฝ”๋“œ ๋ฆฌ๋ทฐ์™€ PR์„ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ์ง„ํ–‰์ด ํˆฌ๋ช…ํ•˜๊ฒŒ ๊ณต์œ ๋˜๋ฉฐ, ์ด๋Š” ํŒ€์› ๊ฐ„์˜ ์‹ ๋ขฐ๋ฅผ ๊ฐ•ํ™”ํ•˜๋Š” ์ค‘์š”ํ•œ ์š”์†Œ๋กœ ์ž‘์šฉํ•œ๋‹ค.
- **๋ฐ์ผ๋ฆฌ ์Šคํฌ๋Ÿผ์˜ ํ™œ์šฉ:** ์ด์Šˆ๋‚˜, ์ฝ”๋“œ ๊ณต์œ  ๋“ฑ์€ ๋ฐ์ผ๋ฆฌ ์Šคํฌ๋Ÿผ ์‹œ๊ฐ„์— ๋”ํ•˜์—ฌ, ์•„์นจ์— ์†Œํ†ตํ•˜๋„๋ก ํ•œ๋‹ค.

<br/><br/>

## ๐Ÿ“ ํ”„๋กœ์ ํŠธ ํšŒ๊ณ 

### ๐ŸŽจย Figma, Miro ๋“ฑ์„ ์ด์šฉํ•œ ์‹œ๊ฐ์ ์ธ ํšŒ๊ณ 

- **ํšŒ๊ณ  ๋ฐฉ์‹**: ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ ์ค‘ **KPT(Keep, Problem, Try) ๋ฐฉ์‹**์œผ๋กœ ์ฃผ๊ธฐ์ ์ธ ํšŒ๊ณ ๋ฅผ ์ง„ํ–‰ํ•ด, ์ž˜ํ•œ ๋ถ€๋ถ„๊ณผ ๊ฐœ์„ ํ•  ์ ์„ ๋ถ„์„ํ•˜๊ณ  ๋‹ค์Œ ์Šคํ”„๋ฆฐํŠธ์— ๋ฐ˜์˜ํ•œ๋‹ค. ํ”ผ๋“œ๋ฐฑ์€ GitHub ๋˜๋Š” ํ”ผ๊ทธ๋งˆ ๋“ฑ์„ ํ™œ์šฉํ•ด ์‹œ๊ฐ์ ์œผ๋กœ ์ •๋ฆฌํ•œ๋‹ค.
- **๊ฒฐ๊ณผ ๊ธฐ๋ก**: ํšŒ๊ณ  ๋‚ด์šฉ๊ณผ ํ•จ๊ป˜ ํ”„๋กœ์ ํŠธ ๊ณผ์ •์—์„œ์˜ ๋ฌธ์ œ์ ๊ณผ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ์„ ๊ธฐ๋กํ•˜์—ฌ **ํฌํŠธํด๋ฆฌ์˜ค์—์„œ ํ™œ์šฉ**ํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ๋กœ ๋‚จ๊ธด๋‹ค.

<br/><br/>

## ๐Ÿ“ ๊ธด๊ธ‰ ์ƒํ™ฉ ๋Œ€์‘

### ๐Ÿ‘€ ย โ€์ด์˜์žˆ์†Œ!โ€

- **TMT, TMI ๋ฐฉ์ง€ ์นด๋“œ**: ๊ฐ ํŒ€์›์€ ํ•„์š”์‹œ ์–ธ์ œ๋“ ์ง€ **"๋‚˜ ํž˜๋“ค๋‹ค ์นด๋“œ"**๋ฅผ ์‚ฌ์šฉํ•ด TMT, TMI๋ฅผ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ, ๐Ÿ˜ช, ๐Ÿ˜ดย ์™€ ๊ฐ™์€ ์ด๋ชจ์ง€๋‚˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด์„œ ์•Œ๋ฆฐ๋‹ค.
- **์Šคํ†ฑ ์นด๋“œ**: ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ํ•™์Šต์ด๋‚˜, ๊ตฌํ˜„์ด ์š”๊ตฌ์‚ฌํ•ญ์„ ๋„˜์–ด์„œ ๋„ˆ๋ฌด ๊นŠ์–ด์งˆ ๊ฒฝ์šฐ **"์Šคํ†ฑ ์นด๋“œ"**๋ฅผ ์‚ฌ์šฉํ•ด ์ค‘๋‹จ์‹œํ‚ค๊ณ , ๋ณธ๋ž˜ ํ•ด์•ผํ•˜๋Š” ์—…๋ฌด์— ์ง‘์ค‘์‹œํ‚จ๋‹ค. ์ด๋Š” PR ๋ฆฌ๋ทฐ๋ฅผ ํ•˜๋ฉด์„œ๋“ , ์–ธ์ œ๋“ ์ง€ ์ž์œ ๋กญ๊ฒŒ ์ œ์•ˆํ•  ์ˆ˜ ์žˆ๋‹ค.
Loading

0 comments on commit 6bf7474

Please sign in to comment.