Skip to content

Latest commit

ย 

History

History
247 lines (166 loc) ยท 9.1 KB

File metadata and controls

247 lines (166 loc) ยท 9.1 KB

๐Ÿงญ COMPASSER Frontend

์œ„์น˜ ๊ธฐ๋ฐ˜ ์นดํŽ˜ ๋žœ๋ค๋ฐ•์Šค ๊ตฌ๋งค ๋ฐ QR ์ ๋ฆฝ ์„œ๋น„์Šค

๊ณ ๊ฐ์šฉ ์„œ๋น„์Šค์™€ ์ ์ฃผ์šฉ ์„œ๋น„์Šค๋ฅผ ํ•˜๋‚˜์˜ ๋ชจ๋…ธ๋ ˆํฌ์—์„œ ๊ด€๋ฆฌํ•˜๋ฉฐ, ๊ณตํ†ต UIยทAPIยท๊ฐœ๋ฐœ ์„ค์ •์„ ํŒจํ‚ค์ง€ํ™”ํ•œ Compasser ํ”„๋ก ํŠธ์—”๋“œ ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค.


Customer Service


Compasser ์„œ๋น„์Šค ํ™”๋ฉด

๐Ÿ“Œ Project Overview

Compasser๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ฃผ๋ณ€ ์นดํŽ˜๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ  ๋žœ๋ค๋ฐ•์Šค๋ฅผ ๊ตฌ๋งคํ•œ ๋’ค, ๋งค์žฅ์—์„œ QR์„ ํ†ตํ•ด ์ƒํ’ˆ์„ ํ™•์ธํ•˜๊ณ  ์Šคํƒฌํ”„๋ฅผ ์ ๋ฆฝํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.

ํ”„๋ก ํŠธ์—”๋“œ๋Š” ์„œ๋น„์Šค ์ด์šฉ ์ฃผ์ฒด์— ๋”ฐ๋ผ ๊ณ ๊ฐ์šฉ ์•ฑ๊ณผ ์ ์ฃผ์šฉ ์•ฑ์„ ๋ถ„๋ฆฌํ•˜๊ณ , ๋‘ ์•ฑ์—์„œ ๋ฐ˜๋ณต๋˜๋Š” UIยทAPIยท์„ค์ •์€ ๊ณตํ†ต ํŒจํ‚ค์ง€๋กœ ๊ด€๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ตฌ๋ถ„ ์„ค๋ช…
Customer ์นดํŽ˜ ํƒ์ƒ‰, ๋žœ๋ค๋ฐ•์Šค ๊ตฌ๋งค, ๊ฒฐ์ œ, QR ๋ฐ ์Šคํƒฌํ”„ ๊ด€๋ฆฌ
Owner ๋งค์žฅ๊ณผ ๋žœ๋ค๋ฐ•์Šค ์šด์˜์„ ์œ„ํ•œ ์ ์ฃผ์šฉ ์„œ๋น„์Šค
Design System ๊ณตํ†ต UI ์ปดํฌ๋„ŒํŠธ์™€ ๋””์ž์ธ ๊ทœ์น™ ๊ด€๋ฆฌ
API Package ๊ณ ๊ฐ์šฉยท์ ์ฃผ์šฉ ์•ฑ์—์„œ ์‚ฌ์šฉํ•˜๋Š” API ๋กœ์ง ๊ณตํ†ตํ™”

๐Ÿ‘ฉโ€๐Ÿ’ป Frontend Contribution

ํ”„๋ก ํŠธ์—”๋“œ 1์ธ ๊ฐœ๋ฐœ์„ ๋‹ด๋‹นํ•˜๋ฉฐ ์„ค๊ณ„๋ถ€ํ„ฐ ๊ธฐ๋Šฅ ๊ตฌํ˜„, API ์—ฐ๋™, ๋ฐฐํฌ๊นŒ์ง€ ์ „ ๊ณผ์ •์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

