Skip to content

Team-Packman/Packman-Client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Packman : ๋‚ด ์†์•ˆ์˜ ์ง ์ฑ™๊น€ ๋„์šฐ๋ฏธ

์šฐ๋ฆฌ์˜ ์ผ์ƒ ์†์—์„œ ํ˜ผ์ž, ๋•Œ๋กœ๋Š” ํ•จ๊ป˜ ์ฑ™๊ฒจ์•ผ ํ•˜๋Š” ์ง์˜ ๋ชฉ๋ก์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ž‘์„ฑํ•˜๊ณ , ๋†“์น˜์ง€ ์•Š๊ฒŒ ๋„์™€์ฃผ๊ณ , ์ฑ™๊น€์ด ์—ฌ์ • ์† ์ฆ๊ฒ๊ณ  ์†์‰ฌ์šด ํ–‰์œ„๊ฐ€ ๋  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ์„œ๋น„์Šค Packman ์ž…๋‹ˆ๋‹ค.

์„œ๋น„์Šค ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿงณ Packman ์„œ๋น„์Šค ๋ฐ”๋กœ๊ฐ€๊ธฐ

ํŒ€์› ์†Œ๊ฐœ

์ •์„ธ์—ฐ @n0eyes ๊น€์—ฐ์ด @younyikim ์ด์„œ์˜ @leeseooo ์ •์œค์„  @yunsun99
  • API Mocking, Socket, ํŒจํ‚น๋ฆฌ์ŠคํŠธ ํ•จ๊ป˜ ์ˆ˜์ •ํ•˜๊ธฐ ๋ทฐ
  • ์Šคํ”Œ๋ž˜์‹œ, ํ™ˆ ํ™”๋ฉด ๋ฆฌ์ŠคํŠธ, ํ˜ผ์ž + ํ•จ๊ป˜ ํŒจํ‚น ์‹œ์ž‘ํ•˜๊ธฐ ๋ทฐ
  • ์ƒ์„ธ ํŒจํ‚น ๋ฆฌ์ŠคํŠธ ์กฐํšŒ ๋ฐ ์ˆ˜์ •, ์‚ญ์ œ / ํ”„๋กœํ•„ ํŽธ์ง‘ ๋ทฐ
  • ์†Œ์…œ ๋กœ๊ทธ์ธ(๊ตฌ๊ธ€, ์นด์นด์˜ค) / ๋ฆฌ์ŠคํŠธ ์ž‘์„ฑํ•˜๊ธฐ, ์—ฟ๋ณด๊ธฐ ๋ชจ๋‹ฌ

๊ธฐ์ˆ  ์Šคํƒ

My Skills

(JavaScript / TypeScript / React.js / Next.js / React Query / MSW)

ํด๋” ๊ตฌ์กฐ

.
โ”œโ”€โ”€ 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. ๋ฆฌ์ŠคํŠธ ๋ชฉ๋ก ๋ทฐ

  • ํด๋” ์•ˆ ํŒจํ‚น ๋ฆฌ์ŠคํŠธ ๋ชฉ๋ก์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ํ™”๋ฉด์ž…๋‹ˆ๋‹ค.
  • ํ•ด๋‹น ํ™”๋ฉด์€ ํ•จ๊ป˜, ํ˜ผ์ž์— ๋”ฐ๋ผ ๊ตฌ๋ถ„๋œ ํด๋”์— ์•Œ๋งž๊ฒŒ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์†Œ์†๋˜๊ฒŒ ํ•˜๋ฉฐ, ํด๋” ์šฐ์ธก ์ดˆ๋ก์ƒ‰ ํ† ๊ธ€์„ ํ†ตํ•ด ํด๋”๊ฐ„ ์ด๋™์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-02-02 แ„‹แ…ฉแ„’แ…ฎ 4 28 39 แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-02-02 แ„‹แ…ฉแ„’แ…ฎ 4 28 50 แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-02-02 แ„‹แ…ฉแ„’แ…ฎ 4 29 01

