Skip to content

๐Ÿ–‹๏ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์›น ์„œ๋น„์Šค 1์ธ ํ”„๋กœ์ ํŠธ

Notifications You must be signed in to change notification settings

Hyeondoonge/Alog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

ALOG

์—์ด๋กœ๊ทธ ๋˜๋Š” ์•Œ๋กœ๊ทธ๋ผ ์ฝ์œผ๋ฉฐ, Algorithm log ์ฆ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ธฐ๋กํ•œ๋‹ค๋ผ๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

2021๋…„ 9์›”๋ถ€ํ„ฐ 2022๋…„ 1์›”๊นŒ์ง€ ์•ฝ 4๊ฐœ์›”๊ฐ„, ๊ธฐํš๋ถ€ํ„ฐ ๋ฐฐํฌ๊นŒ์ง€ ๊ฐœ์ธ์œผ๋กœ ์ง„ํ–‰ํ•œ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ์ฝ”๋“œ ์ฑ„์  ํ”Œ๋žซํผ์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ฌธ์ œ์˜ ํ’€์ด๋ฅผ ๊ธฐ๋กํ•˜๊ณ , ์›ํ•˜๋Š” ๋ฌธ์ œ์˜ ํ’€์ด๋ฅผ ์ฐพ๋„๋กํ•˜๋Š” ์›น ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ๊ธฐ๋Šฅ ์ถ”๊ฐ€๋Š” ๋ฉˆ์ถ˜ ์ƒํƒœ์ด์ง€๋งŒ ์œ ์ง€๋ณด์ˆ˜ ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๊ณ ์žˆ์Šต๋‹ˆ๋‹ค.

์„œ๋น„์Šค ๋ฐ”๋กœ๊ฐ€๊ธฐ


๋ชฉ์ฐจ


๊ณ„๊ธฐ

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

์ดํ›„ ๊ฐœ์ธ ๊ณต๋ถ€ ๊ทธ๋ฆฌ๊ณ  ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์ค€๋น„ ๋ชฉ์ ์—์„œ ํ•™์Šต์„ ํ•˜๋ฉด์„œ, ๋ณธ์ธ ๋งŒ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ฐœ์ธ ๋ธ”๋กœ๊ทธ์— ๊ธฐ๋กํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋งŽ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค.

์ด์™€ ๊ฐ™์€ ์‚ฌ๋žŒ๋“ค์„ ํƒ€๊ฒŸ์œผ๋กœํ•˜์—ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด๋งŒ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋žซํผ์˜ ์—ญํ• ์„ ํ•˜๋ฉด์„œ๋„, Programmers์™€ Baekjoon๊ณผ ๊ฐ™์€ ์˜จ๋ผ์ธ ์ฑ„์  ํ”Œ๋žซํผ์— ๋“ฑ๋ก๋œ ๋ฌธ์ œ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด๋“ค์„ ํ•œ ๋ˆˆ์— ๋ณผ ์ˆ˜ ์žˆ๋Š” ํ”Œ๋žซํผ์ด ์žˆ์œผ๋ฉด ์‚ฌ๋žŒ๋“ค์ด ๋” ๋‚˜์€ ํ™˜๊ฒฝ์—์„œ ํ•™์Šตํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ผ๋Š” ๊ธฐ๋Œ€๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด๋ฅผ ์ฐพ๋Š” ์‚ฌ๋žŒ๋“ค ๊ทธ๋ฆฌ๊ณ  ์ž‘์„ฑํ•˜๋Š” ์‚ฌ๋žŒ๋“ค ๋ชจ๋‘์—๊ฒŒ ๋” ๋‚˜์€ ํŽธ์˜์„ฑ์„ ์ œ๊ณตํ•˜๊ณ ์žํ•˜๋Š” ๋ชฉํ‘œ๋ฅผ ๊ฐ–๊ณ  ์‹œ์ž‘ํ•˜๊ฒŒ ๋์Šต๋‹ˆ๋‹ค.


์‹œ์ž‘ ๋ฐฉ๋ฒ•

Clone

$ https://github.com/Hyeondoonge/Alog.git

ํ™˜๊ฒฝ ์„ค์ •

  • .env ํŒŒ์ผ์„ client ํ”„๋กœ์ ํŠธ ์ตœ์ƒ๋‹จ์— ์ƒ์„ฑ ํ›„, ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”
REACT_APP_ENV={development | production}
  • .env ํŒŒ์ผ์„ server ํ”„๋กœ์ ํŠธ ์ตœ์ƒ๋‹จ์— ์ƒ์„ฑ ํ›„, ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”