์˜์—ญ ๊ตฌํ˜„ ๋‚ด์šฉ ๊ฒฐ๊ณผ
์•„ํ‚คํ…์ฒ˜ ๊ณ ๊ฐ์šฉยท์ ์ฃผ์šฉ ์•ฑ์„ ๋ถ„๋ฆฌํ•œ ๋„๋ฉ”์ธ ๊ธฐ๋ฐ˜ ๋ชจ๋…ธ๋ ˆํฌ ์„ค๊ณ„ ๊ฐ ์„œ๋น„์Šค์˜ ์—ญํ• ์„ ๋ถ„๋ฆฌํ•˜๋ฉด์„œ ๊ณตํ†ต ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ ํ™•๋ณด
๋””์ž์ธ ์‹œ์Šคํ…œ ๊ณตํ†ต UI ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ณ„๋„ ํŒจํ‚ค์ง€๋กœ ๊ตฌ์„ฑํ•˜๊ณ  Storybook ์ ์šฉ ์„œ๋น„์Šค ๊ฐ„ UI ์ผ๊ด€์„ฑ ํ™•๋ณด ๋ฐ ์ปดํฌ๋„ŒํŠธ ๋‹จ์œ„ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์ถ•
๊ณตํ†ต ๋ชจ๋“ˆ API, Tailwind, TypeScript ์„ค์ •์„ ๋‚ด๋ถ€ ํŒจํ‚ค์ง€๋กœ ๋ถ„๋ฆฌ ์•ฑ๋งˆ๋‹ค ๋ฐ˜๋ณต๋˜๋˜ ์„ค์ •๊ณผ API ๊ตฌํ˜„ ๋ฒ”์œ„ ์ถ•์†Œ
ํ•ต์‹ฌ ๊ธฐ๋Šฅ ๋žœ๋ค๋ฐ•์Šค ํƒ์ƒ‰ยท๊ตฌ๋งคยท๊ฒฐ์ œ, QR ํ™•์ธ, ์Šคํƒฌํ”„ ์ ๋ฆฝ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ํƒ์ƒ‰๋ถ€ํ„ฐ ์˜คํ”„๋ผ์ธ ์‚ฌ์šฉ๊นŒ์ง€ ์ด์–ด์ง€๋Š” ์‚ฌ์šฉ์ž ํ๋ฆ„ ์™„์„ฑ
ํ˜‘์—… ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž 3๋ช…, ๋””์ž์ด๋„ˆ 1๋ช…๊ณผ API ๋ฐ UI ๋ช…์„ธ ์กฐ์œจ ํ”„๋ก ํŠธ์—”๋“œ ์ธํ„ฐํŽ˜์ด์Šค์™€ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ์ผ๊ด€๋œ ๊ตฌ์กฐ๋กœ ์—ฐ๊ฒฐ

โœจ Architecture Impact

  • ๊ณ ๊ฐ์šฉ ์•ฑ๊ณผ ์ ์ฃผ์šฉ ์•ฑ์˜ ์—ญํ• ์„ ๋ถ„๋ฆฌํ•˜๋ฉด์„œ ๊ณตํ†ต ํŒจํ‚ค์ง€๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋„๋ก ๊ตฌ์„ฑ
  • UIยทAPIยท์„ค์ • ํŒจํ‚ค์ง€ ํ†ตํ•ฉ์„ ํ†ตํ•ด ์•ฑ๋ณ„ ๋ฐ˜๋ณต ๊ตฌํ˜„ ๋ฒ”์œ„๋ฅผ ์•ฝ 50% ์ถ•์†Œ
  • ์ƒˆ๋กœ์šด ์•ฑ์ด๋‚˜ ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์–ด๋„ ๊ณตํ†ต ํŒจํ‚ค์ง€๋ฅผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ ๋งˆ๋ จ
  • ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ๋ฅผ Storybook์—์„œ ๋…๋ฆฝ์ ์œผ๋กœ ํ™•์ธํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑ

๐Ÿ—๏ธ Monorepo Architecture

๐Ÿ“š Architecture References

Turborepo pnpm Workspace Storybook

