Code Monkey home page Code Monkey logo

e-raser-frontend's Introduction

30th SOPKATHON 무박 2일 해컀톀

πŸ“† 2022.05.21 ~ 2022.05.22

🌏@-λ ˆμ΄μ €λ₯Ό μ†Œκ°œν•©λ‹ˆλ‹€πŸ’₯

김남쀀 λ°•λ‚˜ν¬ μ΅œλ‹€μΈ
@NamjunKim12 @Nahee-Park @Chedda98



ν”„λ‘œμ νŠΈ μ†Œκ°œ

πŸ’« 일상 속 무심코 μŒ“μ—¬μ˜¨ 인터넷 속 email! @-λ ˆμ΄μ €κ°€ μ—†μ• μ€„κ²Œ! πŸ§β€β™‚οΈ

메일함을 μ •λ¦¬ν•˜λ©°, 인터넷 μΌμƒμ—μ„œ ν™˜κ²½λ³΄ν˜Έ μ†μ‰½κ²Œ μ‹œμž‘ν•˜κΈ°


πŸ“„ IA



πŸ’» κΈ°λŠ₯ μ†Œκ°œ

κΈ°λŠ₯ 상세 κΈ°λŠ₯ λ‹΄λ‹Ή κ΅¬ν˜„ μ—¬λΆ€
메인 ν™ˆνŽ˜μ΄μ§€ μŠ€ν”Œλž˜μ‹œ 이미지 보여주기 김남쀀 β˜‘οΈ
메인 ν™ˆνŽ˜μ΄μ§€ ꡬ글 μ†Œμ…œ 둜그인 인증 김남쀀 β˜‘οΈ
ꡬ글 μ†Œμ…œ 둜그인 ꡬ글 μ†Œμ…œ 둜그인 κΈ°λŠ₯ 김남쀀, λ°•λ‚˜ν¬, μ΅œλ‹€μΈ β˜‘οΈ
메일함 ν˜„ν™© νŽ˜μ΄μ§€ ν˜„μž¬ 읽지 μ•Šμ€ 메일 갯수 λ³΄μ—¬μ£ΌλŠ” νŽ˜μ΄μ§€ λ°•λ‚˜ν¬ β˜‘οΈ
λ‘œλ”©μ°½ 메일을 μ§€μš°λŠ” λ™μ•ˆμ˜ λ‘œλ”© νŽ˜μ΄μ§€ 김남쀀, λ°•λ‚˜ν¬, μ΅œλ‹€μΈ β˜‘οΈ
μΊ˜λ¦°λ”λ·° 메일을 μ§€μš°λŠ” κΈ°κ°„μ˜ μΊ˜λ¦°λ”λ·° λ°•λ‚˜ν¬ β˜‘οΈ
κ²°κ³Ό νŽ˜μ΄μ§€ κ²°κ³Ό λ…ΈμΆœ νŽ˜μ΄μ§€ μ΅œλ‹€μΈ β˜‘οΈ
κ²°κ³Ό νŽ˜μ΄μ§€ κ³΅μœ ν•˜κΈ° λ²„νŠΌ μ΅œλ‹€μΈ β˜‘οΈ


πŸ“± 개발 ν™˜κ²½ 및 라이브러리


라이브러리 λͺ©μ 
Axios μ„œλ²„ 톡신
React μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€
styled-components μ½”λ“œ λ ˆμ΄μ•„μ›ƒ μž‘μ„±
react-calendar μΊ˜λ¦°λ”λ·°(μ»€μŠ€ν…€)
react-copy-to-clipboard ν΄λ¦½λ³΄λ“œ
react-google-login ꡬ글 μ†Œμ…œ 둜그인


