An open API service indexing awesome lists of open source software.

https://github.com/team-withme/withme_fe

๐Ÿ“š WithMe ํ”„๋ก ํŠธ์—”๋“œ ๋ ˆํฌ์ง€ํ† ๋ฆฌ
https://github.com/team-withme/withme_fe

emotion nextjs react redux redux-toolkit typescript

Last synced: 3 months ago
JSON representation

๐Ÿ“š WithMe ํ”„๋ก ํŠธ์—”๋“œ ๋ ˆํฌ์ง€ํ† ๋ฆฌ

Awesome Lists containing this project

README

          







---


## ๐Ÿ“š With Me FE

**์œ„๋“œ๋ฏธ (With Me)** ์Šคํ„ฐ๋”” ๋งค์นญ ์„œ๋น„์Šค ์ž…๋‹ˆ๋‹ค.



## ๐Ÿ—„ Links

- WithMe ๋””์ž์ธ ์‹œ์Šคํ…œ npm
- WithMe ์Šคํ† ๋ฆฌ๋ถ ๋””์ž์ธ ์‹œ์Šคํ…œ ๊ฐ€์ด๋“œ
- WithMe ๋ฐฑ์—”๋“œ ๋ ˆํฌ์ง€ํ† ๋ฆฌ


## ๐Ÿช„ eslint plugin

- eslint-plugin-sort-keys-custom-order: type๊ณผ object์˜ ํ‚ค๋ฅผ ์ž๋™์œผ๋กœ ์ •๋ ฌ ํ•ด์ฃผ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ
- eslint-plugin-simple-import-sort: import/export๋ฅผ ์ž๋™์œผ๋กœ ์ •๋ ฌํ•ด์ฃผ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ
- eslint-plugin-import: eslint-plugin-simple-import-sort์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋Šฅ ํ™•์žฅ
- eslint-plugin-unused-imports: ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ๋ˆ„๋ฝ ๋œ ๊ฒƒ์„ ์ž๋™์œผ๋กœ ์ถ”๊ฐ€ํ•˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ


## ๐Ÿ‘จโ€๐Ÿ’ป Member

