Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sangmin802/loa-hands
π Loa-Hands κ°λ°κΈ°
https://github.com/sangmin802/loa-hands
react styled-components typescript
Last synced: 15 days ago
JSON representation
π Loa-Hands κ°λ°κΈ°
- Host: GitHub
- URL: https://github.com/sangmin802/loa-hands
- Owner: sangmin802
- Created: 2020-10-09T09:03:37.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2022-07-28T08:38:16.000Z (over 2 years ago)
- Last Synced: 2024-05-29T19:18:30.222Z (8 months ago)
- Topics: react, styled-components, typescript
- Language: TypeScript
- Homepage: https://sangmin802.github.io/loa-hands/
- Size: 112 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## π Loa-Hands - λ‘μ€νΈμν¬ μ μ κ²μ μ±
### μλ² λ° API
- μ΄λ²€νΈ λ°, μ μ μ 보λ₯Ό λ°μμ€κΈ° μν΄ `heroku` λ₯Ό ν΅ν΄ νλ‘μ κ²Έ λ°μ΄ν°λ₯Ό λ°μμ€λ μλ² νμ©
### λͺ¨λ
- `React-Router` : `UserInfo`μμμ κ²μλ κ°μ `path`λ‘ κΈ°μ΅νμ¬, μλ‘κ³ μΉ¨μ νμ¬λ λ°λ‘ κ²μλ νλ©΄μ λ ΈμΆμν€λλ‘ ν¨
- `React-Query` : `request`, `response`λ₯Ό μννλ λΉλκΈ°μμ μ μλνλλ° μ¬μ©
- `axios` : `fetch api` λμ©
- `StoryBook` : `UI test`
- `Jest`, `React-testing-library` : `Unit test`
- `styled-components` : `CSS-in-JS`### src λλ ν 리 ꡬ쑰
- `api` : μ λ°μ μΈ μλ²μμ λΉλκΈ° λ©μλ κ΄λ¦¬
- `components` : μ¬νμ©κ°λ₯ν μ»΄ν¬λνΈ κ΄λ¦¬. λλΆλΆ λ¨μ `UI`λ₯Ό 그리기 μν μ»΄ν¬λνΈ
- `hooks` : κΈ°λ₯μ λ°λΌμ μΆμνλ λ‘μ§λ€μ κ΄λ¦¬
- `json` : μ μ μΈ `json`λ°μ΄ν° κ΄λ¦¬
- `pages` : κ°μ’ λ‘μ§μ΄ μ°κ²°λλ μ΅μμ μ»΄ν¬λνΈ
> `Route` κ°λ
- `layout` : 곡ν΅μΌλ‘ μ¬μ©λλ `UI`
- `style` : ν°νΈλ±μ μ μ μΈ μ€νμΌ
- `utils` : μ¬μ¬μ© κ°λ₯ν μ΄λ²€νΈ 맀λμ
- `constants` : 곡ν΅μΌλ‘ μ¬μ©λλ μμ### Components κ·μΉ
1. `Text`, `Input`, `Button`κ³Ό κ°μ κ°μ₯ μμ λ¨μμ μ»΄ν¬λνΈλ€μ μ΅λνμ μ¬μ¬μ©μ±μ μν΄ κΈ°λ³Έ `Element`λ€μ νμ₯νμ¬ μ¬μ©
```js
import React, { ButtonHTMLAttributes, PropsWithChildren } from "react";
import * as Styled from "./index.style";export interface IButton extends ButtonHTMLAttributes {}
const Button = ({ children, ...props }: PropsWithChildren) => (
{children}
);export default Button;
```2. `margin`κ³Ό κ°μ 컨ν μΈ μΈλΆμ μν₯μ μ£Όλ μ€νμΌλ€μ μμμ»΄ν¬λνΈμμ μ§μ
3. μ΅λν μΆμν λ¨κ³ ν΅μΌν
4. `UI`λ₯Ό ꡬμ±νλλ° μ¬μ©λλ μνκ°μ κ³μ°νλ λ‘μ§μ μ΅λν `hooks`λ‘ μΆμν νμ¬ μ μΈνμΌλ‘ μ¬μ©### UX κ°μ μ¬ν
1. `Home`μμ `calendar`, `event` μ»΄ν¬λνΈμ λΉλκΈ°μμ μ λΆλ¦¬νμ¬, μ μ μΈ `data`λ€μ μ¦μ μμ±νκ³ , λλ¨Έμ§ `data`λ€μ΄ `response`λλ€λ©΄ κ·Έλ μ΄μ΄μ μμ±νλλ‘ ν¨.
> `Next.js`λ₯Ό μ¬μ©νκ² λ κ²½μ°, `getStaticProps`λ‘ λ체λ κ² κ°μ.
2. μλ²μμ ν΅μ μ νλ λΉλκΈ°μμ μ μνν λ, ν¨μ¨μ μΌλ‘ μ§ννκΈ° μν΄ `React-Query` μ¬μ©
> `Suspense`μ `ErrorBoundary`λ₯Ό μ¬μ©νμ¬ μ»΄ν¬λνΈμ κΈ°λ³Έμ μΈ λͺ©μ μ λ²μ΄λλ `loading`κ³Ό `error`λ₯Ό μΈλΆλ‘ λΆλ¦¬
> `Suspense`μ κ²½μ° λΆμμ ν μνμ΄κΈ° λλ¬Έμ λ€λ₯Έ μλ¬λ₯Ό λ°μμμΌ μ κ±°
> `stale` λ° `cache` μκ°μ μ€μ νμ¬ μ§μ ν μκ° μ΄λ΄μ μ¬κ²μλμλ€λ©΄, μΊμ±λ κ°μΌλ‘ λ λλ§ κ·Έλ μ§ μλ€λ©΄ μλ‘κ² `data` μμ²
3. μλ²λ‘μ μμ²μ΄ μ€μ²©λ κ²½μ°, μ΄μ μ μμ²μ μ·¨μνλλ‘ ν¨
4. `UserInfo`μμ `userData`, `collection` λκ°μ§μ `data` μμ² λΉλκΈ°μμ μ΄ μνλλλ°, `collection`μ κ²½μ° `userData`μ κ°μ΄ μ‘΄μ¬νμ¬μΌ μ§νλ μ μλ μν©μμ `collection`μ `response`λ₯Ό λ°κΈ°κΉμ§ μ΄κΈ° λ λλ§μ΄ μ§μ°λλ μν©
> λκ°μ§λ₯Ό λΆλ¦¬νμ¬ `userData`λ§ μλ£λλ€λ©΄ λ λλ§μ μννκ³ , μ΄νμ `collection`μ λ³λλ‘ μ§ννλλ‘ νμ¬ 1μ΄μ μκ° μ μ½
5. μ¬μ©μμκ²μ κΆνμ νλ½λ°λλ€λ©΄, `timer`κ° μ μ©λμ΄μλ 컨ν μΈ λ€μ μλ¦Όμ μνν μ μμ