Skip to content

Commit

Permalink
Merge pull request #8 from InSeong-So/main
Browse files Browse the repository at this point in the history
ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ ์ค€๋น„
  • Loading branch information
InSeong-So authored Mar 13, 2022
2 parents c1e40fb + 36b531f commit 0200175
Show file tree
Hide file tree
Showing 16 changed files with 656 additions and 71 deletions.
16 changes: 16 additions & 0 deletions .github/ISSUE_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
## ๐Ÿ”Ž ๊ฐœ์š”

-

<br/>

## ๐Ÿ“ ์ง„ํ–‰์ƒํ™ฉ

- [ ]
- [ ]

<br/>

## ๐Ÿ’ฌ ์˜๊ฒฌ <!-- PR ๊ด€๋ จ ์ฝ”๋ฉ˜ํŠธ, ๊ด€๋ จ ์ด์Šˆ, ํ† ์˜ ๋ฐ ๊ณต์œ ํ•  ๋‚ด์šฉ -->

-
20 changes: 20 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
## ๐Ÿ”Ž ๊ฐœ์š”

- closed #

-

<br/>

## ๐Ÿ“ ์ง„ํ–‰์ƒํ™ฉ

- [ ]
- [ ]

<br/>

## ๐Ÿ–ผ ์Šคํฌ๋ฆฐ์ƒท

## ๐Ÿ’ฌ ์˜๊ฒฌ <!-- PR ๊ด€๋ จ ์ฝ”๋ฉ˜ํŠธ, ๊ด€๋ จ ์ด์Šˆ, ํ† ์˜ ๋ฐ ๊ณต์œ ํ•  ๋‚ด์šฉ -->

-
30 changes: 30 additions & 0 deletions .github/auto_assign.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Set to true to add reviewers to pull requests
addReviewers: true

# Set to true to add assignees to pull requests
addAssignees: author

# A list of reviewers to be added to pull requests (GitHub user name)
reviewers:
- inseong-so
- areumsheep
- parksil0
- wooooooood
- yechukim
- sunhwa508

# A number of reviewers added to the pull request
# Set 0 to add all the reviewers (default: 0)
numberOfReviewers: 0
# A list of assignees, overrides reviewers if set
# assignees:
# - assigneeA

# A number of assignees to add to the pull request
# Set to 0 to add all of the assignees.
# Uses numberOfReviewers if unset.
# numberOfAssignees: 2

# A list of keywords to be skipped the process that add reviewers if pull requests include it
# skipKeywords:
# - wip
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -102,3 +102,5 @@ dist

# TernJS port file
.tern-port

packages/api/db/user.db
311 changes: 306 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,308 @@
# ์„ค์น˜
# FrontEnd Crash - TypeScript!๐Ÿ”จ
> ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ฟŒ์…”๋ด…์‹œ๋‹ค!๐Ÿ˜‰
```sh
npm init -y
<br>

npm i -D typescript eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin eslint-config-prettier eslint-plugin-prettier prettier prettier-eslint
```
> ๋ฐฑ์—”๋“œ ์ถ”๊ฐ€ํ•  ๋‚ด์šฉ
> - ์ค‘๋ณต ์ด๋ฉ”์ผ ํ™•์ธ API
> - ์ค‘๋ณต ๋ถ๋งˆํฌ ํ™•์ธ API
<br>

## ๐Ÿ™‡๐ŸปINTRO๐Ÿ™‡๐Ÿปโ€โ™€๏ธ
ํ•ด๋‹น ์ €์žฅ์†Œ๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ๊ณต๋ถ€ํ•˜์ง€๋งŒ, ์ตœ๋Œ€ํ•œ ์ ์‘ํ•˜๊ธฐ ์‰ฝ๊ฒŒ ํ† ์ด ํ”„๋กœ์ ํŠธ ํ˜•์‹์œผ๋กœ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

1. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๊ธฐ์ดˆ๋ฅผ ๊ณต๋ถ€ํ•˜๊ณ  ํŒ€์›๋“ค๊ณผ ๊ณต์œ ํ•˜๋ฉฐ ๊ฐ์ž์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฆฌ๋ทฐํ•ฉ๋‹ˆ๋‹ค.
2. ์•Œ๊ฒŒ ๋œ ์ , ๊ณ ๋ฏผํ–ˆ๋˜ ์ , ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…์— ๋Œ€ํ•œ ๊ฒฝํ—˜์„ ์ด์•ผ๊ธฐํ•จ์œผ๋กœ์จ ๋ธŒ๋ ˆ์ธ ์Šคํ† ๋ฐ์„ ์ด๋Œ์–ด ๋ƒ…๋‹ˆ๋‹ค.
3. ๊ธฐ์ดˆ์™€ ํ•จ๊ป˜ ์ดํŽ™ํ‹ฐ๋ธŒํ•œ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ๋ฒ•์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•ฉ๋‹ˆ๋‹ค. ์•”๊ธฐํ•˜๊ฑฐ๋‚˜ ๋ฌด์ž‘์ • ๋ณต์‚ฌ/๋ถ™์—ฌ๋„ฃ๊ธฐ๋ฅผ ํ•˜์ง€ ์•Š๊ณ  ์Šคํ„ฐ๋””๋ฅผ ํ†ตํ•ด ์ฒด๋“ํ•˜๋„๋ก ๋…ธ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜์˜ `ํ•„์ˆ˜ ์š”๊ตฌ์‚ฌํ•ญ`์„ ์Šคํ„ฐ๋”” ๊ธฐ๊ฐ„ ๋‚ด์— ๋๋‚ด๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์š•์‹ฌ์ด ์žˆ๊ฑฐ๋‚˜ ์กฐ๊ธˆ ๋” ํ•ด๋ณด์ž๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค๋ฉด `์ถ”๊ฐ€ ๊ตฌํ˜„์‚ฌํ•ญ`, `๋” ํ•ด๋ณด๊ธฐ` ๋“ฑ์˜ ์ฑŒ๋ฆฐ์ง€๋ฅผ ์ง„ํ–‰ํ•ด๋ณด์„ธ์š”.

ํ˜„์žฌ ์ƒ˜ํ”Œ ํ”„๋กœ์ ํŠธ์˜ ํ”„๋ก ํŠธ์—”๋“œ๋Š” ์ผ๋ถ€๋Ÿฌ ๊ตฌ์กฐํ™”, ์ฑ…์ž„ ๋ถ„๋ฆฌ, ํด๋ฆฐ ์ฝ”๋“œ๋‚˜ ๋ฆฌํŒฉํ† ๋ง์˜ ๊ฐœ๋…์„ ์™„์ „ ๋ฐฐ์ œํ•˜๊ณ  ๋Ÿฌํ”„ํ•˜๊ฒŒ ์ž‘์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ ์šฉํ•˜๋ฉฐ ํ‹€์— ์–ฝ๋งค์ด์ง€ ์•Š๊ณ  ์ž์‹ ์˜ ์ฝ”๋“œ ์ž‘์„ฑ์„ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ œ๋Œ€๋กœ ์™„์„ฑํ•ด๋ณด์ฃ !

<br>

## ๐Ÿ’ชUSAGE๐Ÿ’ช
- ๊ฐ์ž ์ €์žฅ์†Œ๋ฅผ forkํ•ฉ๋‹ˆ๋‹ค.
- `packages/{์ž์‹ ์˜ ๋‹‰๋„ค์ž„}`์œผ๋กœ ํด๋”๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค(๋งŒ์•ฝ ์ƒˆ๋กœ ํ•˜๋Š” ๋ถ„์ด๋ผ๋ฉด ์ƒˆ๋กœ ์ƒ์„ฑํ•˜์„ธ์š”!).
- ๋ฐ˜๋“œ์‹œ ์ž์‹ ์˜ ํด๋”์—์„œ๋งŒ ์ž‘์—…ํ•ด์ฃผ์„ธ์š”.
- ์ž‘์—… ํ›„ PR์„ ๋ธŒ๋Ÿฐ์น˜๊ฐ€ ์•„๋‹ˆ๋ผ main์— ํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค๐Ÿ˜Š

<br>

## ๐Ÿ’ปINSTALL & RUN๐Ÿ’ป
- **Install**
```sh
npm install # or npm i
```

<br>

- **Run**

> โ›”๏ธ์ฐธ๊ณ โ›”๏ธ
> - ํ˜„์žฌ ์Šคํฌ๋ฆฝํŠธ๋กœ๋Š” ๋ฐฑ์—”๋“œ๋ž‘ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐ™์ด ๋ชป ๋Œ๋ฆฝ๋‹ˆ๋‹ค๐Ÿ˜ฅ ํ„ฐ๋ฏธ๋„์„ ๋‚˜๋ˆ ์„œ ๋ฐฑ์—”๋“œ/ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ๊ฐ™์ด ์‹คํ–‰์‹œ์ผœ์ฃผ์„ธ์š”... ์ตœ๋Œ€ํ•œ ๋น ๋ฅด๊ฒŒ ํ•ด๊ฒฐํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค๐Ÿ˜ญ
<br>

