- Problem : ์ฌํ์ ๋ค๋ ์๋๋ฐ ์ธ์คํ ์ ๋ฐ์ดํธ๋ฅผ ํ ์ ์์๋ ์ด์ ? (ํน๋ณํ ํฌํ ์คํ์ ๋ฐ๊ฒฌํ์ง ๋ชปํด์, ์ฐพ์๋ณธ ํฌํ ์คํ์ด ๋ด ์ฌํ๋์ ๊ณผ ๋ฌ๋ผ์, ํผ์ ์ฌํ๋ค๋๋๋ผ ์ฐ์ด์ค ์ฌ๋์ด ์์ด์)
- Idea : ์ฌํ์ง์์ ์ธ์์ท์ ์ฐ๊ณ ์ถ์ ์ ์ ๋ฅผ ์ํด ์ด๋ค ์๋น์ค๋ฅผ ์ ๊ณตํ ์ ์์๊น?
- Solution : 3๊ฐ์ง ํต์ฌ ์๋น์ค
- ๋๋ฌ๋ณด๊ธฐ: ์คํ ์ฌ์ง ๊ตฌ๊ฒฝ ๋ฐ ์์๋ฆฌ์คํธ ์ถ๊ฐ
- ์ง๋๋ณด๊ธฐ: ์ง๋ API๋ฅผ ํ์ฉํ์ฌ ์คํ์ ์์น ํ์
- ํจ๊ปํ๊ธฐ: ํจ๊ป ์ฌ์ง์ ์ฐ์ ๋ํ์ ๊ตฌํ ์ ์๋ ์ปค๋ฎค๋ํฐ
- 2022๋ 3์ 1์ผ ~ 3์ 29์ผ
- ์ฐธ์ฌ ์ธ์ : 4๋ช (์ต์์, ๋ฐ์ฉํธ, ๊นํ์, ๊น์๋ฐฑ)
Front-end
์ธ์ด
- HTML
- CSS
- Javascript
Back-end
์ธ์ด
- Python 3.9.1
ํ๋ ์์ํฌ
- Django 3.2.9
๊ฐ๋ฐํ๊ฒฝ
- VSCode
DBMS
- sqlite3
๋ฒ์ ๊ด๋ฆฌ
- Git
- Github
๋ฐฐํฌ
- AWS Route 53
- Nginx
- User ๋ชจ๋ธ๊ณผ Profile ๋ชจ๋ธ์ 1:1๊ด๊ณ ์ค์ - Profile ๋ชจ๋ธ๋ก ๋ค์ํ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ธฐ ์ํด ์ค์
- User ๋ชจ๋ธ๊ณผ Travel ๋ชจ๋ธ์ M:N๊ด๊ณ ์ค์ - 1๋ช ์ ์ ์ ๊ฐ ์ฌ๋ฌ ๊ฐ์ ์ฌํ ์คํ์ ์ข์์๋ฅผ ๋๋ฅผ ์ ์๊ณ , 1๊ฐ์ ์ฌํ ์คํ์ ์ฌ๋ฌ ๋ช ์ ์ ์ ์๊ฒ ์ข์์๋ฅผ ๋ฐ์ ์ ์๊ธฐ ๋๋ฌธ
- Profile ๋ชจ๋ธ๊ณผ Post ๋ชจ๋ธ์ 1:N๊ด๊ณ ์ค์ - 1๋ช ์ ์ ์ ๊ฐ ์ฌ๋ฌ ๊ฐ์ ๊ฒ์ํ ๊ธ์ ์์ฑํ ์ ์๊ฒ ์ค์
- Profile ๋ชจ๋ธ & Travel ๋ชจ๋ธ & Post ๋ชจ๋ธ๊ณผ Comment ๋ชจ๋ธ์ 1:N๊ด๊ณ ์ค์ - 1๋ช ์ ์ ์ ๊ฐ ์ฌ๋ฌ ๊ฐ์ ๋๊ธ์ ๋จ๊ธธ ์ ์๊ณ , 1๊ฐ์ ์ฌํ ์คํ๊ณผ 1๊ฐ์ ๊ฒ์๊ธ์ด ์ฌ๋ฌ ๊ฐ์ ๋๊ธ์ ๊ฐ์ง ์ ์๊ธฐ ๋๋ฌธ
- App ๋ณ Views.py์ ์ฃผ์์ผ๋ก ๊ฐ์์ ์ฝ๋๋ฅผ ๊ตฌ๋ถํ์ฌ ๊ฐ๋ฐ ์งํ
- github์ pushํ ๋, version์ผ๋ก commit ๋ฉ์ธ์ง๋ฅผ ์์ฑํ์ฌ ํ์ ์งํ
- Front-end(ํ์ด์ง๋ณ ๋ถ๋ด) :
- ์ต์์: ๋๋ฉํ์ด์ง(HTML, CSS, Javascript), ๋๋ฌ๋ณด๊ธฐ(HTML, CSS), ๋ก๊ทธ์ธ/ํ์๊ฐ์ (HTML, CSS), ์ง๋๋ณด๊ธฐ(HTML, CSS, Javascript(์ง๋API)), ์คํ์์ธ(CSS, Javascript),
- ๊น์๋ฐฑ: ํจ๊ปํ๊ธฐ(HTML, CSS), ์คํ์์ธ(HTML, CSS), ํจ๊ปํ๊ธฐ(CSS)
- ๋ฐ์ฉํธ: ์ง๋๋ณด๊ธฐ(HTML, CSS, Javascript(์ง๋API))
- ๊นํ์: ๋ง์ดํ์ด์ง(HTML, CSS)
- Back-end : ๊น์๋ฐฑ
- ๋ฐฐํฌ : ๋ฉ์ฌ ์จ์ค์คํ ๊ฐ์ฌ๋ ๋์์ผ๋ก ์งํ
- ๊ธฐํ : ์ต์์
-
๋ฉ์ธ ํ์ด์ง : Carousel ๊ธฐ๋ฅ์ ํ์ฉํด์ DB์ ์ ์ฅ๋ ์ฌํ ์คํ์ ์๋์ผ๋ก ๋ณด์ฌ์ฃผ๊ธฐ
- ํด๋น ์คํ์ ๋ง์ฐ์ค๋ฅผ ์์น์ํฌ ๋ ์คํ์ ์ข์์ ๊ฐ์ ํ์
- ๋ก๊ทธ์ธ ์ ๋ง์ดํ์ด์ง ํ๋ฉด์ ๋ณผ ์ ์๋๋ก ์ค์
- ๋ฉ์ธ ํ์ด์ง ๋ฉ์ธ์ง๋ฅผ ํด๋ฆญํด์ ๋๋ฌ๋ณด๊ธฐ ํ์ด์ง๋ ํจ๊ปํ๊ธฐ ํ์ด์ง๋ก ์ด๋ํ ์ ์๋๋ก ๊ตฌ์ฑ
-
์ง๋๋ณด๊ธฐ ํ์ด์ง : ์นด์นด์ค ์ง๋ API๋ฅผ ์ด์ฉํ์ฌ ์ง๋์์ ์คํ์ ํด๋ฆญํ์ ๋, DB์ ์ ์ฅ๋์ด ์๋ ํด๋น ์คํ์ ์ ๋ณด(์ด๋ฆ, ์ง์ญ, ์ด๋ฏธ์ง ๋ฑ) ๋ณด์ฌ์ฃผ๋ ๊ธฐ๋ฅ ๊ตฌ์ฑ
- ์ง๋๋ณด๊ธฐ ํ์ด์ง๋ฅผ ํด๋ฆญํ ๊ฒฝ์ฐ, ์นด์นด์ค ์ง๋ API ์์น๋ฅผ ์ ์ฃผ๋ ์ ์ฒด ์ง์ญ์ ํ์ธํ ์ ์๋๋ก ์์น ์ค์
- DB์ ์ ์ฅ๋์ด ์๋ ๋ชจ๋ ์ ์ฃผ๋์ ์คํ์ ์ง๋ ํ๋ฉด์ ๋ง์ปค๋ก ํ์
- ์คํ ํด๋ฆญ ํ ์ถ๋ ฅ๋ ํด๋น ์คํ์ ์ด๋ฏธ์ง๋ฅผ ํด๋ฆญ ์, ์คํ ์์ธ ํ์ด์ง๋ก ์ด๋ํ ์ ์๊ฒ ๊ตฌํ
- ์ ์ ๊ฐ ๋ก๊ทธ์ธ ํ์ ๊ฒฝ์ฐ, DB์ ์๋ ๋ชจ๋ ์คํ์ ์ง๋์ ํ์ํ๊ฑฐ๋ ์ ์ ๊ฐ ์ข์์๋ฅผ ๋๋ฅธ ์คํ๋ง ์ง๋์ ํ์ํ ์ ์๋ ๊ธฐ๋ฅ ๊ตฌํ
-
๋๋ฌ๋ณด๊ธฐ ํ์ด์ง : DB์ ์ ์ฅ๋ ๋ชจ๋ ์ฌํ ์คํ์ ์ต์ ์, ์ธ๊ธฐ์, ์ง์ญ๋ณ๋ก ๋ณผ ์ ์๋๋ก ๊ตฌํ
- ์ธ๊ธฐ์์ ๊ฒฝ์ฐ, ์ข์์ ๊ฐ์๊ฐ ๊ฐ์ฅ ๋ง์ ์ฌํ ์คํ์์ผ๋ก ์ ๋ ฌ๋ ์ ์๋๋ก ๊ตฌ์ฑ
- ํด๋น ํ๋ฉด์์ ์คํ๋ง๋ค ์ข์์ ๋ฒํผ์ ํตํด ๋ฐ๋ก ์ข์์ ๋ฐ ์ทจ์๊ฐ ๋๋๋ก ๊ตฌํ
- ๊ฒ์ ๊ธฐ๋ฅ์ผ๋ก ์คํ์ ์ ๋ชฉ์ ๊ฒ์ํ ์ ์๊ฒ ์ค์ ํ๊ณ ํด๋น ์คํ์ ํด๋ฆญํ๋ฉด ์คํ ์์ธ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ
- ํด๋น ์คํ์ ๋ง์ฐ์ค๋ฅผ ์์น์ํฌ ๋ ์คํ ์ด๋ฆ์ ํ์ธํ ์ ์๋๋ก ์ค์
-
์คํ ์์ธ ํ์ด์ง : ํด๋น ์คํ์ ๋ํ ์ ๋ณด(์ด๋ฆ, ์ง์ญ, ์ฃผ์, ๋๊ธ ๋ฐ ์ข์์ ๊ฐ์, Carousel๋ก ์ด๋ฏธ์ง 2์ฅ)๋ฅผ ํ์ธํ ์ ์๋๋ก ๊ตฌํ
- ์นด์นด์ค ์ง๋ API๋ก ํด๋น ์คํ์ ์ง๋์์ ๋ณด์ฌ์ฃผ๊ธฐ
- ๋ก๊ทธ์ธ ์, ํด๋น ์คํ์ ๋ํ ๋๊ธ์ ์์ฑํ ์ ์๋๋ก ๊ตฌํ
- ๋ณธ์ธ์ด ๋จ๊ธด ๋๊ธ์ผ ๊ฒฝ์ฐ, ์ญ์ ๊ฐ ๊ฐ๋ฅํ๋๋ก ์ญ์ ๋ฒํผ ์ถ๋ ฅ
-
ํจ๊ปํ๊ธฐ ํ์ด์ง : Spot On์ ์ ์ ์ธ ๊ฒฝ์ฐ, ํจ๊ป ์ฌ์ง์ ์ฐ์ ๋ํ์ ๊ตฌํ ์ ์๋ ๊ฒ์ํ CRUD ๊ตฌ์ฑ
- ์ ์ ์ธ ๊ฒฝ์ฐ, ๊ฐ ๊ฒ์๊ธ์ ๋๊ธ์ ๋จ๊ธธ ์ ์๋๋ก ์ค์
- ๋๊ธ ์์ฑ ์, ์์ฑ์์๊ฒ ๊ท์๋งํ๊ธฐ๋ฅผ ์ฒดํฌํ๊ณ ์์ฑํ๋ฉด ๋๊ธ ์์ฑ์์ ๊ฒ์๊ธ ์์ฑ์๋ง์ด ๋๊ธ์ ํ์ธํ ์ ์๊ฒ ๊ธฐ๋ฅ ๊ตฌํ
- ๊ฒ์ ๊ธฐ๋ฅ์ผ๋ก ๊ฒ์ํ ์ ๋ชฉ์ผ๋ก ๊ฒ์์ด ๊ฐ๋ฅํ๊ฒ๋ ๊ตฌํํ๊ณ ๊ฒ์๊ธ ์์ ์ซ์๋ฅผ DB์ id๊ฐ ์๋ ์์๋๋ก ๋์ดํ๊ฒ๋ ์ค์
- ๊ฒ์ํ pagination ๊ตฌํ
-
๋ง์ดํ์ด์ง : Spot On์ ์ ์ ์ธ ๊ฒฝ์ฐ, ๋ณธ์ธ์ด ์ข์์๋ฅผ ๋๋ฅธ ๋ชจ๋ ์ฌํ ์คํ์ ํ์ธํ ์ ์๋ ์์๋ฆฌ์คํธ ๊ตฌํ
- ๋ง์ดํ์ด์ง์์๋ ์ ์ ๊ฐ ์ข์์๋ฅผ ๋๋ฅธ ์ฌํ ์คํ์ ํด๋ฆญํ๋ฉด ์คํ ์์ธ ํ์ด์ง๋ฅผ ํ์ธํ ์ ์๊ฒ ์ค์
-
Django ์ด๋๋ฏผ ํ์ด์ง : ๋ชจ๋ธ ๋ณ ํ๋ ์ค์ ๋ฐ ๊ฒ์๊ณผ ํํฐ ๊ธฐ๋ฅ ์ถ๊ฐ
- 1:N๊ด๊ณ๋ 1:1๊ด๊ณ์ ๊ฒฝ์ฐ, ์ค์ ๋ชจ๋ธ์ ํ๋๋ฅผ ์ค์ ํ ์ ์๋๋ก ํ๋ ์ค์ ex) user__user__username