ํ๋ก ํธ 3๋ช , ๋ฐฑ์๋ 3๋ช
๊ฐ๋ฐ๊ธฐ๊ฐ: 2023.04.19 ~ 2023.09.19
๋ด๋ถ ์ฝ๋ ์์ ์งํ ์ค์ด๋ฉฐ, ์ด๋๋ฏผ์ด ๋ณ๋๋ก ๊ฐ๋ฐ ์ค์ ์์ต๋๋ค.
๊ฐ๋ฐ ๋ฒ์ : https://developer-talks.com/
aws ์ s3, github action์ ์ด์ฉํ ci/cd ๋ฅผ ์ฌ์ฉ์ค์ ๋๋ค.
fcm๋ฑ์ ๊ธฐ๋ฅ์ผ๋ก https ์ฒ๋ฆฌ๊ฐ ํ์ํ์ฌ cloudfront๋ ์ฌ์ฉ๋์์ต๋๋ค.
| ์ด๊ฒฝ์ฃผ | ์ ํฌ์ | ๊น์์ฐ |
|---|---|---|
| @jiimy | @hsgh085 | @rlatldus |
developer-talks๋ okky.kr ์ ๋น์ทํ ์ฑ๊ฒฉ์ ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ ์
๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๊ฒ์ํ crud, ๊ตฌ๊ธ ๋ก๊ทธ์ธ๊ณผ jwt์ ์ด์ฉํ ํ ํฐ ๊ด๋ฆฌ, react-hook-form์ ์ด์ฉํ ์ฌ์ฉ์ ์ ๋ณด ์ปจํธ๋กค์ ๊ฐ์ง๊ณ ์๊ณ ,
์์ผ, see, fcm๋ฑ์ lib๊ฐ ์ฌ์ฉ๋์์ต๋๋ค.
$ git clone https://github.com/team-web-development-projects/developer-talks-frontend.git
$ cd developer-talks-frontend
$ npm install
$ npm run start| ๋ฉ์ธ ํ์ด์ง | ๊ฒ์๊ธ ๋ชฉ๋ก |
|---|---|
![]() |
![]() |
| ์คํฐ๋๋ฃธ | ๋ง์ดํ์ด์ง |
![]() |
![]() |
๊ทธ ์ธ ๊ฒ์๊ธ ์์ธ, ๊ฒ์๊ธ ์์ฑ, ์คํฐ๋๋ฃธ ์์ธ, ์ ์ ๊ด๋ จ ํ์ด์ง๋ฑ ์ด 9 ํ์ด์ง
- ์ฌ์ฉ์๋ ๊ฒ์๊ธ์ ์์ฑ, ์ญ์ , ์์ , ๋ชฉ๋ก์ ๋ณผ ์ ์์ต๋๋ค.
- ์ฌ์ฉ์๋ Q&A์ ์ปค๋ฎค๋ํฐ์ 2๊ฐ์ง ํ์ ์ ๊ฒ์๊ธ์ ์์ฑ ํ ์ ์์ต๋๋ค.
- ์์ฑ์ ์ด๋ฏธ์ง๋ฅผ ์ฒจ๋ถํ ์ ์์ผ๋ฉฐ, ์์ ์์๋ ์ด๋ฏธ์ง๋ฅผ ์์ ํ ์ ์์ต๋๋ค.
- ์ญ์ ์ ๋ต๋ณ์ด ์๋ ๊ฒ์๊ธ์ ์ญ์ ํ ์ ์์ต๋๋ค.
- Q&A ์์ฑ์ ๋ต๋ณ ์ค ํ๋์ ๋๊ธ์ ๋ต๋ณ์ผ๋ก ์ฑํํ ์ ์์ต๋๋ค. ํ๋ฒ ์ฑํ๋ ๋ต๋ณ์ ๋ค๋ฅธ ๋ต๋ณ์ผ๋ก ์ฑํํ ์ ์์ต๋๋ค.
- ์์ฑ๋ ๊ฒ์๊ธ์์ ์ถ์ฒ์, ๋ถ๋งํฌ ์๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
- ๊ฒ์๊ธ ๋ชฉ๋ก์์ ์ ๋ชฉ, ๋ด์ฉ์ผ๋ก ๊ฒ์๊ธ์ ๊ฒ์ํ ์ ์์ต๋๋ค.
### ์คํฐ๋๋ฃธ - ์ฌ์ฉ์๋ ์คํฐ๋๋ฃธ์ ์์ฑ, ์ญ์ , ์์ , ๋ชฉ๋ก์ ๋ณผ ์ ์์ต๋๋ค. - ์์ฑ์ ๊ด๋ จ ํ๊ทธ, ์ต๋ ๋ฐฉ์ฐธ์ฌ ์ธ์์, ๋น๋ฐ๋ฐฉ ์ฌ๋ถ๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค. ๋ชจ๋ ์ค์ ๊ฐ์ ํ์๊ฐ์ด ์๋๋๋ค. - ์คํฐ๋๋ฃธ์ ์ฐธ์ฌ์ ๋ด๋ถ์์ ๊ฒ์๊ธ์ ์์ฑ, ์ญ์ , ์์ , ๋ชฉ๋ก์ ๋ณผ ์ ์์ต๋๋ค. - ์คํฐ๋๋ฃธ์ ์ฐธ์ฌ์ ์ฑํ ๊ธฐ๋ฅ์ ์ด์ฉํ ์ ์์ต๋๋ค. - ์ฑํ ๋ด๋ถ์์ ์๋ก ์คํฌ๋กค์ ์ด์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ ์ฌ ์ ์์ต๋๋ค. - ์คํฐ๋๋ฃธ ์ญ์ ์ ๋ณธ์ธ์ ์ ์ธํ ์ฐธ์ฌ์ธ์์ด ์์ผ๋ฉด ์ญ์ ๊ฐ ๋ถ๊ฐ๋ฅํฉ๋๋ค. - (๋ก๊ทธ์ธ ์ํ) ๋ง์ดํ์ด์ง์์ ์คํฐ๋์์ ์ถ๋ฐฉํ๊ฑฐ๋, ๊ถํ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
### ์ ์ ์ ๋ณด - ์ฌ์ฉ์๋ ์ผ๋ฐํ์๊ฐ์ , ๊ตฌ๊ธํ์๊ฐ์ ์ ํตํ์ฌ ๋ก๊ทธ์ธ์ ํ ์ ์์ต๋๋ค. - ํ๋ฒ ๋ก๊ทธ์ธ์ด ๋์ด์๋ค๋ฉด 1์ฃผ์ผ์ด๋ด ๋ค์ ์ ์์ ์๋ ๋ก๊ทธ์ธ์ด ๋ฉ๋๋ค. - (๋ก๊ทธ์ธ ์ํ) ๋ค๋ฅธ ์ฌ๋์ ๊ฒ์๊ธ์ ์ถ์ฒํ ์ ์์ผ๋ฉฐ, ๋ถ๋งํฌ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ๋ถ๋งํฌ๋ ๊ฒ์๊ธ์ ๋ง์ดํ์ด์ง์์ ๋ณผ ์ ์์ต๋๋ค. - (๋ก๊ทธ์ธ ์ํ) ์คํฐ๋๋ฃธ์ ๋ชฉ๋ก์ ๋ณผ์ ์์ผ๋ฉฐ, ๋น๋ฐ๋ฐฉ์ด ์๋ ์คํฐ๋๋ฃธ์ ๋ฐ๋ก ์ ์ฅ๊ฐ๋ฅํ๊ณ , ๋น๋ฐ๋ฐฉ์ด๋ผ๋ฉฐ ์ฐธ์ฌ์์ฒญ์ ๋ณด๋ ๋๋ค. - (๋ก๊ทธ์ธ ์ํ) ์ฐธ์ฌ์์ฒญ์ ๋ณด๋ธ ์คํฐ๋๋ฃธ๊ณผ ์ฐธ์ฌ์ค์ธ ์คํฐ๋๋ฃธ์ ๋ง์ดํ์ด์ง์์ ํ์ธํ ์ ์์ต๋๋ค. - (๋ก๊ทธ์ธ ์ํ) ๋ค๋ฅธ ์ ์ ์ ๋๋ค์์ ํด๋ฆญํ์ฌ ์ชฝ์ง๋ฅผ ๋ณด๋ผ ์ ์์ต๋๋ค. - (๋ก๊ทธ์ธ ์ํ) ๋ง์ดํ์ด์ง์์ ๋ณด๋ธ ์ชฝ์ง, ๋ฐ์ ์ชฝ์ง๋ฅผ ๋ณผ ์ ์์ต๋๋ค. - (๋ก๊ทธ์ธ ์ํ) ์์ฑํ ๊ฒ์๊ธ์ ๋๊ธ์ด ๋ฌ๋ฆฌ๋ ๋ฑ. ํน์ ์ด๋ฒคํธ๊ฐ ๋ฐ์๋ ์ ์์ ์๊ฒ ์๋์ด ์ต๋๋ค.
- jwt์ ์ฌ์ฉํ์ฌ refreshToken์ localStorage์์ ๊ด๋ฆฌ. accessToken์ redux-toolkit์ ์ด์ฉํ ํด๋ผ์ด์ธํธ์์ ๊ด๋ฆฌ.
- oauth๋ฅผ ์ด์ฉํ์ฌ ๊ตฌ๊ธ ๋ก๊ทธ์ธ ๊ธฐ๋ฅ.
- ckeditor๋ฅผ ํ์ฉํ crud ๊ธฐ๋ฅ
- ์์ฑ์ ์ด๋ฏธ์ง ์ฒจ๋ถ ๊ฐ๋ฅ
- ๋๋๊ธ ๊ธฐ๋ฅ
- ์คํฐ๋๋ฃธ ์ ์ฅ์ ์์ผํต์ ์ ์ด์ฉํ ์ฑํ ๊ธฐ๋ฅ
- ์ด์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ์ ํ์ด์ง ์ฒ๋ฆฌ๊ฐ ์๋ ๋ค๋ฅธ ์ฒ๋ฆฌ๊ฐ ์์ง ์์๊น
- sse์ฒ๋ฆฌ๋ก ์์ํ์์ผ๋ console์ ์ฃผ๊ธฐ์ ์ผ๋ก ๋์ค๋ ์๋ฆผ์ด ์์ด fcm์ผ๋ก ๋ณ๊ฒฝ.
- sse์ ๊ธฐ๋ฅ ๊ตฌํ์ ์๋ฌ์ผ๋ console์์ ์ฃผ๊ธฐ์ ์ผ๋ก ์ค๋ ์๋ฌ๋ฅผ ํด๊ฒฐ ๋ชปํจ
- ๋ก๊ทธ์ธ, ํ์๊ฐ์ , ์ ์ ์ ๋ณด์ฐพ๊ธฐ, ์ ์ ์ ๋ณด์์ ๋ฑ ์ฌ๋ฌ๊ฐ์ input์ด๋ฒคํธ๊ฐ ํฌํจ๋๊ณณ์ react-hook-form์ ์ด์ฉํ validate๋ฅผ ์ฌ์ฉ.
- react-hook-form์ validation ๊ด๋ฆฌ๋ฅผ yup์ผ๋ก ํ๋ฉด ์ปดํฌ๋ํธ ๋ถํ ์ด ๋์ง ์์์๊น.
โโโ README.md
โโโ package-lock.json
โโโ package.json
โโโ jsconfig.json
โโโ .env
โโโ .env.development
โโโ .env.production
โโโ public
โ โโโ 404.html
โ โโโ firebase-messaging-sw.js
โ โโโ index.html
โ โโโ favicon.ico
โโโ src
โโโ assets
โ โโโ font.scss
โ โโโ function.scss
โ โโโ index.scss
โ โโโ reset.scss
โ โโโ variable.scss
โ โโโ common.scss
โโโ components
โ โโโ ...// button์ด๋ editor์ฒ๋ผ ์์๊ฒ๋ถํฐ ์์ํ์ฌ modal๊น์ง ์ฝ 30๊ฐ ์ ๋์ ์ปดํฌ๋ํธ๊ฐ ์์ต๋๋ค.
โโโ constants
โ โโโ api.js // ๋ฃจํธ ๋๋ฉ์ธ ๊ธฐ๋ณธ ์ ์
โโโ hooks
โ โโโ useOutOfClick.js
โ โโโ useParseJwt.js // accessToken์ ๋์ฝ๋ฉํ์ฌ ์ ์ ๋ฐ์ดํฐ ์ถ์ถ
โ โโโ useAuth.js
โโโ pages
โ โโโ ... // ์๋ชป๋ url๋ก ์ ์ํ์๋ NotPage๋ฅผ ํฌํจํ์ฌ ์ฝ 8๊ฐ์ ํ์ด์ง๊ฐ ์์ต๋๋ค.
โโโ store
โ โโโ Auth.js // jwt ํ ํฐ ์ ์ฅ
โ โโโ ChatStore.js // ์ฑํ
์
๋ ฅ์ ๋ฐ์ดํฐ ์์ ์ ์ฅ
โ โโโ index.js
โ โโโ Notification.js // ์๋ฆผ, ์ชฝ์ง ๊ด๋ จ ๋ฐ์ดํฐ ์ ์ฅ
โ โโโ PageRouter.js // url ํ๋ณ ๋ฐ์ดํฐ ์์ ์ ์ฅ
โโโ util
โ โโโ day.js // dayjs๋ฅผ ์ด์ฉํ ๋ ์ง ํฌ๋งท
โ โโโ epochConverter.js // ๋ ์ง ๋น๊ต
โ โโโ IsLogin.js
โ โโโ Util.js // isDev์ isPrd๋ก dev ์ prdํ๊ฒฝ ์ ์
โโโ App.js
โโโ firebase-get-token.js
โโโ sse.js
โโโ useGoogleLoginAuth.js
โโโ useRefreshToken.js
โโโ index.js