| [LeeBonHoon](https://github.com/LeeBonHoon) | [changyuyeo](https://github.com/changyuyeo) | [KimTeaSick](https://github.com/KimTeaSick) |
| :-------------------------------------------------------------------------------: | :------------------------------------------------------------------------------: | :------------------------------------------------------------------------------: |
| | | |

- `Lee-bonhoon`: ๋ฉ”์ธ ํŽ˜์ด์ง€, ํŒ€ ๋ฆฌ์ŠคํŠธ
- `changyuyeo`: ํ˜ธ์ŠคํŠธ ํŽ˜์ด์ง€, ์ƒ์„ธ ํŽ˜์ด์ง€
- `KimTeaSick`: ๋งˆ์ด ํŽ˜์ด์ง€




ย ๐Ÿ—‚ Branches

## ๐Ÿ—‚ branches

๊ฐ์ž ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—…, ์ž‘์—…์ด ์™„๋ฃŒ ๋˜์—ˆ๋‹ค๋ฉด master๋ธŒ๋žœ์น˜์— PR ํ›„ merge ์š”์ฒญ

merge๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด `๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž์—๊ฒŒ pull ์š”์ฒญํ•˜๊ธฐ`

master ๋ธŒ๋žœ์น˜๊ฐ€ ์—…๋ฐ์ดํŠธ ๋˜๋ฉด ํ•ญ์ƒ pull ๋ฐ›์•„์ค˜์•ผ ์ถฉ๋Œ์ด ๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค!

```
// ์ƒˆ ๋ธŒ๋žœ์น˜ ๋งŒ๋“ค๊ธฐ
git checkout -b "์ƒˆ ๋ธŒ๋žœ์น˜ ์ด๋ฆ„"

// ๋ธŒ๋žœ์น˜ ์ด๋™
git checkout "๋ธŒ๋žœ์น˜ ์ด๋ฆ„"
```


ย ๐Ÿช Hooks

### ๐Ÿช Hooks

### useModal ์‚ฌ์šฉ๋ฒ•

```tsx
import { FC } from 'react';
import useModal from '@hooks/useModal';

//* ๋ชจ๋‹ฌ์ฐฝ ์•ˆ์— ๋“ค์–ด๊ฐˆ ์ปจํ…์ธ 
const TestModal: FC<{ onCloseModal: () => void }> = ({ onCloseModal }) => (


๋ชจ๋‹ฌ ๋‚ด์šฉ...
๋ชจ๋‹ฌ์ฐฝ ๋‹ซ๊ธฐ

);

const HostPage = () => {
//* useModal ์‚ฌ์šฉ
//* ModalPortal: root-modal ์ด๋ผ๋Š” id์— ๋ชจ๋‹ฌ ๋žœ๋”๋ง (children ์œผ๋กœ ๋ชจ๋‹ฌ ์ปดํฌ๋„ŒํŠธ ๋งŒ๋“ค์–ด์„œ ๋„ฃ์–ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.)
//* onCloseModal: ๋ชจ๋‹ฌ์ฐฝ ์˜คํ”ˆ ์ด๋ฒคํŠธ
//* onOpenModal: ๋ชจ๋‹ฌ์ฐฝ ๋‹ซ๋Š” ์ด๋ฒคํŠธ
const { ModalPortal, onCloseModal, onOpenModal } = useModal();

return (
<>
๋ชจ๋‹ฌ์ฐฝ ์—ด๊ธฐ



>
);
};

export default HostPage;
```

- `useModal`์„ ์‚ฌ์šฉํ•ด ModalPortal, onCloseModal, onOpenModal์„ ์‚ฌ์šฉํ•ด์„œ ๋ชจ๋‹ฌ์ฐฝ์„ ๊ด€๋ฆฌํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
- `onOpenModal` ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉ ์‹œ ๋ชจ๋‹ฌ์ฐฝ์ด ์˜คํ”ˆ๋˜๋ฉฐ id๊ฐ€ root-modal ์ด๋ผ๋Š” ์š”์†Œ์— `ModalPortal` ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋žœ๋”๋ง ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. (react-portal ํ™œ์šฉ)
- `onCloseModal` ์ด๋ฒคํŠธ ๋ฐœ์ƒ ์‹œ ํ•ด๋‹น ๋ชจ๋‹ฌ์ฐฝ์€ ๋‹ซํžˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
- ์ค‘๋ณต๋˜๋Š” ๋ถ€๋ถ„์„ ์ปค์Šคํ…€ ํ›…์œผ๋กœ ๋งŒ๋“ค์—ˆ์œผ๋ฉฐ react portal ๋ฅผ ํ™œ์šฉํ•ด root์˜ ๋ฐ”๊นฅ์—์„œ ๋žœ๋”๋ง ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ›จ์”ฌ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.


### portal๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ตฌํ˜„ํ•œ ์ด์œ 

> DOM Tree ์ƒ์—์„œ์˜ ๋ถ€๋ชจ-์ž์‹ ๊ฐ„์˜ ์ œ์•ฝ์—์„œ ์ž์œ ๋กœ์›Œ์ง€๊ธฐ ์œ„ํ•ด Portal ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

> ๋˜ํ•œ, Portal์— ๋ Œ๋”๋ง๋œ ์ž์‹์š”์†Œ๋Š” ์ด๋ฒคํŠธ ๋ฒ„๋ธ”๋ง์ด ๋ฐ˜์˜๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ถ€๋ชจ์š”์†Œ์™€์˜ ํ†ต์‹  ์ธก๋ฉด์—์„œ๋„ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

Portals ์ฐธ๊ณ  ๋ฌธ์„œ


ย ๐Ÿ–ฅ Available URI

## ๐Ÿ–ฅ Available URI

- / : ๋ฉ”์ธ ํŽ˜์ด์ง€
- /host : ์ƒˆ๋กœ์šด ํŒ€ ๋งŒ๋“ค๊ธฐ ํŽ˜์ด์ง€
- /...


ย ๐Ÿ“‚ Skeleton

## ๐Ÿ“‚ Skeleton

```
|-- /src
| |-- /assets
| | |-- ...
| |-- /components
| | |-- ...
| |-- /hooks
| | |-- useInput.ts
| | |-- useModal.tsx
| |-- /lib
| | |-- /api
| | | |-- ...
| |-- /pages
| | |-- \_app.tsx
| | |-- \_document.tsx
| | |-- ...
| |-- /store
| | |-- index.ts
| | |-- rootReducer.ts
| | |-- ...
| |-- /styles
| |-- /typings
| |-- ...
```


ย ๐Ÿ“ Conventional Commits

## ๐Ÿ“ Conventional Commits

[์‚ฌ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ฐธ๊ณ ](https://www.conventionalcommits.org/ko/v1.0.0/)


| message | descripton |
| -------- | -------------------------------------------------------------------------------------------- |
| feat | ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€ |
| fix | ๋ฒ„๊ทธ ์ˆ˜์ • |
| test | Test ๊ด€๋ จํ•œ ์ฝ”๋“œ์˜ ์ถ”๊ฐ€, ์ˆ˜์ • |
| refactor | ์ฝ”๋“œ๋ฅผ ๋ฆฌํŽ™ํ† ๋ง |
| chore | (์ฝ”๋“œ์˜ ์ˆ˜์ • ์—†์ด) ์„ค์ •์„ ๋ณ€๊ฒฝ |
| docs | ๋ฌธ์„œ์˜ ์ˆ˜์ • |
| style | (์ฝ”๋“œ์˜ ์ˆ˜์ • ์—†์ด) ์Šคํƒ€์ผ(style)๋งŒ ๋ณ€๊ฒฝ
(๋“ค์—ฌ์“ฐ๊ธฐ ๊ฐ™์€ ํฌ๋งท์ด๋‚˜ ์„ธ๋ฏธ์ฝœ๋ก ์„ ๋นผ๋จน์€ ๊ฒฝ์šฐ) |


~~commit example~~

```
git commit -m "feat: ์œ ์ € ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ์ถ”๊ฐ€"
```


Commitizen ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ์œผ๋กœ ์œ„ ๋ฐฉ๋ฒ•๋ณด๋‹ค๋Š” ์•„๋ž˜๋ฐฉ๋ฒ•์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.

```
yarn commit
```


`yarn commit` ์„ ํ•ด์ฃผ์‹œ๊ณ  ์ปค๋ฐ‹์˜ ํƒ€์ž…, ์ œ๋ชฉ, ์„ค๋ช… ๋“ฑ ๊ฐ€์ด๋“œ๋Œ€๋กœ ์ž…๋ ฅํ•œ ํ›„ ๊ฐ๊ฐ ๋ธŒ๋žœ์น˜์— push ํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค!

> yarn commit ๋ช…๋ น์–ด๋Š” ์ œ์ผ ๋จผ์ € git add๋ฅผ ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— git add ๋ช…๋ น์–ด๋Š” ๋”ฐ๋กœ ์ž…๋ ฅ์•ˆํ•ด์ฃผ์…”๋„ ๋ฉ๋‹ˆ๋‹ค!


ย โš™ Settings

## โš™ Settings

dev server

```
yarn dev
```

node -v

```
v16.14.2
```

.env

```
NEXT_PUBLIC_API_URL=...
```

etc...

```
// clone ํ›„ git hook์ด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด ์‹คํ–‰
chmod +x .husky/pre-commit
```