Packman-Client

Overview

서비스

서비스 이름 : Packman

서비스 소개 : 우리의 일상 속에서 혼자, 때로는 함께 챙겨야 하는 짐의 목록을 편리하게 작성하고, 놓치지 않게 도와주고, 챙김이 여정 속 즐겁고 손쉬운 행위가 될 수 있도록 도와주는 서비스 Packman 입니다.

팀원 소개

정세연 @n0eyes 김연이 @younyikim 이서영 @leeseooo 정윤선 @yunsun99
  • API Mocking, Socket, 패킹리스트 함께 수정하기 뷰
  • 스플래시, 홈 화면 리스트, 혼자 + 함께 패킹 시작하기 뷰
  • 상세 패킹 리스트 조회 및 수정, 삭제 / 프로필 편집 뷰
  • 소셜 로그인(구글, 카카오) / 리스트 작성하기, 엿보기 모달

기술 스택

  • typescript
  • next.js
  • react-query
  • msw

###코딩 컨벤션 : Airbnb React Style guide

명명규칙(Naming Conventions)

  1. 이름으로부터 의도가 읽혀질 수 있게 쓴다.
  • ex)

    // bad
    function q() {
      // ...stuff...
    }
    
    // good
    function query() {
      // ..stuff..
    }
  1. 오브젝트, 함수, 그리고 인스턴스에는 camelCase를 사용한다.
  • ex)

    // bad
    const OBJEcttsssss = {};
    const this_is_my_object = {};
    function c() {}
    
    // good
    const thisIsMyObject = {};
    function thisIsMyFunction() {}
  1. 클래스나 constructor에는 PascalCase를 사용한다.
  • ex)

    // bad
    function user(options) {
      this.name = options.name;
    }
    
    const bad = new user({
      name: 'nope',
    });
    
    // good
    class User {
      constructor(options) {
        this.name = options.name;
      }
    }
    
    const good = new User({
      name: 'yup',
    });
  1. 함수 이름은 동사 + 명사 형태로 작성한다. ex) postUserInformation( )
  2. 약어 사용은 최대한 지양한다.
  3. 이름에 네 단어 이상이 들어가면 팀원과 상의를 거친 후 사용한다

블록(Blocks)

  1. 복수행의 블록에는 중괄호({})를 사용한다.
  • ex)

    // bad
    if (test)
      return false;
    
    // good
    if (test) return false;
    
    // good
    if (test) {
      return false;
    }
    
    // bad
    function() { return false; }
    
    // good
    function() {
      return false;
    }
  1. 복수행 블록의 ifelse 를 이용하는 경우 elseif 블록 끝의 중괄호( } )와 같은 행에 위치시킨다.
  • ex)

    // bad
    if (test) {
      thing1();
      thing2();
    } 
    else {
      thing3();
    }
    
    // good
    if (test) {
      thing1();
      thing2();
    } else {
      thing3();
    }

코멘트(Comments)

  1. 복수형의 코멘트는 /** ... */ 를 사용한다.
  • ex)

    // good
    /**
     * @param {String} tag
     * @return {Element} element
     */
    function make(tag) {
      // ...stuff...
    
      return element;
    }
  1. 단일 행의 코멘트에는 // 을 사용하고 코멘트를 추가하고 싶은 코드의 상부에 배치한다. 그리고 코멘트의 앞에 빈 행을 넣는다.
  • ex)

    // bad
    const active = true; // is current tab
    
    // good
    // is current tab
    const active = true;
    
    // good
    function getType() {
      console.log('fetching type...');
    
      // set the default type to 'no type'
      const type = this._type || 'no type';
    
      return type;
    }

문자열(Strings)

  1. 문자열에는 싱크쿼트 '' 를 사용한다.
  • ex)

    // bad
    const name = "Capt. Janeway";
    
    // good
    const name = 'Capt. Janeway';
  1. 프로그램에서 문자열을 생성하는 경우는 문자열 연결이 아닌 template strings를 이용한다.
  • ex)

    // bad
    function sayHi(name) {
      return 'How are you, ' + name + '?';
    }
    
    // bad
    function sayHi(name) {
      return ['How are you, ', name, '?'].join();
    }
    
    // good
    function sayHi(name) {
      return `How are you, ${name}?`;
    }

함수(Functions)

  1. 화살표 함수를 사용한다.
  • ex)

     var arr1 = [1, 2, 3];
      var pow1 = arr.map(function (x) { // ES5 Not Good
        return x * x;
      });
    
      const arr2 = [1, 2, 3];
      const pow2 = arr.map(x => x * x); // ES6 Good