flowchart TB
    ROOT["๐Ÿงญ Compasser FE Monorepo"]

    ROOT --> APPS["Applications"]
    ROOT --> PACKAGES["Shared Packages"]

    APPS --> CUSTOMER["apps/customer<br/>๊ณ ๊ฐ์šฉ ์„œ๋น„์Šค"]
    APPS --> OWNER["apps/owner<br/>์ ์ฃผ์šฉ ์„œ๋น„์Šค"]

    PACKAGES --> API["packages/api<br/>๊ณตํ†ต API"]
    PACKAGES --> DS["packages/design-system<br/>๊ณตํ†ต UI"]
    PACKAGES --> TW["packages/tailwind-config<br/>๋””์ž์ธ ํ† ํฐ"]
    PACKAGES --> TS["packages/typescript-config<br/>๊ณตํ†ต TS ์„ค์ •"]

    CUSTOMER --> API
    CUSTOMER --> DS
    OWNER --> API
    OWNER --> DS
Loading

Directory Structure

FE
โ”œโ”€โ”€ apps
โ”‚   โ”œโ”€โ”€ customer
โ”‚   โ”‚   โ””โ”€โ”€ ๊ณ ๊ฐ์šฉ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
โ”‚   โ””โ”€โ”€ owner
โ”‚       โ””โ”€โ”€ ์ ์ฃผ์šฉ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
โ”‚
โ”œโ”€โ”€ packages
โ”‚   โ”œโ”€โ”€ api
โ”‚   โ”‚   โ””โ”€โ”€ ๊ณตํ†ต API ์š”์ฒญ ๋ฐ ์‘๋‹ต ๋กœ์ง
โ”‚   โ”œโ”€โ”€ design-system
โ”‚   โ”‚   โ””โ”€โ”€ ๊ณตํ†ต UI ์ปดํฌ๋„ŒํŠธ ๋ฐ Storybook
โ”‚   โ”œโ”€โ”€ tailwind-config
โ”‚   โ”‚   โ””โ”€โ”€ ๊ณตํ†ต ์Šคํƒ€์ผ๊ณผ ๋””์ž์ธ ํ† ํฐ
โ”‚   โ””โ”€โ”€ typescript-config
โ”‚       โ””โ”€โ”€ ๊ณตํ†ต TypeScript ์„ค์ •
โ”‚
โ”œโ”€โ”€ pnpm-workspace.yaml
โ”œโ”€โ”€ turbo.json
โ””โ”€โ”€ package.json

๊ตฌ์กฐ ์„ค๊ณ„ ๊ธฐ์ค€

apps์—๋Š” ๊ณ ๊ฐ์šฉยท์ ์ฃผ์šฉ ์„œ๋น„์Šค์ฒ˜๋Ÿผ ๊ฐ๊ฐ ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐ์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

packages์—๋Š” ๋‘ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” UI, API, ์Šคํƒ€์ผ, TypeScript ์„ค์ •์„ ๋ฐฐ์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฅผ ํ†ตํ•ด ๊ฐ ์•ฑ์€ ์ž์‹ ์˜ ๋„๋ฉ”์ธ ๊ธฐ๋Šฅ์— ์ง‘์ค‘ํ•˜๊ณ , ๊ณตํ†ต ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ํŒจํ‚ค์ง€ ํ•œ ๊ณณ์—์„œ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.


๐ŸŽจ Design System

Compasser Design System

์„œ๋น„์Šค ์ „๋ฐ˜์—์„œ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ณตํ†ต UI ํŒจํ‚ค์ง€

๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ๋ฅผ packages/design-system์œผ๋กœ ๋ถ„๋ฆฌํ•˜๊ณ  Storybook์„ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

  • Button, Input, Modal ๋“ฑ ๊ณตํ†ต UI ์ปดํฌ๋„ŒํŠธ ํŒจํ‚ค์ง€ํ™”
  • ๊ณ ๊ฐ์šฉยท์ ์ฃผ์šฉ ์•ฑ์—์„œ ๋™์ผํ•œ ์ปดํฌ๋„ŒํŠธ ์žฌ์‚ฌ์šฉ
  • ์ปดํฌ๋„ŒํŠธ ์ƒํƒœ์™€ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ Storybook์—์„œ ๋…๋ฆฝ์ ์œผ๋กœ ํ™•์ธ
  • ๊ณตํ†ต ๋””์ž์ธ ํ† ํฐ์„ ํ†ตํ•ด ์ƒ‰์ƒยทํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผยท๊ฐ„๊ฒฉ ์ผ๊ด€์„ฑ ์œ ์ง€
  • UI ์ˆ˜์ • ์‚ฌํ•ญ์„ ํ•œ ํŒจํ‚ค์ง€์—์„œ ๊ด€๋ฆฌํ•˜์—ฌ ์•ฑ๋ณ„ ์ค‘๋ณต ์ˆ˜์ • ๋ฐฉ์ง€