4. ํ˜ผ์ž ํŒจํ‚น ๋ฆฌ์ŠคํŠธ ๋ทฐ / ํ•จ๊ป˜ ํŒจํ‚น ๋ฆฌ์ŠคํŠธ ๋ทฐ

ํ˜ผ์ž ํŒจํ‚น ๋ฆฌ์ŠคํŠธ ๋ทฐ

  • ์œ ์ €๋Š” ๋ฆฌ์ŠคํŠธ ๋ทฐ์—์„œ ์†์‰ฝ๊ฒŒ ์นดํ…Œ๊ณ ๋ฆฌ์™€ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑ, ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•จ๊ป˜ ํŒจํ‚น ๋ฆฌ์ŠคํŠธ ๋ทฐ

  • ํ•จ๊ป˜ ํŒจํ‚น ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด, ์ดˆ๋Œ€ ๋งํฌ๋ฅผ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋‹ฌ์ด ๋œน๋‹ˆ๋‹ค.
  • ์ดˆ๋Œ€ ๋งํฌ๋ฅผ ํ†ตํ•ด ์ผํ–‰์—์„œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ดˆ๋Œ€๋œ ์ผํ–‰์ด ๋“ค์–ด์˜ค๋ฉด, ์ผํ–‰๋„ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ž‘์„ฑ, ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ•ด๋‹น ๋ทฐ์—์„œ ์‚ฌ์šฉ์ž๋Š” ์ƒˆ๋กœ์šด ์ง ์ถ”๊ฐ€ ๋ฐ ์ˆ˜์ •, ์นดํ…Œ๊ณ ๋ฆฌ ๋ฐ ๋ฆฌ์ŠคํŠธ ์ˆ˜์ •, ์ง ์ฑ™๊ธธ ์‚ฌ๋žŒ(๋‹ด๋‹น์ž) ๋ฐฐ์ • ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-07-22 แ„‹แ…ฉแ„’แ…ฎ 10 10 30 แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-07-22 แ„‹แ…ฉแ„’แ…ฎ 10 10 30


์ฝ”๋”ฉ ์ปจ๋ฒค์…˜ & ๋ธŒ๋žœ์น˜ ์ „๋žต

์ฝ”๋”ฉ ์ปจ๋ฒค์…˜ : 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. ๋ณต์ˆ˜ํ–‰ ๋ธ”๋ก์˜ if ์™€ else ๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒฝ์šฐ else ๋Š” if ๋ธ”๋ก ๋์˜ ์ค‘๊ด„ํ˜ธ( } )์™€ ๊ฐ™์€ ํ–‰์— ์œ„์น˜์‹œํ‚จ๋‹ค.
  • 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 ์ปจ๋ฒค์…˜ & ๋ธŒ๋žœ์น˜ ์ „๋žต - option : [gitmoji](https://gitmoji.dev/) - ์•ˆ์“ฐ๋ฉด ์ปค๋ฐ‹ ์ปจ๋ฒค์…˜ ๋Œ€ํ‘œ์ ์ธ๊ฑฐ๋งŒ ์ง€ํ‚ค์ž~
## ๋ธŒ๋žœ์น˜ ์ „๋žต (ex. git flow)

- github flow ์‚ฌ์šฉ
- ์ž‘์—… ์ „์— jira ์ด์Šˆ ์ƒ์„ฑ
- ์ด์Šˆ ๋ฒˆํ˜ธ๋กœ ๋ธŒ๋žœ์น˜๋ฅผ ํŒŒ์„œ ์ž‘์—…
- ์ž‘์—…์ด ๋‹ค ๋๋‚˜๋ฉด ํ”ผ์ณ ๋ธŒ๋žœ์น˜์—์„œ develop ๋ธŒ๋žœ์น˜๋กœ Pull Request ์ž‘์„ฑ
- ๊ฐ™์€ ํŒ€์› 3์ธ์˜ Approve๋ฅผ ๋ฐ›์•„์•ผ main ๋ธŒ๋žœ์น˜์— ๋จธ์ง€ ๊ฐ€๋Šฅ

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages