Skip to content

2025-TeamCC/Team_CC_FE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

55 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽจ TeamCC_FE

ํ•œ๋™๋Œ€ํ•™๊ต์˜ ์ „ํ†ต์ ์ธ ํŒ€ ๊ต๋ฅ˜ ํ”„๋กœ๊ทธ๋žจ ํŒ€CC๋ฅผ ์˜จ๋ผ์ธ์—์„œ ์‰ฝ๊ณ  ์žฌ๋ฏธ์žˆ๊ฒŒ ์šด์˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋Š” ํ”„๋ก ํŠธ์—”๋“œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค.
์ฐธ์—ฌ์ž๋Š” Google ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธํ•˜์—ฌ ์ด๋ฒคํŠธ์— ์ฐธ์—ฌํ•˜๊ณ , ๋ฏธ์…˜์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ์ธ์ฆ์„ ํ†ตํ•ด ํŒ€์›Œํฌ๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ“š ๋ชฉ์ฐจ

  1. ๐Ÿ“ ํ”„๋กœ์ ํŠธ ๊ฐœ์š”
  2. โš™๏ธ ๊ธฐ์ˆ  ์Šคํƒ
  3. ๐Ÿš€ ์ฃผ์š” ๊ธฐ๋Šฅ
  4. ๐Ÿ”ง ์„ค์น˜ ๋ฐ ์‹คํ–‰ ๋ฐฉ๋ฒ•
  5. ๐Ÿ“ ํด๋” ๊ตฌ์กฐ
  6. ๐Ÿ–ผ๏ธ ํŽ˜์ด์ง€ ํ๋ฆ„ ๋ฐ UI ๊ตฌ์„ฑ
  7. ๐Ÿ”— API ์—ฐ๋™ ๋ฐ ์ธ์ฆ ๊ตฌ์กฐ
  8. ๐Ÿงช ํ…Œ์ŠคํŠธ ์ „๋žต ๋ฐ ์ฝ”๋“œ ํ’ˆ์งˆ ๊ด€๋ฆฌ
  9. ๐Ÿค ๊ธฐ์—ฌ ๊ฐ€์ด๋“œ
  10. ๐Ÿ“„ ๋ผ์ด์„ ์Šค
  11. ๐Ÿ“ฌ ์—ฐ๋ฝ์ฒ˜

๐Ÿ“ ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

  • TeamCC_FE๋Š” ํŒ€CC ์ด๋ฒคํŠธ์˜ ์ฐธ๊ฐ€์ž/๊ด€๋ฆฌ์ž๊ฐ€ ์‰ฝ๊ฒŒ ๋ฏธ์…˜์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ์ ์ˆ˜๋ฅผ ๊ธฐ๋กํ•˜๋ฉฐ, ๊ต๋ฅ˜ ํ™œ๋™์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก UI๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • Google OAuth2 ์ธ์ฆ์„ ํ†ตํ•ด ๋กœ๊ทธ์ธํ•˜๊ณ , ์ดˆ๋Œ€์ฝ”๋“œ ๊ธฐ๋ฐ˜์œผ๋กœ ์ด๋ฒคํŠธ์— ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ง ๋งค์นญ, ๋ฏธ์…˜ ์ธ์ฆ, ์ ์ˆ˜ ํ™•์ธ, ์ˆœ์œ„ํ‘œ ๋“ฑ ์ฃผ์š” ๊ธฐ๋Šฅ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
  • ๋ฐฑ์—”๋“œ๋Š” TeamCC_BE์™€ ์—ฐ๋™๋˜์–ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

โš™๏ธ ๊ธฐ์ˆ  ์Šคํƒ

๋ถ„์•ผ ์‚ฌ์šฉ ๊ธฐ์ˆ 
ํ”„๋ ˆ์ž„์›Œํฌ React 19
๋ผ์šฐํŒ… React Router DOM v7
์ƒํƒœ ๊ด€๋ฆฌ useState, Context API
์Šคํƒ€์ผ๋ง styled-components
API ํ†ต์‹  Axios
์ธ์ฆ Google OAuth2 + JWT
ํ…Œ์ŠคํŠธ Testing Library (React)
์ฝ”๋“œ ์Šคํƒ€์ผ ESLint, Prettier (์˜ˆ์ •)