PORT={app port}
MONGO_URI={mongodb server url}
USER_ID={mongodb user id}
USER_PASSWORD={mongodb user password}
ACCESS_SECRET_KEY={secret key for access token}
REFRESH_SECRET_KEY={secret key for refresh token}
KAKAO_API_CLIENT_KEY={kakao api client key}
KAKAO_API_REDIRECT_URI_DM={kakao login redirect url for development}
KAKAO_API_REDIRECT_URI_PM={kakao login redirect url for production}

Install & Start

  • ํด๋ผ์ด์–ธํŠธ ์‹คํ–‰
$ cd client
$ npm install && npm start
  • API ์„œ๋ฒ„ ์‹คํ–‰
$ cd server
$ npm install && npm install pm2 -g
$ pm2 start ecosystem.config.js

๊ธฐ์ˆ  ์Šคํƒ

Frontend

React(React-router-dom, Context API), styled-components, netlify

Backend

express, mongoDB, mongoose, JWT, PM2, AWS EC2, Github Actions


๊ตฌํ˜„ ๊ธฐ๋Šฅ

1. ํ™ˆ / ํ’€์ด ๊ฒ€์ƒ‰

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

image (1)

โ€ฃ ์„ธ๋ถ€ ๊ตฌํ˜„ ์‚ฌํ•ญ

  • Intersection Observer API๋ฅผ ์ด์šฉํ•ด ๋ฌดํ•œ์Šคํฌ๋กค ๊ตฌํ˜„
  • Debounce๋ฅผ ์ด์šฉํ•ด ์—ฐ์†๋œ ํ‚ค์›Œ๋“œ ์ž…๋ ฅ์„ ์ œํ•œํ•˜์—ฌ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์˜ UX ๊ฐœ์„ 
  • useGetPost(custom hook)์„ ํ†ตํ•ด ํ’€์ด server state ๊ด€๋ฆฌ ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ
  • LocalStorage๋ฅผ ์ด์šฉํ•ด ์„ ํƒ๋œ ํ•„ํ„ฐ ์œ ์ง€

2. ํ’€์ด ์ž‘์„ฑ ๋ฐ ์ˆ˜์ •

ํ’€์ด๋ฅผ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค.

Markdownํ˜•์‹์œผ๋กœ ๊ธ€์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ”„๋ฆฌ๋ทฐ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

image (2)

โ€ฃ ์„ธ๋ถ€ ๊ตฌํ˜„ ์‚ฌํ•ญ

  • auto resizing๋˜๋Š” textarea ๊ตฌํ˜„
  • ํ’€์ด ์ž‘์„ฑ/์ˆ˜์ •์„ ์œ„ํ•œ ์žฌ์‚ฌ์šฉ Form ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„
  • react-responsive ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™œ์šฉํ•ด ๋ฐ˜์‘ํ˜• ๋ ˆ์ด์•„์›ƒ ์ ์šฉ

3. ํ’€์ด ์กฐํšŒ

์„œ๋น„์Šค์— ๋“ฑ๋ก๋œ ํ’€์ด๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.

ํ’€์ด๋Š” ์ž‘์„ฑ์ž ๋ณธ์ธ์— ํ•œํ•ด ์ˆ˜์ •, ์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž๋Š” ์ข‹์•„์š” ๊ธฐ๋Šฅ์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-11-02 แ„‹แ…ฉแ„Œแ…ฅแ†ซ 1 24 26

4. ๋งˆ์ด ํŽ˜์ด์ง€

ํŠน์ • ์ž‘์„ฑ์ž๊ฐ€ ์ž‘์„ฑํ•œ ํ’€์ด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-11-02 แ„‹แ…ฉแ„Œแ…ฅแ†ซ 1 23 11

5. ๊ฐ€์ž… ๋ฐ ์ธ์ฆ

SNS ๋กœ๊ทธ์ธ(์นด์นด์˜ค ๋กœ๊ทธ์ธ ์ง€์›)์„ ํ†ตํ•ด ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ฐ€์ž…/์ธ์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธํ•˜์—ฌ ์„œ๋น„์Šค๋ฅผ ํŽธํ•˜๊ฒŒ ๋‘˜๋Ÿฌ๋ณผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-11-02 แ„‹แ…ฉแ„Œแ…ฅแ†ซ 1 27 51

โ€ฃ ์„ธ๋ถ€ ๊ตฌํ˜„ ์‚ฌํ•ญ

  • ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ, ๋กœ๊ทธ์•„์›ƒ ๊ตฌํ˜„
  • JWT์™€ cookie๋ฅผ ํ™œ์šฉํ•ด ์ธ์ฆ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ
  • Local storage๋ฅผ ์ด์šฉํ•ด ๋กœ๊ทธ์ธ ์ƒํƒœ ์œ ์ง€

๊ฐœ์„  ๊ธฐ๋ก

About

๐Ÿ–‹๏ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์›น ์„œ๋น„์Šค 1์ธ ํ”„๋กœ์ ํŠธ

Resources

Stars

Watchers

Forks