개발 공부

Next.js 프로젝트 구조 설정 (관리자용 웹 애플리케이션) 본문

웹개발 (자바, 스프링, React)/Next.js

Next.js 프로젝트 구조 설정 (관리자용 웹 애플리케이션)

아이셩짱셩 2024. 11. 12. 13:31

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. 추가 고려 사항

  1. 라우팅
    • pages 폴더에 있는 파일들은 자동으로 라우팅이 됩니다. login.js는 /login 경로로 접근 가능하고, index.js는 기본 / 경로로 매핑됩니다.
  2. 상태 관리 (Context API or Redux)
    • 로그인 상태를 관리하기 위해 Context API 또는 Redux를 사용할 수 있습니다. AuthContext.js에서 로그인 상태를 설정하고, 필요한 컴포넌트에 쉽게 전달할 수 있습니다.
    • Redux를 선호한다면 authSlice.js를 사용하여 인증 상태를 관리하고, store.js에서 Redux 스토어를 설정할 수 있습니다.
  3. API 연동
    • 관리자 웹 애플리케이션에서 데이터를 표시하려면, fetch 또는 axios를 사용해 백엔드 API와 연동해 데이터를 가져와야 합니다.
    • API 요청을 쉽게 관리하려면 api.js 파일에 공통 API 호출 로직을 작성하고, 각 컴포넌트에서 필요한 데이터를 불러올 수 있습니다.
  4. 보안 고려 사항
    • 로그인 페이지에서는 토큰 기반 인증을 사용하여 사용자를 인증하고, 민감한 정보는 HTTPS로 전송하여 보안을 강화합니다.
    • 로그인 상태는 로컬 스토리지에 저장하거나, 서버 세션을 사용하여 유지합니다.

이 구조를 기반으로 프로젝트를 시작하면, Next.js의 기능을 충분히 활용한 효율적인 관리자 웹 애플리케이션을 구현할 수 있습니다. 각각의 기능을 구현하면서 점진적으로 프로젝트를 확장해보세요!

Comments