๐Ÿš€ ์ฃผ์š” ๊ธฐ๋Šฅ

  • ๐Ÿ” Google OAuth2 ๋กœ๊ทธ์ธ ๋ฐ JWT ์ €์žฅ
  • ๐Ÿ“ฉ ์ดˆ๋Œ€์ฝ”๋“œ ๊ธฐ๋ฐ˜ ์ด๋ฒคํŠธ ์ฐธ์—ฌ
  • ๐Ÿค ์ง ๋งค์นญ ๊ฒฐ๊ณผ ์กฐํšŒ ๋ฐ ์ƒํƒœ ํ™•์ธ
  • ๐Ÿ“‹ ๋ฏธ์…˜ ๋ชฉ๋ก ํ™•์ธ ๋ฐ ์ง„ํ–‰ ์ƒํƒœ
  • ๐Ÿ“ธ ๋ฏธ์…˜ ์ธ์ฆ ์‚ฌ์ง„ ์ œ์ถœ
  • ๐Ÿ† ์ ์ˆ˜ ๊ธฐ๋ฐ˜ ์‚ฌ์šฉ์ž ์ˆœ์œ„ํ‘œ ํ™•์ธ
  • ๐Ÿ“ฑ ๋ชจ๋ฐ”์ผ/ํƒœ๋ธ”๋ฆฟ ๋Œ€์‘ UI (๋ฐ˜์‘ํ˜•)

๐Ÿ”ง ์„ค์น˜ ๋ฐ ์‹คํ–‰ ๋ฐฉ๋ฒ•

# 1. ๋ ˆํฌ์ง€ํ† ๋ฆฌ ํด๋ก 
git clone https://github.com/2025-TeamCC/Team_CC_FE.git

# 2. ๋””๋ ‰ํ† ๋ฆฌ ์ด๋™
cd Team_CC_FE

# 3. ์˜์กด์„ฑ ์„ค์น˜
npm install

# 4. ํ™˜๊ฒฝ๋ณ€์ˆ˜ ํŒŒ์ผ ์ƒ์„ฑ (.env)
REACT_APP_API_URL=http://localhost:8080

# 5. ๊ฐœ๋ฐœ ์„œ๋ฒ„ ์‹คํ–‰
npm start

๐Ÿ“ ํด๋” ๊ตฌ์กฐ

src/
โ”œโ”€โ”€ API/                    # axios ๊ธฐ๋ฐ˜ API ๋ชจ๋“ˆ (Auth, Code, Event)
โ”œโ”€โ”€ Assets/                 # ์ •์  ์ด๋ฏธ์ง€ ๋ฆฌ์†Œ์Šค
โ”œโ”€โ”€ Pages/                  # ์ฃผ์š” ํŽ˜์ด์ง€ ์ปดํฌ๋„ŒํŠธ
โ”‚   โ””โ”€โ”€ EventAttendPage/    # ์˜ˆ์‹œ: ์ด๋ฒคํŠธ ์ฐธ์—ฌ ํŽ˜์ด์ง€
โ”œโ”€โ”€ util/
โ”‚   โ”œโ”€โ”€ form/               # ํผ ์ž…๋ ฅ UI ์ปดํฌ๋„ŒํŠธ
โ”‚   โ”œโ”€โ”€ modal/              # ๊ณตํ†ต ๋ชจ๋‹ฌ ์ปดํฌ๋„ŒํŠธ
โ”‚   โ””โ”€โ”€ Layout/             # Header ๋“ฑ ๋ ˆ์ด์•„์›ƒ ๊ตฌ์„ฑ ์š”์†Œ
โ”œโ”€โ”€ App.js                  # ์ „์ฒด ๋ผ์šฐํŒ… ๋ฐ ๊ตฌ์กฐ ์„ค์ •
โ””โ”€โ”€ index.js                # React ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ง„์ž…์ 