조건식과 등가식(Comparison Operators & Equality)

  1. == 이나 != 보다 ===!== 을 사용한다.
  2. 단축형을 사용한다.
  • ex)

    // bad
    if (name !== '') {
      // ...stuff...
    }
    
    // good
    if (name) {
      // ...stuff...
    }
  1. 비동기 함수를 사용할 때 Promise함수의 사용은 지양하고 async, await를 쓰도록 한다

기타

  • 단위 : rem, em 사용

commit message 컨벤션

  • gitmoji 쓸람쓸
  • 안쓰면 커밋 컨벤션 대표적인거만 지키자~

브랜치 전략 (ex. git flow)

  • github flow 사용
  • 작업 전에 이슈 생성
  • 이슈 번호로 브랜치를 파서 작업
  • 작업이 다 끝나면 피쳐 브랜치에서 main 브랜치로 Pull Request 작성
  • 같은 팀원 3인의 Approve를 받아야 main 브랜치에 머지 가능

폴더 구조

.
├── utils 
├── mocks 🗂 목 데이터 저장
├── package.json 📦 설치된 패키지를 관리하는 파일
├── component
│   │   ├── common 🗂 공통으로 쓰일 컴포넌트 저장
│   │   │   ├── Footer
│   │   │   ├── Header
│   │   │   └── assets
│   │   ├── home 🗂 main 페이지에 쓰일 컴포넌트 저장
│   │   └── together 🗂 together 페이지에 쓰일 컴포넌트 저장
└── pages
    ├── _app.tsx ✡️ 앱의 라우팅과 글로벌 스타일 지정
    ├── index.tsx    
    ├── together.tsx
    └── together/pack/[id].tsx

서비스의 핵심 기능

1. 회원가입, 로그인 뷰

  • 소셜 로그인을 통해 유저가 빠르게 회원가입과 로그인을 할 수 있도록 합니다. 구글 로그인과 카카오 로그인 두가지 소셜 로그인을 이용할 수 있습니다. (구글은 구현 진행 중)

스크린샷 2022-07-22 오후 9 48 43

2. 폴더 뷰

  • 패킹 리스트 작성을 유도하는 CTA 버튼이 있는 화면입니다.
  • 사용자가 폴더를 1개 이상 생성하면 해당 버튼이 +모양의 플로팅 액션 버튼으로 바뀌며, 해당 버튼을 통해 혼자 및 함께 리스트를 추가 및 폴터 추가할 수 있습니다.
스크린샷 2022-07-22 오후 9 48 43 스크린샷 2022-07-22 오후 9 49 22 스크린샷 2022-07-22 오후 9 49 55 스크린샷 2022-07-22 오후 9 50 03

3. 리스트 목록 뷰

  • 폴더 안 패킹 리스트 목록을 확인할 수 있는 화면입니다.
  • 해당 화면은 함께, 혼자에 따라 구분된 폴더에 알맞게 리스트가 소속되게 하며, 폴더 우측 초록색 토글을 통해 폴더간 이동을 가능하게 합니다.
스크린샷 2022-07-22 오후 9 50 03 스크린샷 2022-07-22 오후 9 50 03 스크린샷 2022-07-22 오후 9 50 03

4. 혼자 패킹 리스트 뷰 / 함께 패킹 리스트 뷰

혼자 패킹 리스트 뷰

  • 유저는 리스트 뷰에서 손쉽게 카테고리와 리스트를 생성, 수정할 수 있습니다.

함께 패킹 리스트 뷰

  • 함께 패킹 리스트를 생성하면, 초대 링크를 복사할 수 있는 모달이 뜹니다.
  • 초대 링크를 통해 일행에서 리스트를 공유할 수 있습니다. 초대된 일행이 들어오면, 일행도 리스트를 작성, 수정할 수 있습니다.
  • 해당 뷰에서 사용자는 새로운 짐 추가 및 수정, 카테고리 및 리스트 수정, 짐 챙길 사람(담당자) 배정 등의 기능을 이용할 수 있습니다.

스크린샷 2022-07-22 오후 10 10 30


