Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/soozynn/ant_todo
https://github.com/soozynn/ant_todo
Last synced: 5 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/soozynn/ant_todo
- Owner: soozynn
- Created: 2022-08-16T08:12:47.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2022-08-16T08:14:28.000Z (over 2 years ago)
- Last Synced: 2024-11-08T02:52:43.675Z (about 2 months ago)
- Language: JavaScript
- Size: 57.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ๐ ์ฌ์ ๊ณผ์ : "Toodos"
ํ๋ก ํธ์๋ ์ฑ์ฉ ๋ฉด์ ์ ์์ `์ฌ์ ๊ณผ์ `๊ฐ ์์ต๋๋ค.
์ธํฐ๋ทฐ์์ ์์ ๋ฐ ๊ตฌํ ์์ ํด์ฃผ์ ๋ด์ฉ์ ๋ํด ์ง๋ฌธ์ ๋๋ฆด ์์ ์ ๋๋ค. ๋ฉด์ ์์ ํธํ๊ฒ ๋ต๋ณ์ ํด์ฃผ์๋ฉด ๋ฉ๋๋ค.> **Note**
> _์ค๋ช ํ์๋ ์ฝ๋๋ฅผ ํจ๊ป ๋ณผ ์ ์๋๋ก google meet์์ **ํ๋ฉด ๊ณต์ ์ค๋น**๋ฅผ ๋ถํ๋๋ฆฝ๋๋ค._## ๐ฏ ๋ชฉํ
๋ณธ ๊ณผ์ ๋ ๊ฐ๋ฐ์์ ํ๋ฃจ ์ผ๊ณผ ์ค ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ ๋ฌด์ธ **์ฝ๋ ๋ฆฌ๋ทฐ** ๋ฐ **๊ธฐ๋ฅ ๊ตฌํ**์ ๋๋ค. ํด๋น ๋ฆฌํฌ์งํ ๋ฆฌ๋ *Toodos*๋ผ๋ ์ด๋ฆ์ ๊ฐ์ง `React.js`๋ก ์ ์๋ `To-do ๋ฆฌ์คํธ` ์ฑ์ ๋๋ค. ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ํตํด ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค๊ณผ ํ์ ํ๋ ์คํ์ผ๊ณผ ๊ธฐ์กด ์ฝ๋๋ฅผ ๋ฆฌํฉํ ๋งํ๋ ๋ฐฉ์์ ํ์ ํ๊ณ ์ ํฉ๋๋ค. ๋ํ ๊ธฐ๋ฅ ๋ช ์ธ์์ ๋์์ธ ๊ฐ์ด๋๋ฅผ ํตํด ์๋ก์ด ๊ธฐ๋ฅ์ ์ด๋ป๊ฒ ๊ตฌํํ์๋์ง ํ์ ํ๊ธฐ ์ํด ์ค๋นํ์ต๋๋ค.
## ๐ Toodos ๊ตฌ์กฐ
`Toodos` ์ฑ์ ํด๋ ๊ตฌ์กฐ์ ๋๋ค.
> **Warning**
> _**๋ณ๋๋ก ์ ๋ฌ ๋ฐ์ผ์ api token์ `.env` ํ์ผ์ ์ถ๊ฐ ๋ถํ๋๋ฆฝ๋๋ค.**_```javascript
src
โฃ api
โ โ index.js
โ โ todo.js
โฃ components
โ โฃ Header.js
โ โฃ InputTodo.js
โ โฃ TodoItem.js
โ โ TodoList.js
โฃ hooks
โ โ useFocus.js
โฃ pages
โ โ Main.js
โฃ App.css
โฃ App.js
โ index.js
.env // <--- YOU NEED THIS!```
---
โจ ์๋ 3๊ฐ์ง `์ฝ๋ ๋ฆฌ๋ทฐ`์ `๊ธฐ๋ฅ ๊ตฌํ`, `๋ฌธ์ํ` ํ์คํฌ๋ฅผ ์ํ ๋ถํ๋๋ฆฝ๋๋ค.
## ๐ ์ฝ๋ ๋ฆฌ๋ทฐ
1. ์์ฑ๋ ์ฝ๋์ ์๋ ๋ฐฉ๋ฒ์ ์ตํ์ ํ, ๊ฐ์ ์ด ํ์ํ๋ค๊ณ ํ๋จ๋๋ ๋ถ๋ถ์ด ์๋ค๋ฉด ์์ ํด์ฃผ์ธ์.
2. ๋ ๋์ ํ๋ก์ ํธ ๊ตฌ์กฐ๋, ํจํด, ์๋ฌ ์ฒ๋ฆฌ, ์คํ์ผ๋ง, ํ ์คํ ๋ฐฉ๋ฒ ๋ฑ ์์ ๋กญ๊ฒ ์์ ํด์ฃผ์ธ์.## ๐ ๊ธฐ๋ฅ ๊ตฌํ
์ฌ์ฉ์๊ฐ input์ ํ์ดํ์ ํ๋ฉด ์ผ์นํ๋ ์์ดํ ๋ค์ด dropdown์ ๋ณด์ฌ์ง ์ ์๋๋ก `InputTodo`์ ์ถ์ฒ ๊ธฐ๋ฅ์ ๊ตฌํํด์ฃผ์๋ฉด ๋ฉ๋๋ค.
1. [๋์์ธ ๊ฐ์ด๋](https://zpl.io/r17Wzv1)๋ฅผ ์ฐธ๊ณ ํด์ InputTodo์ ๋์์ธ ์์ ๋ฐ dropdown์ ์๋ก ๋ง๋ค์ด์ฃผ์ธ์. (ํด๋น ๋งํฌ๋ ์ ํ๋ฆฐ ํ๋ก์ ํธ๋ก ๋ฏธ๋ฆฌ ์ด๋ฉ์ผ๋ก ์ด๋๋ฅผ ๋๋ฆฌ๊ฒ ์ต๋๋ค.)
2. Bootstrap์ด๋ Ant Design, tailwindcss์ ๊ฐ์ UI kit๋ ์ฌ์ฉํ์ง ์๊ณ ๊ตฌํํด ์ฃผ์ธ์.
3. Input์ `500ms`๋ก debounce๋ฅผ ์ ์ฉํด์ฃผ์ธ์.
4. Dropdown์ ์ถ์ฒ๋ ์์ดํ ๋ค์ด ์ฒ์์ 10๊ฐ๊ฐ ๋์ฌ ์ ์๋๋ก ํ๊ณ , ์์ดํ ์ด ๋ ์์ผ๋ฉด ๋ฌดํ ์คํฌ๋กค๋ก ์ต๋ 10๊ฐ์ฉ ๋ฐ์์ฌ ์ ์๋๋ก ๊ตฌํํด์ฃผ์ธ์.
5. Dropdown์์ ์์ดํ ํ๋๋ฅผ ์ ํํ๋ฉด, input์ value๋ ์ด๊ธฐํ๊ฐ ๋๊ณ ์์ดํ ์ด ๋ฆฌ์คํธ์ ์ถ๊ฐ๋๋๋ก ๊ตฌํํด์ฃผ์ธ์.## ๐ ๋ฌธ์ํ
1. ์์ ์ ์ฃผ์ ์ ์ฑ๊ฒฉ์ ๋ฐ๋ผ [GitHub PR](https://docs.github.com/es/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request)์ ์์ฑ ํ, ๊ฐ๋ฐ๋ ๋ด์ฉ์ ์ ๋ฆฌ ๋ถํ๋๋ฆฝ๋๋ค. (์๋ฃ๋ ๋ด์ฉ์ merge ํด์ฃผ์ ๋ ์ข์ต๋๋ค.)
2. ๊ฐ๋ฐ์ด ๋ชจ๋ ์๋ฃ๋๋ฉด [GitHub Issues](https://docs.github.com/en/issues/tracking-your-work-with-issues/about-issues)์ ์ ๋ฐ์ ์ผ๋ก ์์ ๋ ์ฌํญ๊ณผ ๊ทธ๋ ๊ฒ ๊ฐ๋ฐ๋ ์ด์ ๋ฅผ ์์ฑ ๋ถํ๋๋ฆฝ๋๋ค.
---
### ๐ API
#### HTTP
- API: `https://interview-api.labnote.co/api`
- RESOURCE: `{ GET } /search`#### Parameters
| Name | Required | Type | Default | Description |
| ----- | -------- | -------- | ------- | ----------------------- |
| q | yes | `string` | - | input์์ ๊ฒ์ํ๋ ๋จ์ด |
| page | no | `number` | `1` | ๋ฐ์์ฌ ํ์ด์ง ๋ฒํธ |
| limit | no | `number` | `10` | ๋ฐ์์ฌ ์ต๋ ์ฌ์ด์ฆ ๊ฐ |#### Responses
| Status | Messsage | data |
| ------ | --------------------- | -------------------------------------- |
| 200 | Ok | ์๋ต ๋ฐ์ดํฐ (See Payload result) |
| 400 | Bad Request | `details`: ์์ธ validation ์๋ฌ ๋ฉ์์ง |
| 401 | You are unauthorized. | `(์ธ์ฆ ์คํจ, ํ ํฐ ํ์)` |
| 500 | Internal Server Error | `(์๋ฒ์ธก ์๋ฌ)` |
### Payload result
| Field | Type | Description |
| -------- | ---------- | -------------------------------------- |
| `q` | `string` | ์ฟผ๋ฆฌ ํค์๋ |
| `page` | `number` | ํ์ฌ ํ์ด์ง ๋ฒํธ |
| `limit` | `number` | per page ์ฌ์ด์ฆ |
| `result` | `string[]` | `limit`์ด ์ ์ฉ๋์ด `q`๋ก ํํฐ๋ ๋ฆฌ์คํธ |
| `qty` | `number` | `result`์ ๊ธธ์ด |
| `total` | `number` | `q`๋ก ํํฐ๋ ์ด `result` ๊ธธ์ด |#### Sample
```javascript
// Request
`{ GET } https://interview-api.labnote.co/api/search?q=lorem&page=1&limit=10`// Response (JSON)
{
"opcode": 200,
"message": "OK",
"data": {
"q": "lorem",
"page": 1,
"limit": 10,
"result": [
"Maecenas in lorem sit amet felis volutpat dapibus vulputate at dui.",
"Nam porta lorem ut turpis pellentesque, et efficitur felis ullamcorper.",
"Duis fringilla turpis vel lorem eleifend, sit amet hendrerit velit gravida.",
"Cras in felis eget augue cursus placerat ac eget lorem.",
"Sed id orci quis mi porttitor pulvinar cursus eget lorem.",
"Fusce tincidunt lorem ac purus elementum, ut fermentum lacus mollis.",
"Nam commodo lorem ac posuere dignissim.",
"Etiam eu elit finibus enim consequat scelerisque aliquam vulputate lorem.",
"Donec in lorem id eros ornare aliquam ut a nisi.",
"Donec efficitur nulla eget lorem sollicitudin, in blandit massa dictum."
],
"qty": 10,
"total": 19
}
}
```
---
## ๐ป ๋ก์ปฌ ์ค์น ๋ฐ ์คํ๋ฐฉ๋ฒ
1. Clone this repo:
```bash
git clone ...
```2. Install dependencies & packages
```bash
npm i
# OR
yarn
```3. Run application
```bash
npm run start
# OR
yarn start
```