πŸ”— Dependecy

  "dependencies": {
  "name": "frontend",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@testing-library/jest-dom": "^5.14.1",
    "@testing-library/react": "^13.0.0",
    "@testing-library/user-event": "^13.2.1",
    "axios": "^0.27.2",
    "hoist-non-react-statics": "^3.3.2",
    "moment": "^2.29.3",
    "react": "^18.1.0",
    "react-copy-to-clipboard": "^5.1.0",
    "react-calendar": "^3.7.0",
    "react-dom": "^18.1.0",
    "react-google-login": "^5.2.2",
    "react-router-dom": "^6.3.0",
    "react-scripts": "5.0.1",
    "styled-components": "^5.3.5",
    "styled-reset": "^4.4.0",
    "web-vitals": "^2.1.0"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ]
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
  "devDependencies": {
    "@typescript-eslint/eslint-plugin": "^5.25.0",
    "@typescript-eslint/parser": "^5.25.0",
    "babel-eslint": "^10.1.0",
    "eslint": "^8.15.0",
    "eslint-config-airbnb": "^19.0.4",
    "eslint-config-prettier": "^8.5.0",
    "eslint-import-resolver-typescript": "^2.7.1",
    "eslint-plugin-import": "^2.26.0",
    "eslint-plugin-jsx-a11y": "^6.5.1",
    "eslint-plugin-prettier": "^4.0.0",
    "eslint-plugin-react": "^7.30.0",
    "eslint-plugin-react-hooks": "^4.5.0",
    "prettier": "^2.6.2"
  }
}

🌱 Commit Convention


우리의 λΈŒλžœμΉ˜λŠ” κΌΌκΌΌν•΄!

type(νƒ€μž…): title(제λͺ©)

제λͺ©μ€ μ΅œλŒ€ 50κΈ€μžκΉŒμ§€λ§Œ μž…λ ₯

body(λ³Έλ¬Έ, μƒλž΅ κ°€λŠ₯)

본문은 ν•œ 쀄에 μ΅œλŒ€ 72κΈ€μžκΉŒμ§€λ§Œ μž…λ ₯

types = { init: 브랜치 첫 컀밋 feat: μƒˆλ‘œμš΄ κΈ°λŠ₯에 λŒ€ν•œ 컀밋 fix: 버그 μˆ˜μ •μ— λŒ€ν•œ 컀밋 build: λΉŒλ“œ κ΄€λ ¨ 파일 μˆ˜μ •μ— λŒ€ν•œ 컀밋 chore: κ·Έ μ™Έ μžμž˜ν•œ μˆ˜μ •μ— λŒ€ν•œ 컀밋 ci: CI κ΄€λ ¨ μ„€μ • μˆ˜μ •μ— λŒ€ν•œ 컀밋 docs: λ¬Έμ„œ μˆ˜μ •μ— λŒ€ν•œ 컀밋 style: μ½”λ“œ μŠ€νƒ€μΌ ν˜Ήμ€ 포맷 등에 κ΄€ν•œ 컀밋 refactor: μ½”λ“œ λ¦¬νŒ©ν† λ§μ— λŒ€ν•œ 컀밋 }



πŸ›  Coding Convention