Comments
  • feat/#163 멤버 관리 뷰에서 편집 페이지 기본적인 스타일링 완료

    feat/#163 멤버 관리 뷰에서 편집 페이지 기본적인 스타일링 완료

    Issue #163

    구현 사항

    • [x] 편집 버튼 누르면 리스트 소유자를 제외한 멤버들에게 x버튼(삭제버튼) 생성
    • [x] 편집 버튼 누르면 편집 버튼은 취소 버튼으로 텍스트 변경
    • [x] 편집 버튼 누르면 멤버 초대하기 버튼은 완료 버튼으로 텍스트 변경

    Need Review


    Reference


    • close #163
    CSS FEAT 
    opened by yunsun99 2
  • fix/#232: Layout 컴포넌트 추가 및 CSS 이름 변경

    fix/#232: Layout 컴포넌트 추가 및 CSS 이름 변경

    Issue #232 : Layout 컴포넌트 추가 및 CSS 이름 변경

    구현 사항

    • [x] Layout 컴포넌트 추가 및 CSS 이름 변경
    • [x] 폴더 초기 스크롤 수정 및 fab 버튼 표시 조건 수정

    Need Review


    Reference


    • close #232
    FIX 
    opened by younyikim 1
  • Fix/#373 폴더 에러 수정

    Fix/#373 폴더 에러 수정

    Issue #373 : 폴더 에러 수정

    구현 사항

    • [x] 생성시 연속 폴더 생성하고, 화면 밖 누르면 같은 이름 폴더 자동으로 생겨버림 → 그냥 생성 아예 안되게
    • [x] PC에서 엔터 누르면 폴더 생성 안되고 밖을 누르거나 해야함 → 컴에서 안되는 오류 수정 필요
    • [x] 폴더 생성시, 폴더 이름 적는 칸 아래 ‘개의 리스트’로 나옴 → ‘0개의 리스트’로 수정 필요
    • [x] 폴더 생성시 인풋창 좌우 여백 동일하게 맞춰주세요~

    Need Review


    Reference


    • close #373
    FIX 
    opened by younyikim 0
  • Br/#361 meta tag 반영 안 됨 이슈 해결

    Br/#361 meta tag 반영 안 됨 이슈 해결

    Issue #361 : meta tag 반영 안 됨 이슈 해결

    구현 사항

    • [x] 요 링크 (https://github.com/vercel/next.js/issues/35172) 를 참고해서 혹시 Loading을 return하고 다시 렌더링하는 과정에서 문제가 있을 가능성을 고려하여 AsyncBoundary의 loading fallback 부분을 잠시 주석처리 했음
    • [x] 이전 pr에서 변경했던 부분 싹 다 되돌림 -> 현재 모두 null로 나오고 있는데 원상복구 시키기 위함..

    Need Review


    Reference

    image


    • close #
    FIX 
    opened by leeseooo 0
  • Br/#361 meta tag 반영 안 됨 이슈 해결

    Br/#361 meta tag 반영 안 됨 이슈 해결

    Issue #361 : meta tag 반영 안 됨 이슈 해결

    구현 사항

    • [x] _app.tsx에서 HeadMeta의 위치를 바꿔보는 테스트 -> 참고(https://stackoverflow.com/questions/71625889/next-js-dynamic-head-tags-are-not-reflected) -> Provider와 나란히 둬보라고 해서.. 근데 Recoil Persist 때문에 안 될 것 같은데 일단 테스트..

    Need Review


    Reference


    • close #
    FIX 
    opened by leeseooo 0
  • [QA]

    [QA]

    /folder

    • [ ] 폴더 생성 시 x 버튼 간격 조정
    • [ ] 폴더 많아질 시 스크롤 안됨
    • [ ] input outline 삭제
    • [ ] 플로팅 버튼 위치 수정
    • [ ] 키보드의 완료 버튼 눌렀을때도 폴더 생성 가능하도록 변경(blur 처리)
    • [ ] 폴더 기본 이미지 변경
    스크린샷 2022-08-02 오후 5 16 14
    • [ ] 키보드가 있는 상태에서 혼자 패킹 리스트 스와이퍼 클릭시 아래와 같은 현상
    스크린샷 2022-08-02 오후 5 20 25
    • [ ] 테두리 dashed로 나옴(사파리 문제라 따로 적용 필요)
    스크린샷 2022-08-03 오후 1 18 47

    /packingList (?)

    • [x] 전체 선택 버튼 좌우 간격 조정
    • [x] 취소버튼 사이즈 조정
    • [x] 리스트 아이템 드래깅 버그 해결
    • [x] 패킹리스트 부분 스크롤 안 됨 이슈
    스크린샷 2022-08-02 오후 5 22 58
    • [ ] 슬라이드로 삭제 버튼 생성 후 휴지통 클릭 두 번 하고 다시 삭제 버튼 생성 시 간격 벌어짐 + 슬라이드 액션 오류
    • [ ] 플로팅 버튼 위치 수정
    스크린샷 2022-08-02 오후 5 23 13
    • [x] 태블릿 뷰에서 사이즈 미스(고정값 사용 X)
    스크린샷 2022-08-03 오후 1 15 14

    참고

    BUG 
    opened by n0eyes 0
Owner
null
Automatically generated documentation for the Valorant API endpoints the client uses internally.

Valorant API Docs To read documentation and get started, see Docs This is a project designed to automatically document Valorant endpoints based on a J

Techdoodle 223 Dec 25, 2022
Client-Side Prototype Pollution Tools

Client-Side Prototype Pollution Tools Match rules for Burp Software Version Reporter extension Match rules that passively detect vulnerable libraries

Sergey Bobrov 73 Oct 4, 2022
client-side prototype pullution vulnerability scanner

JSPanda JSpanda is client-side prototype pollution vulnerability scanner. It has two key features, scanning vulnerability the supplied URLs and analyz

Red Section 46 Dec 25, 2022
Front-end telkom-juara pwa client

TelkomJuara This project was generated with Angular CLI version 12.2.4. Development server Run ng serve for a dev server. Navigate to http://localhost

Dio Lantief Widoyoko 2 Dec 31, 2021
Free, open-source client or server-side APIs to "lint" user input.

passbird Free, open-source client or server-side APIs to lint user input. Right now, you can check type for an email address i.e., either of disposabl

Vaibhav Pandey 1 Dec 26, 2021
Venni backend - The backend of the Venni client apps implementing the credit card payments, matching algorithms, bank transfers, trip rating system, and more.

Cloud Functions Description This repository contains the cloud functions used in the Firebase backend of the Venni apps. Local Development Setup For t

Abrantes 1 Jan 3, 2022
Test for client-side script injection via NFTs

Rektosaurus A test suite to check for client-side script injection via NFTs. Overview NFTs contain a variety of metadata and content that gets process

Bernhard Mueller 42 Jun 28, 2022
A jQuery plugin for doing client-side translations in javascript.

About jQuery-i18n is a jQuery plugin for doing client-side translations in javascript. It is based heavily on javascript i18n that almost doesn't suck

Dave Perrett 202 May 19, 2021
Equibles Stocks - JavaScript client

Equibles Stocks - JavaScript client Installation For Node.js npm To publish the library as a npm, please follow the procedure in "Publishing npm packa

Equibles 4 Jul 8, 2022
This is an unofficial front end for Hacker News, reminiscent of the Windows XP era Outlook email client on a Windows XP default desktop

Hacker XP Hacker News styled as the Windows XP Outlook email client. Try out Hacker XP here! Description This is an unofficial front end for Hacker Ne

null 19 Jul 12, 2022
Example auto-generated OpenAPI client library and an accompanying example Angular app.

To utilize this demo Head into petstore_frontend\petes_pets Run npm install Go to frontend_client_lib\out Run npm install Head back into petstore_fron

Alan Gross 1 Jan 21, 2022
Javascript client for Sanity. Works in node.js and modern browsers (older browsers needs a Promise polyfill).

@sanity/client Javascript client for Sanity. Works in node.js and modern browsers (older browsers needs a Promise polyfill). Requirements Sanity Clien

Sanity 23 Nov 29, 2022
WebVM is a server-less virtual Linux environment running fully client-side in HTML5/WebAssembly.

WebVM This repository hosts the source code of the https://webvm.io live demo page. WebVM is a server-less virtual Linux environment running fully cli

Leaning Technologies Ltd 1.7k Jan 8, 2023
A client for Telegram ✨ (Desktop)

Theta Express Desktop client for Telegram ??‍?? Theta Express is a desktop client for that Telegram app, that gives most of the basic functionalities

Abdelrahman Elbeltaji 3 Feb 5, 2022
This React-Based WebPage allows the client/user system to create their own blog, where users can publish their own opinions.

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

Gauri Bhand 4 Jul 28, 2022
ACME client microservice for the Cumulocity IoT Edge to automatically issue and renew valid certificates via e.g. Let's Encrypt.

Cumulocity IoT Edge - ACME This repository contains the sources for an ACME microservice that can be used to periodically issue/renew certificates for

Software AG 3 May 3, 2022
Unofficial WhatsApp Linux client built with Electron.

WhatsApp Desktop for Linux (unofficial) WhatsApp Linux client built with Electron. As WhatsApp doesn't compile the official app for Linux, here is an

Alberto Mimbrero 39 Jan 3, 2023
An exact, client-side mechanical keyboard plate generator

ai03 Plate Generator v2 Yet another mechanical keyboard plate generator. Try it live Available here Features A focus on exceptionally accurate plate g

ai03 34 Jan 3, 2023
A Simple mod for the TIDAL Client

Waves, a (VERY) simple mod for the TIDAL client Features (so far) Partial Analytic Blocking devTools (toggled with CTRL + Shift + I) React devTools In

Sammy 12 Aug 16, 2022