
Next.js와 Tailwind를 이용한 모-던 어드민 템플릿
누구나 손쉽고 빠르게 백오피스 페이지를 개발할 수 있도록 인기있는 라이브러리를 모아 만든 Next.js + Tailwind + Ant Design 기반 어드민 템플릿입니다. 어드민 개발만 10년째..

Warning This is work in progress. 필요한 설명이나 기능/버그가 있으면 이슈에 등록해주세요. 순차적으로 검토 후 업데이트 하겠습니다.
https://admin-ui.purple.io/login
OAuth(Google/GitHub) 또는 아이디/패스워드(admin/admin)으로 로그인하세요.
Deploy 버튼을 클릭하여 소스를 복제하고 vercel에 배포하여 테스트 할 수 있습니다.
소스를 다운로드하거나 다음 명령어를 입력하여 프로젝트를 시작할 수 있습니다.
# npm
npx create-next-app --example "https://github.com/purpleio/purple-admin-ui"
# yarn
yarn create next-app --example "https://github.com/purpleio/purple-admin-ui"
# pnpm
pnpm create next-app --example "https://github.com/purpleio/purple-admin-ui".env.example 파일을 복사하여 .env 파일을 생성합니다.
cp .env.example .env| 키 | 설명 | 예시 |
|---|---|---|
| NEXTAUTH_URL | 서비스 URL | http://localhost:3000 |
| NEXTAUTH_SECRET | 랜덤 비밀 키 | 랜덤생성기 발급 |
| GITHUB_CLIENT_ID | GitHub OAuth Client ID | |
| GITHUB_CLIENT_SECRET | GitHub OAuth Client Secret | |
| GOOGLE_CLIENT_ID | Google OAuth Client ID | |
| GOOGLE_CLIENT_SECRET | Google OAuth Client Secret | |
| NEXT_PUBLIC_API_ENDPOINT | API 서버 엔드포인트 | http://localhost:3000 |
| NEXT_PUBLIC_CODENBUTTER_SITE_ID | 팝업 플러그인 | 코드앤버터 사이트 아이디 |
샘플 코드를 통해 기본적인 사용법을 확인할 수 있습니다.
API 서버 (mock data)
일반적으로 백엔드 서버를 분리하는 경우가 많지만 간단한 테스트를 위한 샘플 코드입니다.
API 클라이언트
프론트엔드에서 API를 호출하기 위한 함수를 모아 놓은 샘플 코드입니다.
API와 관련된 코드와 Type을 관리합니다.
페이지
대시보드와 상품 CRUD 샘플 페이지입니다.
세부사항은 src/components/page/[동일한 페이지 경로]에 컴포넌트로 분리합니다.
컴포넌트
여러가지 라이브러리를 섞어 보기 좋게 만든 샘플 코드입니다.
통계, 검색, 리스트, 입력폼등 기본 기능을 확인할 수 있습니다.
샘플 이미지
효율적인 관리를 위해 디렉토리 구조를 다음과 같이 정의합니다.
┌─ src
│ ├─ client # API 호출 코드
│ ├─ components
│ │ ├─ layout # 기본 레이아웃
│ │ ├─ page # 페이지별 세부 컴포넌트
│ │ └─ shared # 공통 컴포넌트
│ ├─ fonts # 웹폰트
│ ├─ lib
│ │ ├─ auth # 인증 관련 코드
│ │ └─ hooks # react hooks
│ ├─ pages # 페이지
│ ├─ styles # 기본 스타일
│ └─ types # 타입 정의
└─ public # 이미지등 정적 파일
src/client
SWR을 사용하고 POST나 PUT은 ky를 사용src/components/layout
src/components/page
pages/profile에서 사용하는 컴포넌트는 components/page/profile에 정의src/components/shared
src/fonts
lib/auth
lib/hooks
DefaultTable
DefaultModal
FormSearch
FormSection
FormGroup
FieldInline


