Giter Club home page Giter Club logo

chulcheck's Introduction

ChulCheck-client

GitHub Workflow Status

서비스 소개

Chulcheck 앱은 팀원과 스터디를 진행할 때 출석을 관리할 수 있는 앱입니다.

주요 기능

  • 사용자는 스터디 그룹을 만들 수 있습니다.
  • 사용자는 스터디 그룹을 검색할 수 있습니다.
  • 사용자는 스터디 그룹에 참여할 수 있습니다.
  • 사용자는 스터디 그룹을 선택하고 출석할 수 있습니다.

기술 스택

개발

TypeScript React Styled Components

코드 관리 & Continuous Integration

ESLint prettier GitHub Actions

폴더 구조

details
src
 ┣ api
 ┃ ┣ attendance.ts
 ┃ ┣ auth.ts
 ┃ ┣ instance.ts
 ┃ ┣ organization.ts
 ┃ ┗ types.ts
 ┣ components
 ┃ ┣ AuthFormTemplate
 ┃ ┃ ┣ AuthFormTemplate.stories.tsx
 ┃ ┃ ┣ AuthFormTemplate.tsx
 ┃ ┃ ┗ index.ts
 ┃ ┣ Calender
 ┃ ┃ ┣ Calender.tsx
 ┃ ┃ ┣ CalenderHeader.tsx
 ┃ ┃ ┣ CalenderInner.tsx
 ┃ ┃ ┣ ColumnHeader.tsx
 ┃ ┃ ┗ index.ts
 ┃ ┣ CalenderData
 ┃ ┃ ┣ CalenderData.tsx
 ┃ ┃ ┣ DataCell.tsx
 ┃ ┃ ┗ index.ts
 ┃ ┣ Header
 ┃ ┃ ┣ Header.tsx
 ┃ ┃ ┗ index.ts
 ┃ ┣ layouts
 ┃ ┃ ┣ AuthFormLayout.tsx
 ┃ ┃ ┣ GlobalLayout.tsx
 ┃ ┃ ┗ MainPageLayout.tsx
 ┃ ┣ MainPage
 ┃ ┃ ┣ AttendanceCard.tsx
 ┃ ┃ ┗ index.ts
 ┃ ┣ OrganizationInfoPage
 ┃ ┃ ┣ index.ts
 ┃ ┃ ┣ Layout.tsx
 ┃ ┃ ┗ Template.tsx
 ┃ ┗ shared
 ┃ ┃ ┣ Button
 ┃ ┃ ┃ ┣ ButtonBase.stories.tsx
 ┃ ┃ ┃ ┣ ButtonBase.tsx
 ┃ ┃ ┃ ┣ index.ts
 ┃ ┃ ┃ ┣ LoadingButton.stories.tsx
 ┃ ┃ ┃ ┗ LoadingButton.tsx
 ┃ ┃ ┣ Dropdown
 ┃ ┃ ┃ ┣ Dropdown.stories.tsx
 ┃ ┃ ┃ ┣ Dropdown.tsx
 ┃ ┃ ┃ ┣ DropdownItem.tsx
 ┃ ┃ ┃ ┣ DropdownMenu.tsx
 ┃ ┃ ┃ ┗ index.ts
 ┃ ┃ ┣ Headings
 ┃ ┃ ┃ ┣ Headings.tsx
 ┃ ┃ ┃ ┗ index.ts
 ┃ ┃ ┣ Input
 ┃ ┃ ┃ ┣ index.ts
 ┃ ┃ ┃ ┣ Input.stories.tsx
 ┃ ┃ ┃ ┗ Input.tsx
 ┃ ┃ ┣ Modal
 ┃ ┃ ┃ ┣ index.ts
 ┃ ┃ ┃ ┣ Modal.stories.tsx
 ┃ ┃ ┃ ┗ Modal.tsx
 ┃ ┃ ┣ NavigationBar
 ┃ ┃ ┃ ┣ index.ts
 ┃ ┃ ┃ ┣ NavigationBar.stories.tsx
 ┃ ┃ ┃ ┗ NavigationBar.tsx
 ┃ ┃ ┣ Paragraph
 ┃ ┃ ┃ ┣ index.ts
 ┃ ┃ ┃ ┣ Paragraph.stories.tsx
 ┃ ┃ ┃ ┗ Paragraph.ts
 ┃ ┃ ┣ Select
 ┃ ┃ ┃ ┣ ArrowDown.tsx
 ┃ ┃ ┃ ┣ index.ts
 ┃ ┃ ┃ ┗ Select.tsx
 ┃ ┃ ┗ Spinner
 ┃ ┃ ┃ ┣ index.ts
 ┃ ┃ ┃ ┣ Spinner.stories.tsx
 ┃ ┃ ┃ ┗ Spinner.tsx
 ┣ contexts
 ┃ ┣ AttendanceProvider.tsx
 ┃ ┗ index.ts
 ┣ factory
 ┃ ┗ Calender
 ┃ ┃ ┣ Caldender.ts
 ┃ ┃ ┣ Day.ts
 ┃ ┃ ┣ index.ts
 ┃ ┃ ┗ Week.ts
 ┣ hooks
 ┃ ┣ shared
 ┃ ┃ ┣ useClickAway.ts
 ┃ ┃ ┣ useFetch.ts
 ┃ ┃ ┣ useForm.ts
 ┃ ┃ ┣ useInterval.ts
 ┃ ┃ ┗ useLoading.ts
 ┃ ┣ useAttendance
 ┃ ┃ ┣ index.ts
 ┃ ┃ ┣ useAttendance.helper.ts
 ┃ ┃ ┗ useAttendance.ts
 ┃ ┣ useCalender
 ┃ ┃ ┣ index.ts
 ┃ ┃ ┣ useCalender.helper.ts
 ┃ ┃ ┗ useCalender.ts
 ┃ ┣ useOrganization
 ┃ ┃ ┣ index.ts
 ┃ ┃ ┣ useOrganization.helper.ts
 ┃ ┃ ┗ useOrganization.ts
 ┃ ┗ useTimer
 ┃ ┃ ┣ index.ts
 ┃ ┃ ┗ useTimer.ts
 ┣ pages
 ┃ ┣ GroupCreatePage.tsx
 ┃ ┣ MainPage.tsx
 ┃ ┣ NotFoundPage.tsx
 ┃ ┣ OrganizationInfoPage.tsx
 ┃ ┣ SigninPage.tsx
 ┃ ┗ SignupPage.tsx
 ┣ routes
 ┃ ┣ index.ts
 ┃ ┣ Protected.tsx
 ┃ ┗ router.tsx
 ┣ themes
 ┃ ┣ breakpoints.ts
 ┃ ┣ colors.ts
 ┃ ┣ fontSizes.ts
 ┃ ┣ headings.ts
 ┃ ┗ shadows.ts
 ┣ utils
 ┃ ┣ bisect.ts
 ┃ ┣ colorSelector.ts
 ┃ ┣ dateFormat.ts
 ┃ ┣ parse.ts
 ┃ ┗ storage.ts
 ┣ __tests__
 ┃ ┣ bisect.test.ts
 ┃ ┣ dateFormat.test.ts
 ┃ ┗ parse.test.ts
 ┣ App.css
 ┣ App.tsx
 ┣ index.tsx
 ┣ logo.svg
 ┣ react-app-env.d.ts
 ┣ reportWebVitals.ts
 ┗ setupTests.ts

