Skip to content

TEAM-SEONYAK/SEONYAK_CLIENT

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

1,338 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

แ„ƒแ…ฆแ„‰แ…ณแ„แ…ณแ„แ…กแ†ธ แ„’แ…ชแ„†แ…งแ†ซ

๐Ÿค™๐Ÿป ์„ ์•ฝ

${\textsf{\color{blue}์ง„๋กœ ๊ณ ๋ฏผ, ์„ ์•ฝ๊ณผ ํ•จ๊ป˜ ํ•ด๋‹ต์„ ์ฐพ๋‹ค}}$

๋ง‰๋ง‰ํ•œ ์ง„๋กœ ๊ณ ๋ฏผ์„ ํ•ด๊ฒฐํ•ด ์ค„ ์„ ๋ฐฐ์™€์˜ ํŠน๋ณ„ํ•œ ์•ฝ์†
๊ฐ™์€ ๊ณ„์—ด '์„ '๋ฐฐ์™€์˜ ์ง„๋กœ ์ƒ๋‹ด '์•ฝ'์†, ์„ ์•ฝ

ใ„ด ๊ฐ™์€ ๊ฒฝํ—˜์„ ๊ฐ€์ง„ ์„ ๋ฐฐ์™€์˜ ์ง„๋กœ ์ƒ๋‹ด์„ ํ†ตํ•ด ๋” ๋งž์ถคํ™”๋œ ์กฐ์–ธ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก
ใ„ด ๊ฐ™์€ ๊ณ„์—ด/์›ํ•˜๋Š” ์ง๋ฌด์˜ ์„ ๋ฐฐ๋ฅผ ํ„ฐ์น˜ ํ•œ๋ฒˆ์œผ๋กœ ๋” ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก

์„œ๋น„์Šค ํ”Œ๋กœ์šฐ

แ„Œแ…ฅแ†ซแ„Žแ…ฆแ„Œแ…ฅแ†จแ„‹แ…ตแ†ซ แ„‘แ…ณแ†ฏแ„…แ…ฉแ„‹แ…ฎ

ํ•ต์‹ฌ๊ธฐ๋Šฅ

  1. ONBOARDING 1แ„‡แ…ฅแ†ซ แ„‰แ…ฎแ„Œแ…ฅแ†ผ

  2. MENTOR PROFILE 2แ„‡แ…ฅแ†ซ

  3. SEARCH MENTOR 3แ„‡แ…ฅแ†ซ

  4. MAKE MY SEONYAK 4แ„‡แ…ฅแ†ซ

  5. MY SEONYAK 5แ„‡แ…ฅแ†ซ


์„ ์•ฝ Web Developers


ํŒ€์› ์œค์„œ์ง„ ์ด์ง„ ์ด์ง€์€ ์ด์˜ˆ๋ฆผ ์กฐ์Šนํฌ
ํŒ€์› ์†Œ๊ฐœ
์—ญํ• 

WEB FRONTEND

WEB FRONTEND

WEB FRONTEND

WEB FRONTEND

WEB FRONTEND


๐Ÿ›  ๊ธฐ์ˆ ์Šคํƒ

์—ญํ•  ์ข…๋ฅ˜
Library React VITE
Programming Language TypeScript
Styling Emotion
Data Fetching Axios ReactQuery
Formatting ESLint Prettier Stylelint
Package Manager Yarn
Version Control Git GitHub


๐Ÿ’ก ์ฃผ์š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

  • "@emotion/react": "^11.11.4"
  • "@tanstack/react-query": "^5.48.0"
  • "react-calendar": "^5.0.0


๐Ÿ“ ํ”„๋กœ์ ํŠธ ํด๋” ๊ตฌ์กฐ

|-- ๐Ÿ“ node_modules
|-- ๐Ÿ“ public
|-- ๐Ÿ“ src
	|-- ๐Ÿ“ assets
	|      |--๐Ÿ“images
	|      |--๐Ÿ“svgs
	|      |	- index.tsx
	|-- ๐Ÿ“ components
	|      |--๐Ÿ“commons
			- Header.tsx
			- Footer.tsx
	|-- ๐Ÿ“ hooks
	|      - useClickOutside.tsx
	|-- ๐Ÿ“ pages
	|      |--๐Ÿ“APage
	|      |       |--๐Ÿ“apis
	|      |       |--๐Ÿ“components
	|      |       |      - LikeBtn.tsx
	|      |       |      - APageItems.tsx
	|      |       |      - Comment.tsx
	|      |       |--๐Ÿ“constants
	|      |       |--๐Ÿ“utils
	|      |       |    - modalPreventScroll.ts
	|      |       |--๐Ÿ“types
	|      |       |     - APageItemType.ts
	|      |       |
	|      |       |-APage.tsx
	|      |--๐Ÿ“BPage
	|      |--๐Ÿ“CPage
	|-- ๐Ÿ“ styles
	|      - GlobalStyle.tsx
	|      - theme.ts
	|      - style.d.ts
	|-- ๐Ÿ“ utils 
	| 	|--๐Ÿ“apis
	|	     -client.ts
	|-- App.tsx
	|-- main.tsx
	|-- Router.tsx
