[ํ ํ์ ๋ฌธ์ ๋ฐ๋ก๊ฐ๊ธฐ] (https://www.notion.so/2-1be5e940de598095a073da7e2f525e98?cookie_sync_completed=true)
๋ง์ ์ฌ๋๋ค์ด ๋ชฉํ๋ฅผ ์ค์ ํ๊ณ ๊พธ์คํ ์ต๊ด์ ๋ง๋ค๊ณ ์ถ์ด ํ์ง๋ง, ์ด๋ฅผ ์ง์ํ๋ ๊ฒ์ ์ฝ์ง ์์ต๋๋ค. ๊ณต๋ถ์ ์ฒ์ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ต๊ด์ ํ์ฑํ๊ณ , ์ง์ค ์๊ฐ์ ๋ฐ๋ผ ํฌ์ธํธ๋ฅผ ์ง๊ธํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์๋น์ค์ ๋๋ค.
- ์ต๊ด ํ์ฑ ๋ฐ ๊ด๋ฆฌ
- ์ง์ค ์๊ฐ์ ๋ฐ๋ฅธ ํฌ์ธํธ ์ง๊ธ
- ์คํฐ๋ ๊ทธ๋ฃน ํ๋ ์ง์
- 2025.03.21 ~ 2025.04.10
| Category | Tech Stack |
|---|---|
| Frontend | |
| Backend | |
| Deploy | |
| Tool |
-
์คํฐ๋ ์์ธ ์กฐํ
-
์คํฐ๋ ๋ชฉ๋ก ํ์ด์ง์์ ๊ฐ ์คํฐ๋๋ฅผ ํด๋ฆญํ ๊ฒฝ์ฐ ์คํฐ๋ ์์ธ ์กฐํ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
-
์ต๊ด ๊ธฐ๋กํ๋ ์ค๋์ ์ต๊ด์์ ์์ ํ ์ ์์ต๋๋ค.
-
์ต๊ด ๊ธฐ๋กํ์ ์ผ์ฃผ์ผ ๋จ์๋ก ์ ์ ๊ฐ ์๋ฃํ๊ฑฐ๋ ์๋ฃํ์ง ์์ ์ต๊ด์ ๋ถ๋ฌ์ ์๋ฃ๋ ๊ฒฝ์ฐ์๋ ์๊น ์คํฐ์ปค๋ก ํ์ํฉ๋๋ค.
-
-
ํน์ ์คํฐ๋ ์ญ์
- ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ์ฌ ์คํฐ๋ ๋ฑ๋ก ์ ์ ๋ ฅํ๋ ๋น๋ฐ๋ฒํธ์ ์ผ์นํ ๊ฒฝ์ฐ, ์คํฐ๋ ์ญ์ ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
-
๊ณต์ฉ ๋น๋ฐ๋ฒํธ ๊ฒ์ฆ ๋ชจ๋ฌ ๊ตฌํ
- ์คํฐ๋ ์ญ์ , ์์ , ์ค๋์ ์ง์ค, ์ค๋์ ์ต๊ด ๊ธฐ๋ฅ์์ ๊ณตํต์ผ๋ก ์๊ตฌํ๋ ๋น๋ฐ๋ฒํธ ๊ฒ์ฆ ๋ชจ๋ฌ์ ๋ง๋ญ๋๋ค.
-
ํน์ ์คํฐ๋ ์์
- ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ์ฌ ์คํฐ๋ ๋ฑ๋ก ์ ์ ๋ ฅํ๋ ๋น๋ฐ๋ฒํธ์ ์ผ์นํ ๊ฒฝ์ฐ, ์คํฐ๋ ์์ ํผ์ผ๋ก ์ด๋ํ๋ฉฐ, ์คํฐ๋ ์์ธ์ ๋ณด๋ฅผ ์์ ํ ์ ์์ต๋๋ค.
-
์์ ์ด๋ชจ์ง ์ถ๊ฐ
- ์คํฐ๋ ์์ธ ํ์ด์ง๋ฅผ ์กฐํํ ๋ ์คํฐ๋์ ์ ์ฅ๋ ์์ ์ด๋ชจ์ง๋ฅผ ๋ถ๋ฌ์ค๊ณ , ์ด๋ชจ์ง๋ฅผ ์ถ๊ฐ๋ก ๋จ๊ธฐ๊ฑฐ๋ ์ญ์ ํ ์ ์์ต๋๋ค.
- ์ค๋์ ์ง์ค ์์
- ํ์ด๋จธ๋ก ๊ณต๋ถ ์๊ฐ์ ์ค์ ํ๊ณ , ์์ ๋ฒํผ์ ํด๋ฆญํด ์ค๋์ ์ง์ค ์์์ด ๊ฐ๋ฅํฉ๋๋ค.
- ์ค๋์ ์ง์ค ์๋ฃ
- ์ค์ ํ ๊ณต๋ถ์๊ฐ์ด ์ข ๋ฃ๋๋ฉด, ์ง์ค์ด ์๋ฃ๋ฉ๋๋ค.
- ์ง์ค ์ฑ๊ณต ์ ๊ธฐ๋ณธ 3ํฌ์ธํธ๋ฅผ ํ๋ํ๊ณ , ์ค์ ํ ๊ณต๋ถ์๊ฐ 10๋ถ๋น ์ถ๊ฐ 1ํฌ์ธํธ๋ฅผ ๋ฐ์ต๋๋ค.
- ์ค๋์ ์ต๊ด ์กฐํ
- ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ์ฌ ์คํฐ๋ ๋ฑ๋ก ์ ์ ๋ ฅํ๋ ๋น๋ฐ๋ฒํธ์ ์ผ์นํ ๊ฒฝ์ฐ, ์ค๋์ ์ต๊ด ์กฐํ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
- ํ์ฌ ์๊ฐ, ์ค๋์ ์ต๊ด ๋ชฉ๋ก์ด ์กฐํ๋ฉ๋๋ค.
- ์ค๋์ ์ง์ค ๋ฐ ํ ๋ฒํผ์ ํตํด ์ค๋์ ์ง์ค ํ์ด์ง ๋ฐ ์คํฐ๋ ํ์ผ๋ก ๋๊ฐ ์ ์์ต๋๋ค.
- ์ค๋์ ์ต๊ด ์์ฑ
- ๋งค์ผ ๋ฐ๋ณต๋ ์ต๊ด์ ์ค์ ํฉ๋๋ค.
- ์คํฐ๋ ์์ฑ
- ๋๋ค์, ์คํฐ๋ ์ด๋ฆ, ์คํฐ๋์ ๋ํ ๊ฐ๋จํ ์๊ฐ, ๋ฐฐ๊ฒฝ ์ ํ, ๋น๋ฐ๋ฒํธ ๋ฐ ๋น๋ฐ๋ฒํธ ํ์ธ์ ์ ๋ ฅํ์ฌ ์คํฐ๋๋ฅผ ์์ฑํฉ๋๋ค.
- ์ค๋์ ์ง์ค ์กฐํ
- ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ์ฌ ์คํฐ๋ ๋ฑ๋ก ์ ์ ๋ ฅํ๋ ๋น๋ฐ๋ฒํธ์ ์ผ์นํ ๊ฒฝ์ฐ, ์ค๋์ ์ง์ค ํ์ด์ง ์ ๊ทผ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ํ์ฌ๊น์ง ํ๋ํ ํฌ์ธํธ ์กฐํ, ํ์ด๋จธ ์กฐ์์ด ๊ฐ๋ฅํฉ๋๋ค.
-
์ค๋์ ์ต๊ด ์์
- ์ค๋์ ์ต๊ด ์ด๋ฆ์ ์์ ํ ๊ฒฝ์ฐ, ์ด์ ์ ์ฐ๊ด๋ ๋ชจ๋ ์ต๊ด์ ์ด๋ฆ์ด ๋ณ๊ฒฝ๋ฉ๋๋ค.
- ์ค๋์ ์ต๊ด์ ์ข ๋ฃํ ๊ฒฝ์ฐ, ์ค๋๋ถํฐ ์ต๊ด์ด ์ข ๋ฃ๋๋ฉฐ, ์ด์ ๊ธฐ๋ก์๋ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค.
- ์๋ก์ด ์ต๊ด ์ถ๊ฐํ ๊ฒฝ์ฐ, ์ค๋๋ถํฐ ์๋ก์ด ์ต๊ด์ด ์ถ๊ฐ๋๋ฉฐ, ์ด์ ๋ ์ง์ ์คํฐ๋ ์์ธ ์กฐํ์์๋ ํ์๋์ง ์์ต๋๋ค.
-
์ค๋์ ์ต๊ด ์ฒดํฌ
- ์งํจ ์ต๊ด์ ์ฒดํฌํ๊ฑฐ๋ ํด์ ํ ์ ์์ต๋๋ค. ์ฒดํฌ ์ฌ๋ถ๋ ๋งค์ผ ์ด๊ธฐํ๋ฉ๋๋ค.
- ์ฒดํฌํ ์ต๊ด์ ์คํฐ๋ ์์ธ ํ์ด์ง์ ์ต๊ด ๊ธฐ๋กํ์ ๊ธฐ๋ก๋ฉ๋๋ค. ์ต๊ด ๊ธฐ๋กํ์์๋ ์ผ์ฃผ์ผ ๋จ์๋ก ์ต๊ด ๊ธฐ๋ก์ ์กฐํํํ ์ ์์ต๋๋ค.
- TailwindCSS ๊ธฐ๋ฐ์ผ๋ก ๋ ์ด์์์ ์ ์ฐํ๊ฒ ๊ตฌ์ฑ
- ๋ชจ๋ฐ์ผ, ํ๋ธ๋ฆฟ, ๋ฐ์คํฌํ ํด์๋์ ๋ง์ถ ๋ฐ์ํ ๋์์ธ ์ ์ฉ
- ๊ณตํต
Header๋ฐFooter์ปดํฌ๋ํธ ์ค๊ณ ๋ฐ ์ ์ฉ - ๋ผ์ฐํ ๊ฒฝ๋ก์ ๋ฐ๋ผ ๋ฉ๋ด ๋ฐ ์คํ์ผ ๋์ ์ ์ด
- ์ ์ฒด ์คํฐ๋ ๋ฆฌ์คํธ API ์ฐ๋ ๋ฐ ๋ ๋๋ง
- ํ์ด์ง๋ค์ด์ ๊ธฐ๋ฅ ์ถ๊ฐ
- ๊ฒ์ ๋ฐ ์ ๋ ฌ ๊ธฐ๋ฅ ์ ๊ณต:
- ๐ ํค์๋ ๊ธฐ๋ฐ ๊ฒ์
- ๐ผ๐ฝ ํฌ์ธํธ ์ ์ ๋ ฌ (์ค๋ฆ์ฐจ์ / ๋ด๋ฆผ์ฐจ์)
- ๐ ์ต์ ์ / ์ค๋๋ ์ ์ ๋ ฌ
LocalStorage๋ฅผ ํ์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ์ต๊ทผ์ ์กฐํํ ์คํฐ๋ ์ ๋ณด๋ฅผ ์ ์ฅ- ํ ํ๋ฉด ๋๋ ๋ณ๋ ์น์ ์์ ์ต๊ทผ ๋ณธ ์คํฐ๋๋ฅผ ์๊ฐ์ ์ผ๋ก ์ ๊ณต
isLoading์ํ๋ฅผ ํ์ฉํ์ฌ ๋ฐ์ดํฐ ๋ก๋ฉ ์ ๋ก๋ฉ ์คํผ๋(ClipLoader) ํ์- ์ฌ์ฉ์ ํผ๋๋ฐฑ ๊ฐํ๋ฅผ ํตํ UX ํฅ์
- ๋์์ธ ์์์๋ ์์ง๋ง ์นด๋ hover ์ y๊ฐ ์ด๋ ์ ๋๋ฉ์ด์ ์ถ๊ฐ๋ก ์ญ๋์ฑ ๊ฐํ
- ๋ชจ๋ฐ์ผ ํ๊ฒฝ์์๋ ํฐ์น ์ ์นด๋ ๋ฐฐ๊ฒฝ opacity ๋ณ๊ฒฝ์ผ๋ก ๋ช ํํ ํผ๋๋ฐฑ ์ ๊ณต
- ๊ธฐ์กด
.findMany๋์Prisma.rawQuery๋ฅผ ํ์ฉํ์ฌ SQL ์์ค์ ๊ฒ์ ๋ก์ง ๊ตฌํ - ๋ถํ์ํ ๋ฐ์ดํฐ ๋ก๋ฉ ์ต์ํ๋ก ์ฑ๋ฅ ์ต์ ํ
- ๊ณต๋ฐฑ๊ฐ ์ ๋ ฅ์ ์กฐํ๊ฐ ์ ์๋๋ ๋ฌธ์ ํด๊ฒฐ
frontend/
โโโ src/
โ โโโ api/ # API ํธ์ถ ๊ด๋ จ ํจ์
โ โโโ components/ # ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ปดํฌ๋ํธ
โ โโโ contexts/ # React Context API ๊ด๋ จ ํ์ผ
โ โโโ hooks/ # ์ปค์คํ
ํ
โ โโโ layout/ # ๋ ์ด์์ ๊ด๋ จ ์ปดํฌ๋ํธ
โ โโโ pages/ # ํ์ด์ง ์ปดํฌ๋ํธ
โ โโโ styles/ # ์คํ์ผ ํ์ผ
โ โโโ utils/ # ์ ํธ๋ฆฌํฐ ํจ์
โ โโโ App.jsx # ๋ฉ์ธ ์ฑ ์ปดํฌ๋ํธ
โ โโโ main.jsx # ์ฑ ์ง์
์
โโโ public/ # ์ ์ ํ์ผ
โ โโโ font/ # ํฐํธ ํ์ผ
โ โโโ images/ # ์ด๋ฏธ์ง ํ์ผ
โ โโโ _redirects # Netlify ๋ฆฌ๋ค์ด๋ ํธ ์ค์
โโโ index.html # HTML ํ
ํ๋ฆฟ
โโโ vite.config.js # Vite ์ค์
โโโ eslint.config.js # ESLint ์ค์
โโโ package.json # ํ๋ก์ ํธ ์ค์ ๋ฐ ์์กด์ฑ
โโโ README.md # ํ๋ก์ ํธ ์ค๋ช
์
backend/
โโโ src/
โ โโโ app.js # ์ฑ ์ง์
์
โ โโโ db/ # ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ จ ํ์ผ
โ โ โโโ prisma/ # Prisma ORM ์ค์ ๋ฐ ๋ง์ด๊ทธ๋ ์ด์
โ โ โโโ client.prisma.js # Prisma ํด๋ผ์ด์ธํธ
โ โ โโโ migrations/ # ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง์ด๊ทธ๋ ์ด์
ํ์ผ
โ โ โโโ schema.prisma # Prisma ์คํค๋ง ์ ์
โ โโโ middlewares/ # ๋ฏธ๋ค์จ์ด
โ โ โโโ errorHandler.module.js # ์๋ฌ ์ฒ๋ฆฌ ๋ฏธ๋ค์จ์ด
โ โโโ modules/ # ๊ธฐ๋ฅ๋ณ ๋ชจ๋
โ โโโ healthCheck.module.js # ํฌ์ค ์ฒดํฌ ๋ชจ๋
โ โโโ index.module.js # ๋ชจ๋ ์ธ๋ฑ์ค
โ โโโ route/ # ๋ผ์ฐํธ ๋ชจ๋
โ โโโ focus.module.js # ์ง์ค ๊ด๋ จ ๋ผ์ฐํธ
โ โโโ habits.module.js # ์ต๊ด ๊ด๋ จ ๋ผ์ฐํธ
โ โโโ studies.module.js # ์คํฐ๋ ๊ด๋ จ ๋ผ์ฐํธ
โโโ package.json # ํ๋ก์ ํธ ์ค์ ๋ฐ ์์กด์ฑ
โโโ package-lock.json # ์์กด์ฑ ์ ๊ธ ํ์ผ
โโโ README.md # ํ๋ก์ ํธ ์ค๋ช
์
(https://6-studyforest-phytoncide-fs.netlify.app/)