contributing

기능을 제안하거나 버그를 발견했을 시 기여할 수 있습니다.

  1. issue 탭을 이용하여 이슈 등록
  2. pull request

branch rules

# example

feat: 새로운 기능 추가
  • feat: 기능 추가, 삭제, 변경(or ✨ emoji) - 제품 코드 수정 발생
  • fix: 버그 수정(or 🚑 emoji) - 제품 코드 수정 발생
  • doc: 문서 추가, 삭제, 변경(or 📚 emoji) - 코드 수정 없음
  • style: 코드 형식, 정렬, 주석 등의 변경, eg; 세미콜론 추가(or 🎨 emoji) - 제품 코드 수정 발생, 하지만 동작에 영향을 주는 변경은 없음
  • refactor: 코드 리펙토링, eg. renaming a variable(or 🚜 emoji) - 제품코드 수정 발생
  • test: 테스트 코드 추가, 삭제, 변경 등(or 🔬 emoji) - 제품 코드 수정 없음. 테스트 코드에 관련된 모든 변경에 해당
  • chore: 프로젝트 구동 환경의 변경 - 제품 코드 수정 없음

위쪽이 가장 높은 우선 순위를 갖습니다.

테스트 화면

  • 로그인

test1

  • 그룹 만들기

create_group

  • 그룹 찾기

search_group

  • 내가 속한 그룹 보기

my_group

  • 출석하기

attend

  • 달력 컴포넌트 동작 방식

test2

참고사항

백엔드는 chulcheck-server 레포에 있으며, 현재 배포되지 않은 상태입니다.

chulcheck's People

Contributors

loopy-dev avatar

Watchers

 avatar

chulcheck's Issues

타이머 구현

  • 출석 하기 전, 현재 정확한 시간이 몇 시인지 알기 위한 타이머 구현
  • 타이머의 시간을 포맷하기 위한 포맷 함수 구현 및 테스트 코드 작성
  • 우선 서버와 연동 없이, 로컬 시간으로 정확한 타이머 구현 예정

bisect 알고리즘 구현

현재 하나의 셀 당 O(N) 시간복잡도를 가짐

  • Calender 컴포넌트를 만드는데 O(N ** 2) 시간 복잡도를 갖기 때문에 총 O(N**3)의 시간 복잡도를 갖게 됨
  • O(1)으로 접근해야 할 필요성 존재

공간 복잡도와 시간 복잡도 모두를 복합적으로 고려하여, 이분탐색으로 탐색 알고리즘을 결정

그룹 만들기 기능 구현

  • 그룹 만들기 api 연결
  • 그룹 만들기 버튼 구현
  • 그룹 만들기 페이지 구현 → 로그인한 사람만 이동할 수 있도록, 와이어프레임 만들고 이를 기반으로 구현
  • form 구현
  • Input 컴포넌트 고도화

dropdown 고도화

dropdown 컴포넌트 고도화

  • useClickAway 구현
  • useClickAway 적용
  • focus event 처리

dateFormat 유틸 함수 변경이 필요

단순 date.getTime() 이나 date.getHours() 같은 non-UTC 메서드를 사용하여 함수를 정의할 경우, 로컬 타임으로 포맷되어 테스트 환경과 로컬 환경의 시간대가 달라, 테스트 코드가 통과하지 못하는 문제가 존재

  • 이를 해결하기 위하여 UTC, 로컬 함수의 분리 필요

그룹 join 기능 구현

  • api 연결
  • 내가 속해있는 그룹 드롭다운 구현
    • 없으면 없다고 표시하기
  • #66
  • 우선은 버튼으로 간단하게 구현하기

테스트 환경 변경

  • 테스트 커버리지 측정을 위한 테스트 환경 변경 필요
  • 새로운 환경 구축

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.