개발 공부
Next.js 프로젝트 구조 설정 (관리자용 웹 애플리케이션) 본문
1. 폴더 구조
my-admin-app/
├─ src/
│ ├─ app/
│ │ ├─ layout.tsx // 전체 레이아웃 컴포넌트
│ │ ├─ page.tsx // 메인 페이지
│ │ ├─ login/
│ │ │ └─ page.tsx // 로그인 페이지
│ │ ├─ dashboard/
│ │ │ ├─ layout.tsx // 대시보드 페이지 전용 레이아웃
│ │ │ └─ page.tsx // 대시보드 페이지
│ ├─ components/
│ │ ├─ Header.tsx // 헤더 컴포넌트
│ │ ├─ Sidebar.tsx // 사이드바 컴포넌트
│ │ └─ Footer.tsx // 푸터 컴포넌트
│ ├─ context/
│ │ └─ AuthContext.tsx // 로그인 상태 관리용 Context
│ ├─ lib/
│ │ ├─ auth.ts // 인증 관련 유틸리티 함수
│ │ └─ api.ts // API 호출 함수
│ ├─ styles/
│ │ ├─ globals.css // 전역 CSS
│ │ └─ Login.module.css // 로그인 페이지 전용 CSS
├─ public/
│ └─ images/
├─ .env
├─ .gitignore
├─ next.config.ts
├─ package.json
├─ tsconfig.json // TypeScript 설정 파일
└─ README.md
2. 파일 설명
- src/app/layout.tsx
이 파일은 애플리케이션의 전체 레이아웃을 정의합니다. 모든 페이지에 공통으로 적용될 구조를 여기서 설정하며, Header, Sidebar, Footer 등의 공통 컴포넌트를 포함시킬 수 있습니다. - src/app/page.tsx (메인 페이지)
애플리케이션의 메인 페이지입니다. 사용자가 로그인 후 처음 마주치는 화면으로, 대시보드나 주요 기능으로의 네비게이션을 제공합니다. - src/app/login/page.tsx (로그인 페이지)
사용자 인증을 담당하는 페이지입니다. 아이디와 비밀번호를 입력받아 인증 프로세스를 처리합니다. - src/components/
재사용 가능한 UI 컴포넌트들을 모아둔 디렉토리입니다. Header, Sidebar, Footer 등 애플리케이션 전반에 걸쳐 사용되는 컴포넌트들이 위치합니다. - src/context/AuthContext.tsx
React의 Context API를 활용하여 사용자의 인증 상태를 전역적으로 관리합니다. 로그인 상태, 사용자 정보 등을 여기서 다룹니다. - src/lib/auth.tsx
인증 관련 유틸리티 함수들을 포함하는 파일입니다. 토큰 발행, 검증, 로그아웃 등의 함수를 구현할 수 있습니다. - src/lib/api.tsx
API 호출을 위한 유틸리티 함수들을 모아둔 파일입니다. axios나 fetch를 사용한 API 호출 로직과 에러 처리 등의 공통 설정을 포함합니다. - src/styles/globals.css
애플리케이션 전체에 적용될 글로벌 스타일을 정의합니다. 기본 폰트, 색상 스키마 등을 설정할 수 있습니다. - src/styles/Login.module.css
CSS 모듈을 활용한 로그인 페이지 전용 스타일 파일입니다. 컴포넌트 스코프의 스타일을 적용할 수 있어 스타일 충돌을 방지합니다. - public/images/
로고, 아이콘 등 정적 이미지 파일들을 저장하는 디렉토리입니다. Next.js의 public 폴더를 통해 쉽게 접근할 수 있습니다. - .env
환경 변수를 저장하는 파일입니다. API 키, 데이터베이스 연결 정보 등 민감한 정보를 안전하게 관리할 수 있습니다. - next.config.tsx
Next.js의 설정 파일입니다. 커스텀 웹팩 설정, 환경 변수 설정, 리다이렉트 규칙 등을 정의할 수 있습니다.
3. 추가 고려 사항
- 라우팅
- pages 폴더에 있는 파일들은 자동으로 라우팅이 됩니다. login.js는 /login 경로로 접근 가능하고, index.js는 기본 / 경로로 매핑됩니다.
- 상태 관리 (Context API or Redux)
- 로그인 상태를 관리하기 위해 Context API 또는 Redux를 사용할 수 있습니다. AuthContext.js에서 로그인 상태를 설정하고, 필요한 컴포넌트에 쉽게 전달할 수 있습니다.
- Redux를 선호한다면 authSlice.js를 사용하여 인증 상태를 관리하고, store.js에서 Redux 스토어를 설정할 수 있습니다.
- API 연동
- 관리자 웹 애플리케이션에서 데이터를 표시하려면, fetch 또는 axios를 사용해 백엔드 API와 연동해 데이터를 가져와야 합니다.
- API 요청을 쉽게 관리하려면 api.js 파일에 공통 API 호출 로직을 작성하고, 각 컴포넌트에서 필요한 데이터를 불러올 수 있습니다.
- 보안 고려 사항
- 로그인 페이지에서는 토큰 기반 인증을 사용하여 사용자를 인증하고, 민감한 정보는 HTTPS로 전송하여 보안을 강화합니다.
- 로그인 상태는 로컬 스토리지에 저장하거나, 서버 세션을 사용하여 유지합니다.
이 구조를 기반으로 프로젝트를 시작하면, Next.js의 기능을 충분히 활용한 효율적인 관리자 웹 애플리케이션을 구현할 수 있습니다. 각각의 기능을 구현하면서 점진적으로 프로젝트를 확장해보세요!
'웹개발 (자바, 스프링, React) > Next.js' 카테고리의 다른 글
Next.js api.js 폴더 이름 util vs. lib (0) | 2024.11.12 |
---|---|
Next.js 페이지 라우팅 /app vs. /pages (0) | 2024.11.12 |
Next.js 기본 폴더 구조 (0) | 2024.11.12 |
Next.js에서 로그인 상태 관리: Context API vs Redux 비교 (0) | 2024.11.12 |
Next.js 프로젝트 생성시 Tailwind CSS 사용 선택 (0) | 2024.11.08 |
Comments