|-- .eslintrc.json
|-- .prettierrc
|-- .stylelintrc

๐ŸŒ ์ปจ๋ฒค์…˜

1๏ธโƒฃ Branch Convention
Branch Naming Rule
prefix/#์ด์Šˆ๋ฒˆํ˜ธ/์ž‘์—…๋‚ด์šฉ

feat/#12/mainView

Prefix convention
prefix types ์˜๋ฏธ
โš™๏ธ init ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ ์„ธํŒ…
โœจย feat ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€
๐Ÿ› ๏ธย fix ๋ฒ„๊ทธ, ์˜ค๋ฅ˜ ๋“ฑ์„ ์ˆ˜์ •
๐Ÿ’„ย design ์Šคํƒ€์ผ ์ˆ˜์ •
๐Ÿงฉย chore ํŒŒ์ผ ์‚ญ์ œ, ํŒŒ์ผ๋ช… ์ˆ˜์ •, ์ฃผ์„ ์ œ๊ฑฐ, ์ž๋™์ €์žฅ ์ ์šฉํ•ด์„œ ๊ฐœํ–‰ ๋ฐ”๋€ ๋ถ€๋ถ„, ๋นŒ๋“œํ…Œ์ŠคํŠธ ์—…๋ฐ์ดํŠธ, ํŒจํ‚ค์ง€๋งค๋‹ˆ์ € ๋ณ€๊ฒฝ ๋“ฑ๋“ฑ ์ฃผ ํ”Œ๋กœ์šฐ์™€ ๊ด€๋ จ ์—†๋Š” ๊ฒฝ์šฐ
๐Ÿ“ย docs README๋‚˜ WIKI ๋“ฑ์˜ ๋ฌธ์„œ ์ˆ˜์ •
โ™ป๏ธย refactor ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง
๐Ÿ’กย test ํ…Œ์ŠคํŠธ ์ฝ”๋“œ, ๋ฆฌํŒฉํ† ๋ง ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ
๐Ÿ”ฅย !hotfix ์น˜๋ช…์ ์ธ ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ๊ธ‰ํ•˜๊ฒŒ ์ˆ˜์ •
2๏ธโƒฃ Commit Convention
`prefix: ์ปค๋ฐ‹ ๋‚ด์šฉ` โ†’ `type`๊ณผ ์ฝœ๋ก  ํ›„ ํ•œ์นธ ๋„๊ณ  `์ปค๋ฐ‹๋‚ด์šฉ` ์ž‘์„ฑ
  • ex) feat: ๋ฉ”์ธ ํ—ค๋” ๋ทฐ ๊ตฌํ˜„
  • design: ๋งˆ์ง„ ๊ฐ„๊ฒฉ ์กฐ์ •
  • prefix ์ข…๋ฅ˜๋Š” ์œ„์— ์ฐธ๊ณ !
  • ์ตœ๋Œ€ํ•œ ์ž‘์€ ๋‹จ์œ„์˜ commit ์ง€ํ–ฅ
3๏ธโƒฃ Coding Convention

๐Ÿ“ ์ปดํฌ๋„ŒํŠธ

  • rafce
  • ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ๋งŒ PascalCase ์‚ฌ์šฉ : PostPage.tsx
  • ๊ทธ ์™ธ์—๋Š” camelCase ex) type, d.tsํŒŒ์ผ, tsํŒŒ์ผ : useClickOutside.ts
  • prop ํƒ€์ž… Interface ์„ ์–ธ์‹œ ์ปดํฌ๋„ŒํŠธ๋ช…~PropTypes
// PostPage.tsx
interface PostPagePropTypes {
	title: string | undefined;
  setTitle: (e: React.ChangeEvent<HTMLTextAreaElement>) => void;
  tempContent: string;
  editContent: string;
  setEditorContent: (content: string) => void;
  setContentWithoutTag: (content: string) => void;
}

const PostPage = (props: PostPagePropTypes) => {
	  const { title, setTitle, tempContent, editContent, setEditorContent, setContentWithoutTag } = props;
	  ...
}

๐Ÿ“ ํด๋”๋ช…

  • ๋ฌด์กฐ๊ฑด ์†Œ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๊ธฐ!
  • ์นด๋ฉœ์ผ€์ด์Šค!