```sh
npm run start:api # backend: server
npm run start:{๋‹‰๋„ค์ž„} # frontend: client
```
- ex) `npm run start:parang`

<br>

- **Build**
```sh
npm run build
```

<br>

## ๐Ÿ‹๏ธโ€โ™‚๏ธREQUIREMENTS๐Ÿ‹๏ธโ€โ™€๏ธ
### โ˜‘๏ธ Necessary
- [ ] `*.js`ํŒŒ์ผ์„ `*.ts`๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
- [ ] any ํƒ€์ž…์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
- [ ] `type`๊ณผ `interface`์˜ ์ฐจ์ด๋ฅผ ์•Œ๊ณ  ์ž์‹ ๋งŒ์˜ ์ปจ๋ฒค์…˜์œผ๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
- [ ] UI์™€ ๊ธฐ๋Šฅ์„ ๋ถ„๋ฆฌ(MVC ์ ์šฉ์ด๋‚˜ ํด๋” ๊ตฌ์กฐํ™” ๋“ฑ)ํ•ฉ๋‹ˆ๋‹ค.

<br>

### ๐ŸŸฉ Additional
- [ ] API ๋ชจ๋“ˆ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
- [ ] ๋ฌดํ•œ ์Šคํฌ๋กค์„ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค.
- [ ] ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
- [ ] ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
- [ ] ํ”„๋กœํ•„ ํƒญ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

<br>

### ๐ŸŸจ Do more
- [ ] ํ”„๋ ˆ์ž„์›Œํฌ(React, Vue, Svelt)๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

<br>

## ๐Ÿ› TECH STACK๐Ÿ› 
### ๐Ÿ’ Frontend
<div>

<img src="./images/frontend.png" width="200"/>

</div>

<br>

### ๐Ÿ’ Backend
<div>

<img src="./images/backend.png" width="300"/>

</div>

<br>

### ๐Ÿ’ DevOps
<div>

<img src="./images/devops.png" width="400"/>

</div>

<br>

## ๐Ÿ“API๐Ÿ“
### baseUrl

`http://localhost:3000`

<br>

### Create User

| method | uri |
| ------ | --------- |
| POST | /api/user |

```js
{
requestBody: {
"email": "string",
"password": "string"
},
response: {
"_id": "string",
"email": "string",
"password": "boolean",
"bookmark": [
{
"_id": "string",
"url": "string",
},
]
}
}
```

<br>

### Login User

| method | uri |
| ------ | --------------- |
| POST | /api/user/login |

```js
{
requestBody: {
"email": "string",
"password": "string"
},
response: {
"_id": "string",
"email": "string",
"password": "boolean",
"bookmark": [
{
"_id": "string",
"url": "string",
},
]
}
}
```

<br>

### Find Bookmark List

| method | uri |
| ------ | ------------------ |
| POST | /api/user/bookmark |

```js
{
requestBody: {
"_id": "string",
},
response: [
{
"_id": "string",
"url": "string",
},
]
}
```

<br>

### Add Bookmark

| method | uri |
| ------ | ------------------------------ |
| POST | /api/user/bookmark/:bookmarkId |

```js
{
requestBody: {
"_id": "string",
},
response: {
"_id": "string",
"email": "string",
"password": "boolean",
"bookmark": [
{
"_id": "string",
"url": "string",
},
]
}
}
```

<br>

### Remove Bookmark

| method | uri |
| ------ | ------------------------------ |
| DELETE | /api/user/bookmark/:bookmarkId |

```js
{
requestBody: {
"_id": "string",
},
response: "number"
}
```

<br/>

## ๐Ÿ‘ฉโ€๐Ÿ’ปCONTRIBUTORS๐Ÿ‘จโ€๐Ÿ’ป

