Skip to content

우리 학교 재능 공유 플랫폼 Cake의 웹 프론트엔드 저장소입니다.

Notifications You must be signed in to change notification settings

wanted-fork-fork/cake-FE

Folders and files

NameName
Last commit message
Last commit date
Dec 3, 2021
Nov 10, 2021
Nov 30, 2021
Dec 3, 2021
Dec 3, 2021
Nov 9, 2021
Nov 28, 2021
Oct 30, 2021
Oct 30, 2021
Nov 23, 2021
Nov 29, 2021
Oct 30, 2021
Oct 30, 2021
Dec 3, 2021
Dec 2, 2021
Dec 2, 2021
Nov 30, 2021

Repository files navigation

Cake - 우리 학교 재능 공유 플랫폼

재능 공유? A piece of Cake 이지 🍰
우리 학교 재능 공유 플랫폼, Cake!

🍰 Cake! - Web Front-end

우리 학교 재능 공유 플랫폼, Cake🍰 의 웹 프론트엔드 레포지토리입니다.
Cake는 위드코로나 시행에 발맞춰, 대학생들이 같은 학교 학생과 직접 만나 서로의 재능을 교환할 수 있도록 돕는 재능 공유 플랫폼입니다.
Cake와 함께, 믿음직한 우리 학교 선후배, 동기들과 새로운 재능을 개발해 보세요! 🔥

주요 기능

  • 스터디 목록: 우리 학교에서 모집 중인 스터디 목록을 볼 수 있습니다.
  • 스터디 상세 보기: 스터디에 대한 상세 정보를 확인하고, 참여 신청을 보낼 수 있습니다.
  • 스터디 만들기: 스터디를 만들 수 있습니다. 내가 줄 수 있는 것과 받고 싶은 것, 언제 어디에서 스터디를 할 지를 고르고, 스터디에 대해 더 자세한 설명을 할 수도 있습니다.
  • 스터디 관리하기: 내가 만든 스터디나 참여한 스터디 목록을 볼 수 있습니다. 내가 만든 스터디를 신청한 사람들을 관리하거나, 내가 참여한 스터디의 채팅방을 확인할 수 있습니다.
  • 스터디 검색하기: 내가 주고 싶은 것과 받고 싶은 것, 스터디의 형태를 골라서 원하는 스터디를 찾을 수 있습니다.
  • 그 외에도 마이페이지, 다른 사람의 프로필 보기 등의 기능을 제공합니다.
  • 11월까지 개발하는 내용은 1:1 스터디에 한정됩니다. 이후에 1:n, n명 스터디 개발 및 채팅, 알림, 결제 기능을 개발할 예정입니다.

🔎 프로젝트 살펴보기

프로젝트 실행

프로젝트의 root 디렉토리에서 아래 커맨드를 실행

npm run install 
npm run dev

이후, 브라우저에서 localhost:3000 확인

주요 기술

  • React.js: 웹 UI 라이브러리
  • Next.js: 프로젝트 생성, SSR, Routing 등의 기능을 사용
  • styled-component: css-in-js을 통해 컴포넌트 스타일을 관리하기 위해 사용
  • MobX: 상태 관리 라이브러리
  • Axios: HTTP 비동기 통신을 위하여 사용
  • TypeScript: 정적 타입 사용 및 코드 에러 검출
  • ESLint & Prettier: 코드 컨벤션 검사

외부 API

컴포넌트 설계

Atomic Design Pattern

  • Brad Frost의 Atomic Design 을 따릅니다.
  • Atoms: 기본 HTML Element (button, input 등...)
  • Molecules: Atom 컴포넌트를 조합하여 만들어진 간단한 기능을 할 수 있는 컴포넌트. (검색 박스 등)
  • Organisms: Molecule, Atom 컴포넌트를 조합하여 만들어짐. 하나의 UI 섹션을 이룸. (헤더 내비게이션, 상품 그리드 리스트)
  • Templates: 위의 컴포넌트를 조합하여 하나의 페이지를 만듦. (메인 페이지)
  • Pages: 위의 컴포넌트들이 기능하기 위한 로직과 내용을 제공.
  • Page 외의 컴포넌트에는 로직이 포함되지 않도록 합니다.