๐ŸŽฏ Key Features

1. ์œ„์น˜ ๊ธฐ๋ฐ˜ ์นดํŽ˜ ํƒ์ƒ‰

์‚ฌ์šฉ์ž์˜ ํ˜„์žฌ ์œ„์น˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ฃผ๋ณ€ ์นดํŽ˜์™€ ์ด์šฉ ๊ฐ€๋Šฅํ•œ ๋žœ๋ค๋ฐ•์Šค๋ฅผ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. ์นดํŽ˜๋ณ„ ๋žœ๋ค๋ฐ•์Šค ๊ตฌ๋งค

์นดํŽ˜์—์„œ ํŒ๋งคํ•˜๋Š” ๋žœ๋ค๋ฐ•์Šค์˜ ์ •๋ณด์™€ ๊ฐ€๊ฒฉ์„ ํ™•์ธํ•˜๊ณ  ๊ตฌ๋งคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. ๊ฒฐ์ œ ๋ฐ ์ฃผ๋ฌธ ํ๋ฆ„

์ƒํ’ˆ ์„ ํƒ๋ถ€ํ„ฐ ์ฃผ๋ฌธ ํ™•์ธ๊ณผ ๊ฒฐ์ œ๊นŒ์ง€ ์ด์–ด์ง€๋Š” ์‚ฌ์šฉ์ž ํ๋ฆ„์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

4. QR ๊ธฐ๋ฐ˜ ์ƒํ’ˆ ํ™•์ธ

๊ตฌ๋งคํ•œ ๋žœ๋ค๋ฐ•์Šค๋ฅผ ๋งค์žฅ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก QR ๊ธฐ๋ฐ˜ ํ™•์ธ ํ๋ฆ„์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

5. ์Šคํƒฌํ”„ ์ ๋ฆฝ ๋ฐ ๊ด€๋ฆฌ

์นดํŽ˜ ์ด์šฉ ๋‚ด์—ญ์— ๋”ฐ๋ผ ์Šคํƒฌํ”„๋ฅผ ์ ๋ฆฝํ•˜๊ณ  ๋ณด์œ  ํ˜„ํ™ฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

6. ๊ณ ๊ฐยท์ ์ฃผ ์„œ๋น„์Šค ๋ถ„๋ฆฌ

๊ณ ๊ฐ๊ณผ ์ ์ฃผ์˜ ์‚ฌ์šฉ ๋ชฉ์ ์— ๋งž๊ฒŒ ์•ฑ์„ ๋ถ„๋ฆฌํ•˜๋ฉด์„œ๋„ ๊ณตํ†ต ์ฝ”๋“œ์™€ ๋””์ž์ธ ์‹œ์Šคํ…œ์€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ› ๏ธ Tech Stack

Next.js React TypeScript Tailwind CSS React Query Zustand Turborepo Storybook pnpm Vercel

๋ถ„๋ฅ˜ ๊ธฐ์ˆ 
Framework Next.js, React
Language TypeScript
Styling Tailwind CSS
Server State TanStack React Query
Client State Zustand
Monorepo Turborepo, pnpm Workspace
UI Development Storybook
Deployment Vercel

๐Ÿš€ Getting Started

1. Repository clone

git clone https://github.com/CUK-Compasser/FE.git
cd FE

2. Install dependencies

pnpm install

3. Run development environment

pnpm dev

4. Build

pnpm build

5. Type check

pnpm type-check

COMPASSER

์‚ฌ์šฉ์ž์™€ ์นดํŽ˜๋ฅผ ๋žœ๋ค๋ฐ•์Šค๋กœ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.