๐Ÿ“ ๋ณ€์ˆ˜

  • var ๊ธˆ์ง€
  • ๋ณ€์ˆ˜๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ๋ฌธ์ž์—ด ์ƒ์„ฑ์‹œ โ€œโ€ + โ€œโ€ ๊ธˆ์ง€ โ†’ ํƒฌํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด ์‚ฌ์šฉ(๋ฐฑํ‹ฑ${})
  • ๋งŒ์•ฝ ๋ณ€์ˆ˜์— ํ• ๋‹น๋˜๋Š” ๊ฐ’์ด boolean์ธ ๊ฒฝ์šฐ ์ ‘๋‘์‚ฌ is ๋ถ™์ด๊ธฐ : isActive
  • map ์‚ฌ์šฉ์‹œ ๋ณ€๋™๋˜๋Š” ๋ฆฌ์ŠคํŠธ๋ผ๋ฉด key๊ฐ’์„ ๊ณ ์œ ํ•˜๊ฒŒ ์ž˜ ์„ค์ •ํ•ด์ฃผ๊ธฐ index์‚ฌ์šฉ๊ธˆ์ง€

๐Ÿ“ ํ•จ์ˆ˜

  • ์ค‘๋ณต๋˜๋Š” ํ•จ์ˆ˜๋Š” utils ํด๋”์— ๋ชจ์•„์„œ ์žฌ์‚ฌ์šฉํ•œ๋‹ค. (๋‹จ์œ„ ๋ณ€ํ™˜ ํ•จ์ˆ˜, ๋‚ ์งœ ๋ณ€ํ™˜ ํ•จ์ˆ˜ ๋“ฑ)
  • ์ค‘๋ณต๋˜๋Š” ์ปค์Šคํ…€ํ›…์€ hooks ํด๋”์— ๋ชจ์•„์„œ ์žฌ์‚ฌ์šฉํ•œ๋‹ค. (๋ชจ๋‹ฌ ๋ฐ”๊นฅ๋ถ€๋ถ„ ํด๋ฆญ์‹œ ๋ชจ๋‹ฌ ๋‹ซํžˆ๋Š” ํ•จ์ˆ˜ ๋“ฑ)
  • ๋˜๋„๋ก ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

๐Ÿ“ style

  • style ํŒŒ์ผ ๋ถ„๋ฆฌํ•˜์ง€ ์•Š์Œ, ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ ํ•˜๋‹จ์— ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•˜๊ธฐ
  • s dot ๋„ค์ด๋ฐ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ
  • ์ปดํฌ๋„ŒํŠธ ๋„ค์ด๋ฐ ๊ทœ์น™ : Wrapper โ†’ Layout โ†’ Container โ†’ Box ์ˆœ์„œ๋กœ ๋‚ด๋ฆฌ๊ธฐ
  • ์‹œ๋ฉ˜ํ‹ฑ ํƒœ๊ทธ ์ƒ๊ฐํ•˜๋ฉด์„œ ๊ฐœ๋ฐœํ•˜๊ธฐ
  • svg ํŒŒ์ผ ์‚ฌ์šฉ์‹œ
    • svg ๋„ค์ด๋ฐ์€ ํ”ผ๊ทธ๋งˆ์— ์ง€์ •๋œ ๋„ค์ด๋ฐ + **Ic**๋กœ ํ•ด์„œ ์‚ฌ์šฉ
    • ๋งŒ์•ฝ svg์— ๋‹ค๋ฅธ ์Šคํƒ€์ผ์„ ์ถ”๊ฐ€๋กœ ์ž…ํ˜€์•ผ ํ•  ๊ฒฝ์šฐ, Ic๋ฅผ Icon์œผ๋กœ ๋ฐ”๊ฟ”์„œ ๋„ค์ด๋ฐ ํ•ด์ฃผ๊ธฐ
      • svg ํŒŒ์ผ ๋„ค์ด๋ฐ์œผ๋กœ style์ด ์ ์šฉ๋œ svg์ธ์ง€ ์•„๋‹Œ์ง€ ๊ตฌ๋ถ„ ๊ฐ€๋Šฅ
// src > assets > svgs > index.tsx
export { default as DefaultProfileIc } from './defaultProfileIc.svg?react';

// src > pages > PageName.tsx
import { DefaultProfileIc } from './../../assets/svgs';

const PageName = () => {

	return (
		<>
			<DefaultProfileIcon />
		</>
	)
}


const DefaultProfileIcon = styled(DefaultProfileIc)`
	cursor: pointer;
`
  • ์Šคํƒ€์ผ๋“œ ์ปดํฌ๋„ŒํŠธ์—์„œ prop๋ฅผ ์ด์šฉํ•  ๋•Œ๋Š” transient prop ์‚ฌ์šฉ : $๋กœ ์‹œ์ž‘ํ•˜๋Š” props๋กœ ๋‚ด๋ ค์คŒ.
  • ๋‹จ์œ„๋Š” rem ์‚ฌ์šฉ, ๋ณ€๊ฒฝ์ด ํ•„์š”์—†๋Š” (border ๊ด€๋ จ) ์†์„ฑ๋งŒ px ์‚ฌ์šฉ

## ๐Ÿ’ฅ ์„ ๋ฐฐ๋“ค์˜ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…
๋ฌธ์ œ ํ•ด๊ฒฐ
  • stylelint ๋ฒ„์ „ ์ถฉ๋Œ ๋ฌธ์ œ
  • emotion๊ณผ styled component์˜ ์ฐจ์ด
  • styled(svg) ์™œ ์•ˆ๋˜๋ƒ?
  • ์ค„๋ฐ”๊ฟˆ ์–ด๋–ป๊ฒŒ ํ•˜๊ฒŒ์šฉ ?
  • ๋‚ด๊ฐ€ ๋งŒ๋“  ์œ ํ‹ธํ•จ์ˆ˜ ๋ถˆ๋Ÿฌ์™€์„œ ์‚ฌ์šฉํ•˜๊ธฐ
  • styled component props ๋™์  ์Šคํƒ€์ผ๋ง ๋ณ€๊ฒฝ
  • Dispatch์™€ SetStateAction<์ธ์žํƒ€์ž…>
  • React-Calendar ์Šคํƒ€์ผ ๊ทœ์น™๊ณผ stylelint ๊ทœ์น™์ด ์ถฉ๋Œํ•˜๋Š” ๊ฒฝ์šฐ
  • mapํ•จ์ˆ˜ ์‚ฌ์šฉ์‹œ ํด๋ฆญ์—๋”ฐ๋ฅธ ์Šคํƒ€์ผ ๋ณ€ํ™”
  • ํด๋ฆญ์— ๋”ฐ๋ฅธ ์Šคํƒ€์ผ ๋ณ€ํ™” ํ•œ๋ฒˆ ๋” ํด๋ฆญํ•ด์„œ ์Šคํƒ€์ผ ์›์ƒ๋ณต๊ตฌ
  • ๊ฐ€๋กœ ์Šคํฌ๋กค ๊ตฌํ˜„, ์„ธ๋กœ ์Šคํฌ๋กค์€ ๊ฐ์ถ”๊ธฐ
  • ํ•„ํ„ฐ๋ง ๋ฒ„ํŠผ๊ณผ ์นฉ ์‚ญ์ œ ์—ฐ๊ฒฐํ•˜๊ธฐ
  • ์‚ฌ๋ผ์ง€์ง€ ์•Š๋Š” ๋ฐ”ํ…€์‹œํŠธ ๋‚ด ์„ ํƒ๊ฐ’์— ๋Œ€ํ•˜์—ฌ..
  • ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง ์‹œ ๋ Œ๋”๋ง ์•ˆ๋˜๋Š” ๊ฒฝ์šฐ ์—ฌ๋ฐฑ ์—†์• ๊ธฐ
  • ์Šคํฌ๋กค๋ฐ” ์•ˆ๋ณด์ด๊ฒŒํ•˜๊ธฐ, ์Šคํฌ๋กค ์˜์—ญ์ง€์ •
  • ์„ ํƒ์ ์œผ๋กœ props ๋ฐ›๊ธฐ
  • ๐Ÿช„ ์„ ๋ฐฐ๋“ค์˜ ์•„ํ‹ฐํด
    -----------------
  • https://yarimu.notion.site/React-Query-ba5e471314154696a72400c98483aad6
  • https://jnary.notion.site/2e33b9b68ff04a169d7323095a9b0560
  • https://trail-hound-61f.notion.site/URL-0328aabfe0c7468783c519ea8cc7abe1
  • https://velog.io/@lydiacho/Vercel-%EB%B0%B0%ED%8F%AC%EC%99%80-%EB%8F%84%EB%A9%94%EC%9D%B8-%EB%93%B1%EB%A1%9D%ED%95%98%EA%B8%B0#%EB%B6%80%EB%A1%9D3--%EC%BB%A4%EC%8A%A4%ED%85%80-%EB%8F%84%EB%A9%94%EC%9D%B8-%EB%93%B1%EB%A1%9D-%EC%8B%9C-%EC%9C%A0%EC%9D%98%EC%82%AC%ED%95%AD
  • About

    No description, website, or topics provided.

    Resources

    Stars

    Watchers

    Forks

    Releases

    No releases published

    Packages

     
     
     

    Contributors

    โšก