Storybook Driven Development

  • UI 컴포넌트를 추가할 때에는 컴포넌트의 스토리북의 스토리를 만들어 UI를 확인한 후 실제로 적용합니다.
  • UI 컴포넌트를 수정할 때에는 반드시 React 로컬 개발 환경이 아니라 스토리북을 확인하며 작업합니다.

프로젝트 구조

├── public              # Favicon 등 Static Resource 저장
├── .storybook          # Storybook 설정 파일
├── src
│   ├── components      # 컴포넌트 파일 - Atomic Design에 따라 정리됨
│   │    ├── atoms
│   │    ├── icon
│   │    ├── molecules
│   │    └── organs
│   ├── constant        # enum 등의 상수 값
│   ├── hooks           # Custom Hooks
│   ├── lib             # 외부 라이브러리 커스텀 설정
│   ├── models          # Typescript 타입과 API Response 타입 정의
│   │    └── dto        # API Response 타입 정의
│   ├── pages           # 로직 정의를 위한 페이지 컴포넌트, 이름은 routing에 따라 정함
│   ├── services        # REST API 사용을 위한 HTTP 서비스
│   ├── store           # MobX 스토어
│   ├── stories         # Storybook 스토리 파일
│   ├── styles          # 전역 스타일 설정
│   │    ├── fonts      # 폰트 적용
│   │    └── template   # 템플릿 컴포넌트에서 공통으로 사용되는 styled-component
│   ├── templates       # 페이지 UI를 표시하기 위한 템플릿 컴포넌트
│   └── utils           # 공통으로 사용하기 위한 기초 util 함수
├── README.md           # README
├── .babelrc            # 바벨 설정 파일 - styled-component SSR 설정 및 antd 설정
├── .eslintrc.json      # ESLint 설정 파일 - airbnb 컨벤션을 따름
├── .prettierrc         # Prettier 설정 파일
├── netlify.toml        # Netlify 플러그인 설정 파일
├── next-env.d.ts       # Next.js 타입 설정 파일 - 변경 금지
├── next.config.js      # Next.js 설정 파일 - 환경 변수, antd less 설정 등
├── package-lock.json   # npm 패키지 의존성 파일
├── package.json        # npm 패키지 의존성 및 프로젝트 상세 파일
└── tsconfig.json       # 타입스크립트 설정 파일

👥 협업

Git Conventions

Branch naming

VincentDriessen의 Git Flow 를 따릅니다.
배포를 위해 사용하고 있는 Netlify에서 Main 브랜치에 커밋 푸시가 일어날 때마다 배포를 진행하므로, 배포를 진행해야 할 때에만 main 브랜치에 머지를 진행합니다.

  • 브랜치 종류
    • main: main 브랜치를 기준으로 배포를 진행합니다.
    • develop: 개발을 진행하는 중심 브랜치입니다.
    • release: QA를 진행하는 브랜치입니다.
    • feature: 새로운 기능을 개발하는 브랜치입니다. 생성된 Github Issue를 단위로 작업합니다.
    • hotfix: main 배포 브랜치의 버그를 긴급 수정하기 위한 브랜치입니다.
    • docs: README, Template 등의 문서를 수정하기 위한 브랜치입니다.
    • gh-page: 스토리북을 github-page에 배포하기 위한 브랜치입니다.
  • Feature 브랜치 네이밍 규칙
    • {브랜치 종류}/{이슈 번호}-{작업 요약}
    • ex) feature/1-add-login-ui

Commit naming

<type>: <subject>
<BLANK LINE>
<body>
  • types
    • feat (feature)
    • fix (bug fix)
    • docs (documentation)
    • style (formatting, missing semi colons, …)
    • refactor
    • test (when adding missing tests)
    • chore (maintain)
  • body: 변경 사유와 변경 내용을 작성 (선택)