장바구니와 위시리스트, 제품 검색 및 회원정보관리를 제공하는 쇼핑몰 서비스입니다.
실무에서 직면한 문제들을 혼자 해결하고, 해결 과정에서 얻은 기술과 지식을 구체적으로 구현 및 문서화하였습니다.
프론트엔드 개발 경험을 바탕으로 RESTful API 설계와 데이터베이스 모델링을 직접 수행했습니다.
백엔드 및 데이터베이스 영역에서의 협업 능력 향상을 목표로 작업했습니다.
| 사용 언어 (FE/BE) | TypeScript (FE/BE) |
|---|---|
| 웹 프레임워크 (FE/BE) | [FE/BE] Next.js (v14, App Router) |
| Auth 라이브러리 | NextAuth.js (v4) |
| 상태 관리 라이브러리 | Zustand |
| 스타일링 도구 | TailwindCSS |
| ORM / DBMS | Prisma / Supabase (PostgreSQL) |
| 패키지 관리자 | pnpm (v9.5.0) |
| 런타임 환경 | Node.js v20 |
| 이미지 CDN | Supabase Storage |
| 배포 (FE/BE) | FE 배포: Vercel, BE 배포: Vercel (API 라우팅, 서버리스 함수), Supabase (PostgreSQL, DBMS) |
| 문서화 도구 / IDE | Notion / VSCode |
| 개발 환경 / 운영 체제 | Mac |
- 이미지가 가장 많이 몰려있는 메인 페이지를 기준으로 점수를 측정
- 최초
Desktop 66점,Mobile 33점에서 시작하여 개선
Desktop: 100점 |
Mobile: 76점 |
|---|---|
![]() |
![]() |
Desktop 브라우저 반응형 해상도 (Mac 기준) |
|---|
![]() |
Tablet 해상도 (iOS 웹뷰 기준) |
Mobile 해상도 (iOS 웹뷰 기준) |
|---|---|
![]() |
![]() |
📦 shopping
├── 📂 app
│ ├── 📂 actions
│ ├── 📂 api
│ ├── 📂 hooks
│ ├── 📂 add-product
│ ├── 📂 my-shopping
│ ├── 📂 profile
│ ├── 📂 request-reset
│ ├── 📂 reset-password
│ ├── 📂 search
│ ├── 📂 signIn
│ └── 📂 signUp
│
├── 📄 favicon.ico
├── 📄 global.css
├── 📄 layout.tsx
├── 📄 not-found.tsx
├── 📄 page.tsx
│
├── 📂 lib
│ ├── 📂 components
│ ├── 📂 stores
│ ├── 📄 auth.ts
│ ├── 📄 zodSchema.ts
│ ├── 📄 supabaseClient.ts
│ ├── 📄 prisma.ts
│ ├── 📄 constants.ts
│ └── 📄 utils.ts
│
├── 📂 prisma
├── 📂 public
├── 📂 types
│
├── 📄 middleware.ts
├── 📄 next.config.mjs
├── 📄 tailwind.config.js
└── 📄 tsconfig.json-
📂 app > actions (Server Actions)
- 데이터 처리가 즉시 필요한 작업
- [CRUD] 위시리스트, 주문리스트, 배송지
- [조회, 업데이트] 프로필
- [조회] 제품 검색, email 중복여부
- [조회, 생성, 제거] 장바구니
- [조회, 삭제, 생성] 제품 리스트
- Toggle 하여 사용자 위시리스트, 장바구니 반영 여부 반영
- 일괄조회, 페이징 조회 (infinite scroll 기능)
- [CRUD] admin 제품 리스트 관리
- 데이터 처리가 즉시 필요한 작업
-
📂 app > api (Route API)
- 인증, 권한 체크가 필요한 작업
- 로그인, 로그아웃, 비밀번호 갱신 및 갱신 요청 관련
- 인증, 권한 체크가 필요한 작업
-
📂 app > hooks
- 상태 관리 및 비즈니스 로직을 커스텀 훅으로 분리
- 비즈니스 로직과 UI 로직을 분리
-
📂 lib > components
- 일반, 관리자, 공통으로 쓰이는 컴포넌트 관리
-
📂 lib > stores
- 배송지, 장바구니, 주문리스트, 제품리스트, 위시리스트 관련 Zustand 상태 store
| User | 사용자 정보 | Cartlist | 장바구니 목록 |
|---|---|---|---|
| Agreement | 정보이용동의 (선택/필수) | Wishlist | 위시리스트 |
| Address | 사용자 배송지 (기본/기타) | Order | 사용자가 만든 각 주문에 대한 정보 |
| Product | 제품 정보 | OrderItem | 각 주문에 포함된 개별 상품의 정보 |



















