0) DB: 화면설계(UI)와 데이터 구조(ERD) (1)
1) api 호출하기 sql+node(back)+front
폴더구조부터 db저장+api 호출 방식까지 새롭게 다시 작업합니다 =u= 허허
폴더 구조는
"Bulletproof React"의 구조를 차용한 "Feature-Based Modular 구조" 로 변경
├── app/
│ ├── api/
│ │ ├── auth/
│ │ │ └── route.ts
│ │ └── posts/
│ │ └── route.ts # 여기서 api GET으로 가져오는것으로 변경
│ │ # - (SELECT * FROM posts 등 sql문 쿼리로 조건 분기)
├── lib/
│ └── db.ts # 여기서 3001 띄우던 설정 넣기 (기존 노드로 띄우던거 종료)
├── features/
│ ├── posts/
│ │ ├── api/
**│ │ │** └── ****postsApi.ts # await fetch(`/api/posts?type=${type}`);
│ │ ├── hooks/
**│ │ │** └── ****usePosts.ts # useEffect로 setPosts에 데이터 넣기
│ │ ├── components/
**│ │ │ ├──** TopShared.tsx # hooks 호출해서 그리기1
│ │ │ ├── Categories.tsx # hooks 호출해서 그리기2
│ │ │ └── Series.tsx # hooks 호출해서 그리기3
│ │ └── types/
│ │ │ └── postType.ts
(구버전 ▼)
src/
├── app/ (Next.js App Router)
│ ├── donday/
│ │ ├── page.tsx # 여기서 각 Feature의 '컴포넌트'만 불러옴(# 메인 페이지 (localhost:3000/donday))
│ │ ├── search/
│ │ │ └── page.tsx # 검색 결과 페이지 (localhost:3000/donday/search?q=...)
│ │ └── [id]/
│ │ └── page.tsx # 상세 페이지 (localhost:3000/donday/123)
├── features/ # 핵심 로직 집합소
│ ├── auth/ # 회원가입/로그인 관련 (UI + API + Hooks)
│ ├── posts/ # dd_post 관련 (가장 중요!)
│ │ ├── api/ # fetchPosts, fetchPostDetail, usePosts (React Query)
│ │ ├── components/ # PostSlider, PostCategory, PostDetail
│ │ ├── types/ # Post 관련 타입 정의
│ │ └── index.ts # 외부(page)에서 쓸 것들만 export
│ └── subscription/ # 구독 관련
├── components/ # 프로젝트 전역에서 쓰이는 순수 UI (Atomic의 Atoms/Molecules)
│ ├── common/ # Button, Input, Modal
│ └── slider/ # 공통 스와이퍼 프레임워크 (로직 없음)
└── shared/ # 공통 유틸, 상수
├── app/
│ ├── api/
│ │ ├── auth/
│ │ │ └── route.ts
│ │ └── posts/
│ │ └── route.ts # 여기서 api GET으로 가져오는것으로 변경
├── lib/
│ └── db.ts # 여기서 3001 띄우던 설정 넣기 (기존 노드로 띄우던거 종료)
├── features/
│ ├── auth/
│ │ ├── components/
│ │ │ ├── SingIn.tsx # await fetch('/api/auth') 로 데이터 갖고와서 그리기
│ │ │ └── SignUp.tsx
│ │ └── types/
│ │ │ └── authType.ts
│ ├── posts/
│ │ ├── api/
**│ │ │ ├──** postsApi.ts # await fetch(`/api/posts?type=${type}`);
│ │ ├── hooks/
**│ │ │ ├──** usePosts.ts # useEffect -> setPosts
│ │ ├── components/
**│ │ │ ├──** TopShared.tsx # hooks 호출해서 그리기1
│ │ │ ├── Categories.tsx # hooks 호출해서 그리기2
│ │ │ └── Series.tsx # hooks 호출해서 그리기3
│ │ └── types/
│ │ │ └── postType.ts
│ ├── kewwords/
│ │ ├── components/
│ │ │ └── keyslide.tsx
│ │ └── types/
│ │ │ └── keywordType.ts
│ ├── banner/
│ │ ├── components/
│ │ │ └── Banner.tsx
│ │ └── types/
│ │ └── bannerType.ts
일단, root에서 바로 donday 메인 화면이 나오고 하위 도메인 주소를 정해보자