From 9f1513d05526f95e45aa0292ed1e3b571a0713a2 Mon Sep 17 00:00:00 2001
From: bicco2 <77577434+bicco2@users.noreply.github.com>
Date: Wed, 28 Sep 2022 04:00:45 +0900
Subject: [PATCH] Create README.md
---
README.md | 273 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 273 insertions(+)
create mode 100644 README.md
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..9b361fa
--- /dev/null
+++ b/README.md
@@ -0,0 +1,273 @@
+# **๐ณย What is ReBike?**
+
+---
+
+> ์ํ ์ฐ๋ ๊ธฐ ์ข
๋ฅ AI ๋ถ์ ๋ฐ ๋ถ๋ฆฌ์๊ฑฐ ์ํํ๋ฅผ ์ํ ํ๋ซํผ
+>
+
+## ๐ชตย **System Architecture**
+
+
+
+## ๐ตย **Tech Stack**
+|Dev-Ops| |
+|----------|:-------------:|
+|__Frontend__| |
+|__Backend__| |
+|__DB__| |
+|__AI__| |
+|__Monitoring__| |
+|__Others__| |
+
+
+## ๐ธย **Core Screens**
+
+
+
+### **Redux**
+
+```
+acitions
+โฟ DecodeActions.tsx
+ dispatch๊ฐ ์ด๋ค type์ ๋ฐ๋ผ ํจ์๋ฅผ ์คํํด์ค์ง ์ ํ๋ค. state๊ฐ์ ์ด๋ป๊ฒ ๋ณ๊ฒฝํ ์ง ์ ํด์ฃผ๋ ํ์ผ
+ ์ธ์๋ก token๊ฐ์ ๋ฐ์์ ๊ทธ๊ฑธ ๋์ฝ๋ฉ ํด์ค๋ค .
+ ๊ทธ๋ฆฌ๊ณ payload์ [success, action[success, payload]] ๋ฅผ ์ค์
+
+โฟ ImgIDReducer.tsx
+ dispatch๋ก ์คํํ ์ก์
๊ฐ 1๊ฐ (SAVE_ID) ์ด๊ฑธ๋ก id ๊ฐ์ ๋๊ฒจ์ค๋ค.
+
+reducer
+โฟ DecodeReducer.tsx
+ state ์ด๊ธฐ๊ฐ ์ค์ ๋ฐ dispatch๋ฅผ ํฌํจํ๊ณ ์๋ ๊ณณ action ์ด ๋ค์ด์์ action.payload๋ก
+ id, alias ๋ฅผ ๊ฐ์ ธ์ state๊ฐ์ dispatch์์ ๋์ด์จ ๋ฐ์ดํฐ๋ฅผ ํ์ฉํด ๋ณ๊ฒฝํด์ค๋ค .(์ ์ญ๊ด๋ฆฌ ์์)
+ ex. const userIdtoRedux = ReduxModule().decodeInfo?.id;
+
+
+โฟ ImgIDReducer.tsx
+ SAVE_ID ํ์
์ผ๋ก dispatch ๊ฐ ์คํ๋์ผ๋ฉด ๊ฑฐ๊ธฐ์ ์ ์ฅ๋ payload๋ฅผ ๊ฐ์ ธ์ ๊ทธ ๊ฐ์ ๋ฆฌํดํด์ค๋ค.
+ dispatch(save_ID(res.data.image_id)); ์คํํ itemID ๋ฆฌํด
+ ex. const itemID = useSelector((state: RootReducerType) => state.ImgIDReducer);
+
+โฟ index.tsx
+ root ๋ฆฌ๋์ ๊ด๋ฆฌ ๋ง๋ค์ด ๋์ DecodeReducer, ImgIDReducer๋ฅผ ์ด๊ดํ๋ค. app.tsx์์ ๋ถ๋ฌ์ ์ฌ์ฉ
+```
+
+> ReduxModule
+ํ ํฐ์ด ์์ ๋๋ง dispatch๋ฅผ ํตํด id๋ฅผ ๊ฐ์ ธ์ค๋ ค๊ณ ๋ฐ๋ก ๋ชจ๋๋ก ๋บด๋์
+ํ ํฐ์ decoderedux๋ฅผ ํตํด ๋์ฝ๋ฉ์ํจ ํ id๋ฅผ ๋ฆฌํดํ๋ค.
+>
+
+- ์ ๋ฆฌ
+ 1. redux๋ฅผ ํตํด token decode ํ uuid ์ ์ญ๊ด๋ฆฌ
+ 2. ์ปดํฌ๋ํธ ์ฌํ์ฉ์ ์ํด uploadํ ์ด๋ฏธ์ง ๋ฐ ๋ด๊ฐ ๋ฒ๋ฆฐ ์ฐ๋ ๊ธฐ ์์ธํ์ด์ง๋ฅผ ์ํ trash_id ์ ์ญ๊ด๋ฆฌ
+
+
+### Mainpage
+
+- Search
+
+
+
+- UploadImage (polling)
+
+
+
+- PopularTrash
+
+
+
+
+### Sign up/ Sign in
+
+- Sign Up
+
+
+
+- Sign In
+
+
+
+### MyPage
+
+- MyTrashcan โ ์ฌ๋ ธ๋ ์ฌ์ง๋ค์ ๋ชจ๋ ํ์ธ๊ฐ๋ฅ
+autosave - On : ์ฌ๋ฆฐ ์ฌ์ง์ ์๋ ์ ์ฅ / Off : ์ ์ฅ๋์ง ์์
+
+
+- Graph โ ์ฌ๋ฆฐ ์ฌ์ง์ ์ข
๋ฅ์ ์ ํ์
๊ฐ๋ฅ
+Default : ์ง๊ธ๊น์ง ์ฌ๋ ธ๋ ์ด ์ฌ์ง ์ข
๋ฅ, ๊ฐ์
+์์ ๋ ์ง, ๋ ๋ ์ง๋ฅผ ์ง์ ํ์ฌ ์ํ๋ ๋ ์ง์ ์ฌ๋ฆฐ ์ฐ๋ ๊ธฐ ์ข
๋ฅ ํ์ธ
+
+
+- Challenge โ ์ฌ์ง์ ์ฌ๋ ธ์ ๋ ํ์ฑํ/Change Info โ ๋น๋ฐ๋ฒํธ, ๋๋ค์ ๋ณ๊ฒฝ/Log Out
+
+
+
+## ๐ฟย ERD
+
+
+
+### **users api**
+
+- ***api/users/***
+ - `GET` : ํ์๊ฐ์
์ ์์ด๋, ๋๋ค์ ์ค๋ณต ์ฒดํฌ ๊ฒฐ๊ณผ
+ - `POST` : ํ์ ๊ฐ์
์ ๋ณด ์ ์ฅ
+ - `PATCH` : ํ์ ์ ๋ณด ์์
+- ***api/users/auth***
+ - `POST` : access token, refresh token ๊ฐฑ์
+- ***api/users/autosave***
+ - `GET` : ์
๋ก๋ ์ฌ์ง ์๋์ ์ฅ ์ฌ๋ถ
+ - `PATCH` : ์
๋ก๋ ์ฌ์ง ์๋์ ์ฅ ์ฌ๋ถ ๋ณ๊ฒฝ
+
+### **trash api**
+
+- ***api/challenges***
+ - `GET` : ๋ชจ๋ ๋์ ๊ณผ์ ์ ๋ณด
+- ***api/statistics/ranking***
+ - `GET` : ์ธ๊ธฐ์์ผ๋ก ์ ๋ ฌ๋ ์ผ์ฃผ์ผ๊ฐ์ ์ฌํ์ฉ ๋ฐ์ดํฐ
+- ***api/users/{user_id}/results/tasks***
+ - `POST` : ์ฌ์ฉ์๊ฐ ์
๋ก๋ํ ์ฌ์ง ๋ถ์ ๋น๋๊ธฐ ์ฒ๋ฆฌ
+- ***api/users/{user_id}/results/tasks/{task_id}***
+ - `GET` : task_id๋ก ๋ถ์ ์๋ฃ ์ฌ๋ถ ํ์ธ, ํ๋ก ํธ์์ polling
+- ***api/users/{user_id}/challenges***
+ - `GET` : ์ฌ์ฉ์๊ฐ ๋ฌ์ฑํ ๋์ ๊ณผ์ ์ ๋ณด
+- ***api/users/{user_id}/pages/{page_number}***
+ - `GET` : ์ฌ์ฉ์๊ฐ ์
๋ก๋ํ ์ฌํ์ฉ ์ด๋ฏธ์ง ๋ฐ์ดํฐ, ํ์ด์ง๋ค์ด์
์ด์ฉ
+- ***api/trash/users/{user_id}/statistics***
+ - `GET` : ์ฌ์ฉ์๊ฐ ์
๋ก๋ํ ๋ชจ๋ ์ฌํ์ฉ ๋ฐ์ดํฐ์ ํต๊ณ
+- ***api/trash/users/{user_id}/statistics/period/{from_date}/{to_date}***
+ - `GET` : ์ฌ์ฉ์๊ฐ ์ค์ ํ ๋ ์ ๋ฐ๋ฅธ ์ฌํ์ฉ ๋ฐ์ดํฐ ํต๊ณ
+
+### S**earch api**
+
+- ***api/search/***
+ - `POST` : value ๊ฐ์ ๋ง๋ ๊ฒ์ ๊ฒฐ๊ณผ ๋ฐํ
+
+### Elastic_search
+
+
+
+- used_library
+ - `elasticsearch`
+ - `django_elasticsearch_dsl`
+- setup_es.py
+ - elastic_search default data setter
+ 1. make connection with `django_elasticsearch_dsl`
+
+
+
+ 2. make default data by using `search_cofig.json`
+
+
+
+
+
+ 3. bulk default data on elastic_search
+
+
+
+- elastic_search on Search api
+ - get search_value from query_param
+
+
+
+ - make connection with elastic_search by using `django_elasticsearch_dsl`
+
+
+
+ - get data which contained key that has correlation with search_value
+ - example
+ 1. send request
+
+
+
+ 2. output
+
+
+
+- why_elastic_search?
+ - elastic_search has bunch of useful functions with searching data
+ - elastic_search is much lighter than other DB
+
+
+
+
+### KIBANA
+
+- ์ผ๋ผ์คํฑ ์์น์ ๊ฐ ๋ฐ์ดํฐ๋ค์ ์๊ฐํํ๋ฉฐ, ํด๋น ๋ฐ์ดํฐ๋ค์ ๊ด๋ฆฌํ๋๋ฐ ๋์์ ์ฃผ๋ ํ๋ก๊ทธ๋จ
+- ์ถํ. ๋ฐ์ดํฐ ๊ด๋ฆฌ ๋ฐ, ๋ฐ์ดํฐ ์๊ฐํ๋ฅผ ํตํ ๋ณด๋ค ์ข์ ๊ฐ๋ฐํ๊ฒฝ์ ๊ตฌํํ๊ธฐ ์ํด ์ฌ์ฉ,
+
+
+
+## ๐ชดย **AI**
+
+
+
+
+
+
+
+
+
+- Result
+
+
+## JWT
+
+- used_library
+ - `djangorestframework-jwt`
+- JWT_Settings.py
+ - set JWTโs default_settings
+
+
+
+- JWT on frontEND
+ - restore tokens by using redux
+ - if we need some user data, we donโt need to make connection with backend
+ by opening JWT payload, we can get user data
+
+- JWT on backEND
+ - after we identify user by check login data, give authorization by using JWT
+ - by using refresh_token, we enhanced our security level
+
+## ๐ป Monitoring
+
+
+
+## Prometheus
+
+- exporter๊ฐ ๋งคํธ๋ฆญ์ ์์งํ๊ณ HTTP ํต์ ์ ํตํด metric data๋ฅผ ๊ฐ์ ธ๊ฐ ์ ์๊ฒ /metrics ๋ผ๋ HTTP ์๋ํฌ์ธํธ๋ฅผ ์ ๊ณตํ๋ค. ๊ทธ๋ฌ๋ฉด Prometheus server๊ฐ ์ด exporter์ ์๋ํฌ์ธํธ์ HTTP GET ์์ฒญ์ ์ด์ฉํ์ฌ metric data๋ฅผ pull ํ๋ค.
+- ํด๋น ๋
ธ๋์ metric data
+
+
+
+## Grafana
+
+- Prometheus์ ์๊ฐํ ๋๊ตฌ๊ฐ ๋ถ์กฑํ์ฌ ์ด๋ฅผ ์ง์ ์ฌ์ฉํ์ง๋ ์๊ณ ๋๊ฒ Grafana๋ผ๋ Data Visualization tool์ ์ด์ฉํ์ฌ ์๊ฐํํ๊ณ ์๋ค.
+
+
+
+CPU load / RAM usage / Memory swap
+
+## Cadvisor
+
+- ์์ฑ๋ ๋์ปค ์ปจํ
์ด๋๋ฑ์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ์์งํด์ค๋ค.
+
+
+
+## **How to Start**
+
+
+
+## **Project Tree**
+
+
+
+# โข๏ธโฑ **Members of Team-E**
+|์ด๋ฆ|๊ฐ๋ฐ๋ถ์ผ|์๊ฐํ์ด์ง|
+|---|---|---|
+|๐ฆฅ๊น์ฉ๋ฏผ|Back-end,DevOps|https://github.com/Ryokuman
+|๐๊น์ ๋ฆผ|Back-end,DevOps,AI|https://github.com/Ellie010707
+|๐๋ฐ์ฑ๋น|Back-end,DevOps|https://github.com/SeongbinPark
+|๐ง๐ปโโ๏ธ์ด์ฑํ|Front-end|https://github.com/chloe1129
+|๐น์ด์ ์ฐ|Front-end|https://github.com/RayLee-Kor
+|๐ผ์งํธ๋ณ|Front-end|https://github.com/bicco2