์ด๋์๋ '๋๋ต๊ฒ' ๋จธ๋ฌด๋ ๊ฒฝํ์ ์์ํ์ธ์.
๋
ธ๋ง๋์ (Nomadia) ๋ ๋
ธ๋ง๋๋ฅผ ์ํ ์กํฐ๋นํฐ ์์ฝ ํ๋ซํผ ์
๋๋ค.
์ฌ์ฉ์๊ฐ ์ง์ ์ฒดํ์ ๋ฑ๋กํ๊ณ , ๋ค๋ฅธ ๋
ธ๋ง๋์ ์ฒดํ์ ์์ฝํ๋ฉฐ ๊ฒฝํ์ ๊ณต์ ํ ์ ์์ต๋๋ค.
๋ฐฐํฌ ๋งํฌ: https://nomadia-two.vercel.app/
๐ Preview GIF/MP4
๋ฉ์ธํ์ด์ง ์บ๋ฌ์
๋ฉ์ธํ์ด์ง ๋ฆฌ์คํธ
_.mp4
๋ง์ดํ์ด์ง ๋ด ์ฒดํ ๊ด๋ฆฌ - ์ฒดํ ์์
๋ง์ดํ์ด์ง ๋ด ์ฒดํ ๊ด๋ฆฌ - ์ฒดํ ์ญ์
๋ง์ดํ์ด์ง ์์ฝ ๋ด์ญ - ์ทจ์
๋ง์ดํ์ด์ง ์์ฝ ๋ด์ญ - ํ๊ธฐ ์์ฑ
๋ง์ดํ์ด์ง ๋ด ์์ฝ ํํฉ
_.MP4
๐ป ์ฒดํ ๋ฑ๋ก - ๋
ธ๋ง๋๊ฐ ์ง์ ์ฒดํ์ ๋ฑ๋กํ๊ณ ๊ด๋ฆฌ
๐
์์ฝ ์์คํ
- ์ค์๊ฐ ์์ฝ ๊ฐ๋ฅ ๋ ์ง ํ์ธ ๋ฐ ์์ฝ
๐ ์ค๋งํธ ๊ฒ์ - ์นดํ
๊ณ ๋ฆฌ, ์ง์ญ๋ณ ์ฒดํ ๊ฒ์
๐ค ๋ง์ดํ์ด์ง - ์์ฝ ๋ด์ญ, ์์ฝ ํํฉ, ์ฒดํ ๊ด๋ฆฌ, ํ๋กํ ์์
๊ธฐ์
๋ฒ์
์ค๋ช
Next.js
15.3.5 (App Router)
ํ์ผ ๊ธฐ๋ฐ ๋ผ์ฐํ
, SSR๋ก SEO ์ต์ ํ
TypeScript
5.x
์ ์ ํ์
์ผ๋ก ๊ฐ๋ฐ ์์ ์ฑ ํฅ์
React
19.0.0
์ต์ ๊ธฐ๋ฅ(Server Components, Suspense) ํ์ฉ
TailwindCSS
v4 + Turbopack
๋น ๋ฅธ ๋น๋์ ์ผ๊ด๋ ๋์์ธ ์์คํ
๊ธฐ์
์ค๋ช
TanStack Query
์๋ฒ ์ํ ์บ์ฑ๊ณผ ๋๊ธฐํ๋ก API ์์ฒญ ์ต์ ํ
Zustand
๊ฐ๋จํ๊ณ ์ง๊ด์ ์ธ ํด๋ผ์ด์ธํธ ์ํ ๊ด๋ฆฌ
Axios
์์ ์ ์ธ HTTP ํด๋ผ์ด์ธํธ, ์ธํฐ์
ํฐ๋ก ํ ํฐ ๊ด๋ฆฌ
๊ธฐ์
์ค๋ช
React Hook Form
์ฑ๋ฅ ์ต์ ํ๋ ํผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
Zod
TypeScript ๊ธฐ๋ฐ ์คํค๋ง ๊ฒ์ฆ
๊ธฐ์
์ค๋ช
shadcn/ui
์ปค์คํฐ๋ง์ด์ง ๊ฐ๋ฅํ ์ปดํฌ๋ํธ ์์คํ
Framer Motion
๋ถ๋๋ฌ์ด ์ ๋๋ฉ์ด์
๊ณผ ์ธํฐ๋์
Swiper
๋ฐ์ํ ์บ๋ฌ์
๊ณผ ํฐ์น ์ฌ๋ผ์ด๋
๊ธฐ์
์ค๋ช
Vercel
Next.js ์ต์ ํ๋ ๋ฐฐํฌ ํ๋ซํผ
Husky + lint-staged
Git Hook์ผ๋ก ์ฝ๋ ํ์ง ์๋ ๊ฒ์ฆ
Lighthouse CI
์ฑ๋ฅ ๋ฐ ์ ๊ทผ์ฑ ์ง์์ ๋ชจ๋ํฐ๋ง
ํ์
์ ์ง์ค (ํ์ฅ)
๊น์ํ
๊น์ค์ฐ
์ ๋ํ
ํ์ด์ง, ๊ธฐ๋ฅ
- ์ฒดํ ์์ธ ํ์ด์ง
- 404 ํ์ด์ง, ์๋ฌ ํ์ด์ง
- ๋๋ฉ ํ์ด์ง ๊ธฐํ ๋ฐ ๊ตฌํ
- ๋ฉ์ธ ํ์ด์ง
- ์์ฝ ๋ด์ญ ํ์ด์ง
- ์ฒดํ ๋ฑ๋ก ํ์ด์ง
- ์์ฝ ํํฉ ํ์ด์ง
- ์ฒดํ ๊ฒ์ ๊ธฐ๋ฅ
- ๋ก๊ทธ์ธ/ํ์๊ฐ์
ํ์ด์ง
- ๋ด ์ ๋ณด/์ฒดํ ์์ ํ์ด์ง
- ๋ด ์ฒดํ ๊ด๋ฆฌ ํ์ด์ง
(shared) ๊ณตํต ์ปดํฌ๋ํธ, ๊ณตํต ๋ก์ง
- Pagination
- Modal
- Calendar
- Infinite Scroll
- Loading Spinner
- Skeleton
- Carousel
- Error Message
- Dropdown
- Header
- Footer
- Sidebar
๊ธฐํ
- ESLint, Prettier, settings.json ์ค์ - ํ๋ก์ ํธ ๋ฆฌ๋์์ธ
- ๊ณตํต ์คํ์ผ ์ ์ - husky / LightHouse CI ์ค์
- ๋ฐ๋ชจ ์์
- ๋ฐฐํฌ - ๋ฐํ
๊ณตํต ์ปดํฌ๋ํธ, ๋ก์ง