<table>
<tr height="140px">
<td align="center">
<a href="https://github.com/InSeong-So"><img height="100px" width="100px" src="https://avatars.githubusercontent.com/u/18283006?v=4"/></a>
<br />
<a href="https://github.com/InSeong-So">ํŒŒ๋ž‘ ๐Ÿ’ป</a>
</td>
<td align="center">
<a href="https://github.com/areumsheep"><img height="100px" width="100px" src="https://avatars.githubusercontent.com/u/48716298?v=4"/></a>
<br />
<a href="https://github.com/areumsheep">์กฐ์ด ๐Ÿ’ป</a>
</td>
<td align="center">
<a href="https://github.com/parksil0"><img height="100px" width="100px" src="https://avatars.githubusercontent.com/u/41149744?v=4"/></a>
<br />
<a href="https://github.com/parksil0">Seal ๐Ÿ’ป</a>
</td>
<td align="center">
<a href="https://github.com/wooooooood"><img height="100px" width="100px" src="https://avatars.githubusercontent.com/u/40855076?v=4"/></a>
<br />
<a href="https://github.com/wooooooood">๋‚˜๋ฌด ๐Ÿ’ป</a>
</td>
<td align="center">
<a href="https://github.com/yechukim"><img height="100px" width="100px" src="https://avatars.githubusercontent.com/u/61838900?v=4"/></a>
<br />
<a href="https://github.com/yechukim">์˜ˆ์ธ„ ๐Ÿ’ป</a>
</td>
<td align="center">
<a href="https://github.com/sunhwa508"><img height="100px" width="100px" src="https://avatars.githubusercontent.com/u/61695175?v=4"/></a>
<br />
<a href="https://github.com/sunhwa508">์ฝ˜์†” ๐Ÿ’ป</a>
</td>
</tr>
</table>

<br>

## โœ๏ธCONVENTIONโœ๏ธ

| ํƒœ๊ทธ | ์„ค๋ช… |
| --------------------- | ------------------------------------------------------------------------- |
| `โœ’๏ธFeat: ` | ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ๊ฒฝ์šฐ |
| `๐Ÿ› Fix: ` | ๋ฒ„๊ทธ๋ฅผ ๊ณ ์นœ ๊ฒฝ์šฐ |
| `โœ๏ธDesign: ` | CSS ๋“ฑ ์‚ฌ์šฉ์ž UI ๋””์ž์ธ ๋ณ€๊ฒฝ |
| `โ—๏ธโ™ป๏ธBREAKING CHANGE: ` | ์ปค๋‹ค๋ž€ API ๋ณ€๊ฒฝ์˜ ๊ฒฝ์šฐ |
| `โ—๏ธโœ”๏ธHOTFIX: ` | ๊ธ‰ํ•˜๊ฒŒ ์น˜๋ช…์ ์ธ ๋ฒ„๊ทธ๋ฅผ ๊ณ ์ณ์•ผํ•˜๋Š” ๊ฒฝ์šฐ |
| `๐ŸŽ†Style: ` | ์ฝ”๋“œ ํฌ๋งท ๋ณ€๊ฒฝ, ์„ธ๋ฏธ ์ฝœ๋ก  ๋ˆ„๋ฝ, ์ฝ”๋“œ ์ˆ˜์ •์ด ์—†๋Š” ๊ฒฝ์šฐ |
| `๐Ÿ—ƒRefactor: ` | ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง |
| `๐Ÿ’ฌComment: ` | ํ•„์š”ํ•œ ์ฃผ์„ ์ถ”๊ฐ€ ๋ฐ ๋ณ€๊ฒฝ |
| `๐Ÿ“Docs: ` | ๋ฌธ์„œ๋ฅผ ์ˆ˜์ •ํ•œ ๊ฒฝ์šฐ |
| `๐ŸงชTest: ` | ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€, ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง(ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ ๋ณ€๊ฒฝ X) |
| `๐Ÿ”ฌChore: ` | ๋นŒ๋“œ ํƒœ์ŠคํŠธ ์—…๋ฐ์ดํŠธ, ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒฝ์šฐ(ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ ๋ณ€๊ฒฝ X) |
| `โœ‚๏ธRename: ` | ํŒŒ์ผ ํ˜น์€ ํด๋”๋ช…์„ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์˜ฎ๊ธฐ๋Š” ์ž‘์—…๋งŒ์ธ ๊ฒฝ์šฐ |
| `๐ŸงบRemove: ` | ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๋Š” ์ž‘์—…๋งŒ ์ˆ˜ํ–‰ํ•œ ๊ฒฝ์šฐ |

<br>

## ๐Ÿ“œLICENSE๐Ÿ“œ

- [MIT](https://opensource.org/licenses/MIT)

<br>
Binary file added images/backend.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/devops.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/frontend.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit 0200175

Please sign in to comment.