๐Ÿ–ผ๏ธ ํŽ˜์ด์ง€ ํ๋ฆ„ ๋ฐ UI ๊ตฌ์„ฑ

ํŽ˜์ด์ง€ ์„ค๋ช…
LandingPage ์ฒซ ์ง„์ž… ํ™”๋ฉด, ๋กœ๊ทธ์ธ ์œ ๋„
RegisterPage ์ดˆ๋Œ€์ฝ”๋“œ ์ž…๋ ฅ ํ›„ ์ด๋ฒคํŠธ ์ฐธ๊ฐ€
EventAttendPage ์ฐธ๊ฐ€์ž ์ •๋ณด ์ž…๋ ฅ ๋ฐ ํ™•์ธ
MissionMenuPage ์ ์ˆ˜๋ณ„๋กœ ๋ฏธ์…˜ ๋ชฉ๋ก ์กฐํšŒ ๋ฐ ์„ ํƒ
MissionDetailPage ๊ฐœ๋ณ„ ๋ฏธ์…˜ ์„ค๋ช… ํ™•์ธ
MissionSubmissionPage ์‚ฌ์ง„ ์—…๋กœ๋“œ ํ›„ ์ธ์ฆ ์ œ์ถœ
SummaryPage ๋žญํ‚น ๋ฐ ์ ์ˆ˜ ํ™•์ธ (์ตœ์ข… ์š”์•ฝ)

๐Ÿ”— API ์—ฐ๋™ ๋ฐ ์ธ์ฆ ๊ตฌ์กฐ

๐Ÿ” ์ธ์ฆ ํ๋ฆ„

  1. Google OAuth2 ๋กœ๊ทธ์ธ ํ›„ โ†’ JWT ํ† ํฐ ๋ฐœ๊ธ‰
  2. sessionStorage์— accessToken ์ €์žฅ
  3. ์ดํ›„ ๋ชจ๋“  API ์š”์ฒญ ์‹œ ์•„๋ž˜์ฒ˜๋Ÿผ ์ธ์ฆ ํ—ค๋” ํฌํ•จ
axios.post("/event/join", data, {
  headers: {
    Authorization: `Bearer ${accessToken}`,
    "Content-Type": "application/json",
  },
});

๐Ÿ“ก API ๊ตฌ์กฐ

  • /auth: ๋กœ๊ทธ์ธ ์š”์ฒญ
  • /event/code: ์ดˆ๋Œ€์ฝ”๋“œ ์œ ํšจ์„ฑ ๊ฒ€์ฆ
  • /event/join: ์ด๋ฒคํŠธ ์ฐธ์—ฌ
  • /pairing/start: ์ง ๋งค์นญ ์‹œ์ž‘
  • /mission/pair: ๋ฏธ์…˜ ์ƒํƒœ ์กฐํšŒ
  • /mission/submit: ๋ฏธ์…˜ ์ธ์ฆ ์ œ์ถœ
  • /ranking: ์‚ฌ์šฉ์ž ์ ์ˆ˜ ๊ธฐ๋ฐ˜ ๋žญํ‚น

๐Ÿงช ํ…Œ์ŠคํŠธ ์ „๋žต ๋ฐ ์ฝ”๋“œ ํ’ˆ์งˆ ๊ด€๋ฆฌ

โœ… ํ…Œ์ŠคํŠธ ์ „๋žต

TeamCC_FE๋Š” Jest์™€ @testing-library/react ๊ธฐ๋ฐ˜์œผ๋กœ ๋‹จ์œ„/ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ์ˆ˜์ค€ ์„ค๋ช… ์‚ฌ์šฉ ๋„๊ตฌ
๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๊ฐœ๋ณ„ ์ปดํฌ๋„ŒํŠธ ๋˜๋Š” ์œ ํ‹ธ ํ•จ์ˆ˜ ํ…Œ์ŠคํŠธ Jest, Testing Library
ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ํŽ˜์ด์ง€ ๋‹จ์œ„ UI ํ๋ฆ„ ํ…Œ์ŠคํŠธ Testing Library
E2E ํ…Œ์ŠคํŠธ (ํ–ฅํ›„ ์ ์šฉ) ๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋ฐ˜ ์‹ค์ œ ์‚ฌ์šฉ์ž ์‹œ๋‚˜๋ฆฌ์˜ค ๊ฒ€์ฆ Cypress / Playwright