2οΈβƒ£Β μ»¨λ²€μ…˜ μ„€μ •

  • βš™ eslint & prettier μ‚¬μš©ν•˜κΈ° μœ„ν•œ μ„€μ •

    1. vscode extensionμ—μ„œ eslint + prettier μ„€μΉ˜ eslint prettier

    2. setting.json (command + , or ctrl + ,) μˆ˜μ •ν•˜κΈ°

      "editor.formatOnSave": true,
  • πŸ’― eslint μ„€μ •

    {
      "extends": ["react-app", "plugin:prettier/recommended"],
      "plugins": ["prettier"],
      "rules": {
        "prettier/prettier": [
          "error",
          {
            "endOfLine": "auto"
          }
        ]
      }
    }
  • 🌸 prettier μ„€μ •

    module.exports = {
      printWidth: 100,
      tabWidth: 2,
      singleQuote: true,
      trailingComma: 'all',
      bracketSpacing: true,
      semi: true,
      useTabs: false,
      arrowParens: 'avoid',
      endOfLine: 'lf',
    };
  • πŸ‘» νŒ¨ν‚€μ§€ λ§€λ‹ˆμ € μ„€μ •

    1. yarn μ‚¬μš©ν•˜κΈ°

      YARN에 λŒ€ν•œ μ‚¬μš©λ²• 및 μ„€μΉ˜

    2. νŒ¨ν‚€μ§€ λ‹€μš΄λ‘œλ“œ 받을 λ•Œ β€”save κΌ­ μž‘μ„±ν•˜κΈ°

      Ex) yarn add react-router-dom β€”save

  • πŸžΒ μ»΄ν¬λ„ŒνŠΈ 및 ν•¨μˆ˜ 이름 μ»¨λ²€μ…˜

    πŸ₯ **μ»΄ν¬λ„ŒνŠΈ 생성 방식**
    • μ»΄ν¬λ„ŒνŠΈ 생성 μ‹œμ—λ§Œ function ν‚€μ›Œλ“œ μ‚¬μš© function Main (){} const Main = () β‡’ {}
    • κ·Έ μ™Έ ν•¨μˆ˜ 생성 μ‹œμ—λŠ” ν™”μ‚΄ν‘œ ν•¨μˆ˜ μ‚¬μš©
    🐳 **ν•¨μˆ˜ 이름 μ»¨λ²€μ…˜**
    • const handle이벀트λͺ… = () β‡’ {}
    • handleClick, handleSubmit, ...


πŸ“‚ Directory Structure


β”œβ”€β”€ README.md
β”œβ”€β”€ package.json
β”œβ”€β”€ public
β”‚Β Β  β”œβ”€β”€ favicon.ico
β”‚Β Β  β”œβ”€β”€ index.html
β”‚Β Β  └── manifest.json
β”‚Β Β  └── _redirects
└── src
    β”œβ”€β”€ App.jsx
    β”œβ”€β”€ index.jsx
    β”œβ”€β”€ assets
    β”‚Β Β  β”œβ”€β”€ font
    β”‚Β Β  β”œβ”€β”€ icon
    β”‚Β Β  └── image
    β”œβ”€β”€ components
    β”‚Β Β  β”œβ”€β”€ GetDataTest.jsx
    β”‚Β Β  └── common
    β”‚Β Β      β”œβ”€β”€ ErrorBoundary.jsx
    β”‚Β Β      β”œβ”€β”€ ErrorComponent.jsx
        β”‚Β Β  β”œβ”€β”€ Header.jsx
    β”‚Β Β      └── Loading.jsx
    β”œβ”€β”€ constants
    β”œβ”€β”€ cores
    β”‚Β Β  └── router.jsx
    β”œβ”€β”€ hooks
    β”œβ”€β”€ index.jsx
    β”œβ”€β”€ lib
    β”‚Β Β  └── index.js
    β”œβ”€β”€ pages
    β”‚Β Β  β”œβ”€β”€ CleanMailPage.jsx
    β”‚Β Β  β”œβ”€β”€ Mainpage.jsx
    β”‚Β Β  β”œβ”€β”€ ResultPage.jsx
    β”‚Β Β  └── Sample.jsx
    β”œβ”€β”€ styles
    β”‚Β Β  β”œβ”€β”€ globalStyle.jsx
    β”‚Β Β  └── theme.jsx
    └── utils
    β”‚Β Β  β”œβ”€β”€ app.js
        └── wrapPromise.js


πŸ’ branch μ „λž΅

main > 각자의 브랜치
ex ) main ← feature/남쀀-1, feature/체닀-1, feature/λ‚˜ν¬-1, feature/λ‚˜ν¬-2
각자의 λΈŒλžœμΉ˜μ—μ„œ pull request ν•˜κ³  μ½”λ“œ 리뷰 ν›„ merge


e-raser-frontend's People

Contributors

chedda98 avatar nahee-park avatar namjunkim12 avatar

Watchers

 avatar

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.