추가 작업 계획
This commit is contained in:
@@ -1,36 +1,133 @@
|
||||
This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).
|
||||
# chocoadmin
|
||||
|
||||
## Getting Started
|
||||
chocomae(mouse-typing) 서비스의 관리자 기능을 독립 Next.js 서비스로 분리한 웹 애플리케이션이다.
|
||||
|
||||
First, run the development server:
|
||||
## 기술 스택
|
||||
|
||||
| 구분 | 기술 |
|
||||
|---|---|
|
||||
| 프레임워크 | Next.js 16 (App Router) |
|
||||
| 언어 | TypeScript |
|
||||
| 패키지 매니저 | pnpm |
|
||||
| UI / CSS | Tailwind CSS v4 + shadcn/ui (Base UI) |
|
||||
| Table | TanStack Table v8 |
|
||||
| ORM | Prisma v7 (MariaDB adapter) |
|
||||
| 인증 | NextAuth.js v5 (admin 테이블 기반) |
|
||||
| 유효성 검증 | Zod v4 |
|
||||
| 이메일 | Nodemailer |
|
||||
| DB | MariaDB 10.11 (기존 chocomae DB 공유) |
|
||||
|
||||
## 구현된 기능
|
||||
|
||||
- 관리자 로그인 (기존 `admin` 테이블 / MariaDB `PASSWORD()` 호환)
|
||||
- 마에스트로 전체 목록 — 검색(이름·이메일·ID), 상태/계정유형 필터, 페이지네이션
|
||||
- 마에스트로 상세 보기 — 기본 정보, 연장/업그레이드 이력, 처리 로그
|
||||
- 연장 신청 목록 — 승인 / 취소 (트랜잭션 + `maestro_log`)
|
||||
- 업그레이드 신청 목록 — 승인 / 거절 (트랜잭션 + `maestro_log`)
|
||||
- 비인증 접근 차단 (`proxy.ts`, API route `auth()` 검사)
|
||||
|
||||
## 개발 환경 설정
|
||||
|
||||
### 1. 의존성 설치
|
||||
|
||||
```bash
|
||||
npm run dev
|
||||
# or
|
||||
yarn dev
|
||||
# or
|
||||
pnpm dev
|
||||
# or
|
||||
bun dev
|
||||
pnpm install
|
||||
```
|
||||
|
||||
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
|
||||
### 2. 환경변수 설정
|
||||
|
||||
You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
|
||||
```bash
|
||||
cp .env.example .env.local
|
||||
```
|
||||
|
||||
This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.
|
||||
`.env.local`을 열어 실제 값으로 교체한다.
|
||||
|
||||
## Learn More
|
||||
```env
|
||||
DATABASE_URL="mysql://USER:PASSWORD@127.0.0.1:3306/chocomae"
|
||||
AUTH_SECRET="..."
|
||||
NEXTAUTH_SECRET="..."
|
||||
AUTH_URL="http://localhost:3000"
|
||||
NEXTAUTH_URL="http://localhost:3000"
|
||||
```
|
||||
|
||||
To learn more about Next.js, take a look at the following resources:
|
||||
### 3. DB 연결 확인
|
||||
|
||||
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
|
||||
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
|
||||
```bash
|
||||
pnpm db:check
|
||||
```
|
||||
|
||||
You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
|
||||
### 4. 개발 서버 실행
|
||||
|
||||
## Deploy on Vercel
|
||||
```bash
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
|
||||
[http://localhost:3000](http://localhost:3000) 에서 확인한다.
|
||||
|
||||
Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
|
||||
## 환경변수 전체 목록
|
||||
|
||||
| 변수 | 필수 | 설명 |
|
||||
|---|---|---|
|
||||
| `DATABASE_URL` | ✅ | MariaDB 연결 문자열 (`mysql://...`) |
|
||||
| `AUTH_SECRET` | ✅ | NextAuth 세션 암호화 키 |
|
||||
| `NEXTAUTH_SECRET` | ✅ | NextAuth 호환용 (동일 값) |
|
||||
| `AUTH_URL` | ✅ | 서비스 기본 URL |
|
||||
| `NEXTAUTH_URL` | ✅ | NextAuth 호환용 (동일 값) |
|
||||
| `APP_ENV` | — | `local` \| `stage` \| `production` (Phase 9) |
|
||||
| `LOG_LEVEL` | — | `debug` \| `info` \| `warn` \| `error` (Phase 9) |
|
||||
| `MAIL_FROM_NAME` | — | 발송자 이름 (Phase 11) |
|
||||
| `MAIL_FROM_ADDRESS` | — | 발송자 주소 (Phase 11) |
|
||||
| `MAIL_BCC_ADDRESS` | — | BCC 주소 (Phase 11) |
|
||||
| `MAIL_SMTP_HOST` | — | SMTP 호스트 (Phase 11) |
|
||||
| `MAIL_SMTP_PORT` | — | SMTP 포트 (Phase 11) |
|
||||
| `MAIL_SMTP_SECURE` | — | TLS 여부 (Phase 11) |
|
||||
| `MAIL_SMTP_USER` | — | SMTP 인증 계정 (Phase 11) |
|
||||
| `MAIL_SMTP_PASSWORD` | — | SMTP 인증 비밀번호 (Phase 11) |
|
||||
| `MAIL_SEND_ENABLED` | — | `true` \| `false` 발송 활성화 (Phase 11) |
|
||||
|
||||
## 배포 (Synology NAS Docker)
|
||||
|
||||
```bash
|
||||
# 이미지 빌드 및 컨테이너 시작
|
||||
docker compose up -d --build
|
||||
```
|
||||
|
||||
`docker-compose.yml`의 `environment` 섹션에 위 환경변수를 설정한다. 상세 절차는 [`docs/deployment.md`](docs/deployment.md)를 참고한다.
|
||||
|
||||
## 프로젝트 구조
|
||||
|
||||
```
|
||||
chocoadmin/
|
||||
├── app/
|
||||
│ ├── (auth)/login/ # 관리자 로그인
|
||||
│ ├── (admin)/ # 인증 필요 화면
|
||||
│ │ ├── maestros/ # 마에스트로 목록·상세
|
||||
│ │ ├── extension-requests/
|
||||
│ │ └── upgrade-requests/
|
||||
│ └── api/ # API routes
|
||||
├── components/
|
||||
│ ├── data-table/ # TanStack Table 기반 테이블
|
||||
│ ├── forms/
|
||||
│ └── ui/ # shadcn/ui 컴포넌트
|
||||
├── lib/
|
||||
│ ├── db.ts # Prisma Client 싱글톤
|
||||
│ ├── constants.ts # 상태값 상수
|
||||
│ ├── maestros.ts # 마에스트로 DB 쿼리
|
||||
│ ├── extension-requests.ts
|
||||
│ └── upgrade-requests.ts
|
||||
├── prisma/
|
||||
│ └── schema.prisma # DB introspection 결과
|
||||
├── docs/
|
||||
│ ├── business-rules.md # 기존 서비스 비즈니스 규칙 조사
|
||||
│ ├── deployment.md
|
||||
│ └── plan/project-plan.md # 전체 개발 계획
|
||||
├── auth.ts # NextAuth 설정
|
||||
├── proxy.ts # 미인증 접근 차단 미들웨어
|
||||
└── .env.example
|
||||
```
|
||||
|
||||
## 문서
|
||||
|
||||
- [`docs/plan/project-plan.md`](docs/plan/project-plan.md) — 전체 개발 단계 계획
|
||||
- [`docs/business-rules.md`](docs/business-rules.md) — 기존 chocomae 비즈니스 규칙
|
||||
- [`docs/deployment.md`](docs/deployment.md) — NAS 배포 절차
|
||||
|
||||
Reference in New Issue
Block a user