๋ชจํ‚น์€ jest.mock() ๋˜๋Š” MSW ๋„์ž… ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

jest.mock("../../API/Code", () => ({
  codeVerifyAPI: jest.fn(() => Promise.resolve({ success: true })),
}));

Coverage ๋ฆฌํฌํŠธ๋Š” ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

npm test -- --coverage

๐Ÿ”ข ํ…Œ์ŠคํŠธ ์šฐ์„ ์ˆœ์œ„ ๊ธฐ์ค€

์šฐ์„ ๋„ ๋Œ€์ƒ ์ด์œ 
๐Ÿ”ด ๋†’์Œ ๋กœ๊ทธ์ธ, ์ด๋ฒคํŠธ ์ฐธ์—ฌ, ๋ฏธ์…˜ ์ œ์ถœ ์ฃผ์š” ๊ธฐ๋Šฅ์˜ ์ •์ƒ ์ž‘๋™ ๋ณด์žฅ
๐ŸŸก ์ค‘๊ฐ„ ๋ชจ๋‹ฌ, ํผ UX ์•ˆ์ •์„ฑ ํ™•๋ณด
๐ŸŸข ๋‚ฎ์Œ ์ˆœ์œ„, ์Šคํƒ€์ผ๋งŒ ๊ด€๋ จ๋œ ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋Šฅ ์˜ํ–ฅ๋„ ๋‚ฎ์Œ

๐Ÿงผ ์ฝ”๋“œ ์Šคํƒ€์ผ ๋ฐ ๋ฆฐํŠธ ์ „๋žต

๋ณธ ํ”„๋กœ์ ํŠธ๋Š” ESLint๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ JavaScript ๋ฌธ๋ฒ• ๋ฐ React ์ฝ”๋“œ ์Šคํƒ€์ผ์„ ์—„๊ฒฉํžˆ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

{
  "env": {
    "browser": true,
    "es2021": true
  },
  "extends": ["eslint:recommended", "plugin:react/recommended"],
  "parserOptions": {
    "ecmaVersion": 12,
    "sourceType": "module"
  },
  "plugins": ["react"],
  "rules": {}
}
  • eslint:recommended ๋ฐ plugin:react/recommended๋ฅผ ์‚ฌ์šฉ
  • VSCode ESLint ํ™•์žฅ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ์ €์žฅ ์‹œ ์ž๋™ ํฌ๋งทํŒ… ๊ฐ€๋Šฅ
  • ํ–ฅํ›„ Prettier ์—ฐ๋™์„ ํ†ตํ•ด ํฌ๋งท ์ผ๊ด€์„ฑ๋„ ๊ฐ•ํ™” ์˜ˆ์ •

๐Ÿค ๊ธฐ์—ฌ ๊ฐ€์ด๋“œ

  1. ์ด์Šˆ๋ฅผ ๋“ฑ๋กํ•˜๊ณ  ๋…ผ์˜ ํ›„ ์ž‘์—… ์‹œ์ž‘

  2. ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ

    git checkout -b feature/your-feature-name
  3. ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ๋ช…ํ™•ํžˆ ์ž‘์„ฑ

    git commit -m "feat: ๋ฏธ์…˜ ์ œ์ถœ ๊ธฐ๋Šฅ ๊ตฌํ˜„"
  4. PR ์ƒ์„ฑ ๋ฐ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์š”์ฒญ


๐Ÿ“„ ๋ผ์ด์„ ์Šค

์ด ํ”„๋กœ์ ํŠธ๋Š” MIT ๋ผ์ด์„ ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ LICENSE๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.


๐Ÿ“ฌ ๋งํฌ

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •