프로젝트명 변경: choco-admin -> chocoadmin
This commit is contained in:
@@ -34,7 +34,7 @@ export default async function AdminLayout({
|
||||
<aside className="fixed inset-y-0 left-0 hidden w-64 border-r bg-background md:block">
|
||||
<div className="flex h-16 items-center border-b px-5">
|
||||
<Link className="text-lg font-semibold" href="/">
|
||||
choco-admin
|
||||
chocoadmin
|
||||
</Link>
|
||||
</div>
|
||||
<nav className="space-y-1 p-3">
|
||||
|
||||
@@ -27,9 +27,7 @@ export default async function LoginPage({ searchParams }: LoginPageProps) {
|
||||
<main className="flex min-h-screen items-center justify-center bg-muted px-6 py-10">
|
||||
<section className="w-full max-w-md rounded-lg border bg-background p-8 shadow-sm">
|
||||
<div className="mb-8">
|
||||
<h1 className="text-2xl font-semibold tracking-normal">
|
||||
choco-admin
|
||||
</h1>
|
||||
<h1 className="text-2xl font-semibold tracking-normal">chocoadmin</h1>
|
||||
<p className="mt-2 text-sm text-muted-foreground">관리자 로그인</p>
|
||||
</div>
|
||||
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ import type { Metadata } from "next";
|
||||
import "./globals.css";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "choco-admin",
|
||||
title: "chocoadmin",
|
||||
description: "Chocomae admin service",
|
||||
};
|
||||
|
||||
|
||||
+3
-3
@@ -1,10 +1,10 @@
|
||||
services:
|
||||
choco-admin:
|
||||
chocoadmin:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
image: choco-admin:latest
|
||||
container_name: choco-admin
|
||||
image: chocoadmin:latest
|
||||
container_name: chocoadmin
|
||||
ports:
|
||||
- "3001:3000"
|
||||
env_file:
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## 1. 개요
|
||||
|
||||
이 문서는 기존 `mouse-typing` 관리자 기능을 조사해 신규 `choco-admin`에서 재현해야 할 비즈니스 규칙을 정리한 것이다.
|
||||
이 문서는 기존 `mouse-typing` 관리자 기능을 조사해 신규 `chocoadmin`에서 재현해야 할 비즈니스 규칙을 정리한 것이다.
|
||||
|
||||
조사 대상:
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
## 2. 기존 관리자 파일 맵
|
||||
|
||||
| 기존 화면 | 서버 파일 | 역할 | 신규 `choco-admin` 매핑 |
|
||||
| 기존 화면 | 서버 파일 | 역할 | 신규 `chocoadmin` 매핑 |
|
||||
|---|---|---|---|
|
||||
| `admin/login.html` | `server/admin/login.php` | 관리자 로그인 | `/login`, NextAuth Credentials Provider |
|
||||
| `admin/admin_all_list.html` | `server/admin/maestro_all_list.php` | 전체 마에스트로 목록 조회 | `/maestros`, `GET /api/maestros` |
|
||||
@@ -331,7 +331,7 @@ VALUES (?, ?, NOW(), ?)
|
||||
- 로그 시간은 DB 서버의 `NOW()`를 사용한다.
|
||||
- `Remark` 컬럼은 `char(100)`이므로 신규 구현에서도 길이 초과에 주의한다.
|
||||
|
||||
## 11. 신규 `choco-admin` 구현 시 반드시 지켜야 할 규칙
|
||||
## 11. 신규 `chocoadmin` 구현 시 반드시 지켜야 할 규칙
|
||||
|
||||
- 운영 DB 스키마는 변경하지 않는다.
|
||||
- 관리자 로그인은 기존 `admin.Name`과 `admin.Password = PASSWORD(?)` 호환 검증을 지원한다.
|
||||
|
||||
+4
-4
@@ -1,4 +1,4 @@
|
||||
# choco-admin Deployment
|
||||
# chocoadmin Deployment
|
||||
|
||||
## 1. Production Environment
|
||||
|
||||
@@ -45,7 +45,7 @@ Allow MariaDB only from the Synology NAS public IP.
|
||||
- Protocol: `TCP`
|
||||
- Port: `3306`
|
||||
- Source: `NAS_PUBLIC_IP/32`
|
||||
- Description: `choco-admin Synology NAS`
|
||||
- Description: `chocoadmin Synology NAS`
|
||||
|
||||
Do not open `3306` to `0.0.0.0/0`.
|
||||
|
||||
@@ -57,7 +57,7 @@ Before enabling approval/rejection operations against production DB:
|
||||
2. Set `DATABASE_URL` in `.env.production` to that read-only account.
|
||||
3. Start the container.
|
||||
4. Verify login, maestro list, extension request list, and upgrade request list.
|
||||
5. Switch to the production write-capable choco-admin DB account only after read screens work.
|
||||
5. Switch to the production write-capable chocoadmin DB account only after read screens work.
|
||||
|
||||
## 5. Smoke Checks
|
||||
|
||||
@@ -65,7 +65,7 @@ After container start:
|
||||
|
||||
```bash
|
||||
docker compose ps
|
||||
docker compose logs -f choco-admin
|
||||
docker compose logs -f chocoadmin
|
||||
```
|
||||
|
||||
Verify these routes in the browser:
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
`docs/plan/project-plan.md`의 `9. 개발 단계 계획 > Phase 0. 기존 관리자 코드 조사`를 수행하기 위한 실행 계획이다.
|
||||
|
||||
Phase 0의 목표는 기존 `mouse-typing` 관리자 기능의 비즈니스 규칙을 확인하고, 신규 `choco-admin`에서 동일하게 재현해야 할 규칙을 `docs/business-rules.md`에 문서화하는 것이다.
|
||||
Phase 0의 목표는 기존 `mouse-typing` 관리자 기능의 비즈니스 규칙을 확인하고, 신규 `chocoadmin`에서 동일하게 재현해야 할 규칙을 `docs/business-rules.md`에 문서화하는 것이다.
|
||||
|
||||
## 2. 조사 대상
|
||||
|
||||
@@ -45,7 +45,7 @@ Phase 0의 목표는 기존 `mouse-typing` 관리자 기능의 비즈니스 규
|
||||
|
||||
- 관리자 화면별 HTML 파일과 서버 PHP 파일의 호출 관계를 확인한다.
|
||||
- 각 화면의 목록 조회 조건, 검색 조건, 정렬 기준, 상태 필터를 확인한다.
|
||||
- 신규 `choco-admin`의 화면/API 구조와 직접 매핑 가능한 기능 목록을 정리한다.
|
||||
- 신규 `chocoadmin`의 화면/API 구조와 직접 매핑 가능한 기능 목록을 정리한다.
|
||||
|
||||
산출물:
|
||||
|
||||
@@ -204,7 +204,7 @@ Phase 0의 목표는 기존 `mouse-typing` 관리자 기능의 비즈니스 규
|
||||
- 연장 신청 조회/승인/취소 규칙
|
||||
- 업그레이드 신청 조회/승인/거절 규칙
|
||||
- `maestro_log` 기록 규칙
|
||||
- 신규 `choco-admin` 구현 시 반드시 지켜야 할 규칙
|
||||
- 신규 `chocoadmin` 구현 시 반드시 지켜야 할 규칙
|
||||
- 기존 코드에는 없지만 신규 구현에서 보완할 사항
|
||||
|
||||
완료 기준:
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
# choco-admin 프로젝트 계획서
|
||||
# chocoadmin 프로젝트 계획서
|
||||
|
||||
## 1. 프로젝트 개요
|
||||
|
||||
| 항목 | 내용 |
|
||||
|---|---|
|
||||
| 서비스명 | choco-admin |
|
||||
| 서비스명 | chocoadmin |
|
||||
| 목적 | chocomae 웹 서비스(mouse-typing)의 관리자 기능을 독립 웹 서비스로 분리 |
|
||||
| 기존 서비스 경로 | `/Users/jisangs/work/jinaju/git/web/mouse-typing` |
|
||||
| 신규 서비스 경로 | `/Users/jisangs/work/jinaju/git/web/choco-admin` |
|
||||
| 신규 서비스 경로 | `/Users/jisangs/work/jinaju/git/web/chocoadmin` |
|
||||
| 사용 DB | 기존 chocomae DB (MariaDB 10.11.13) 그대로 사용 |
|
||||
|
||||
---
|
||||
@@ -111,7 +111,7 @@
|
||||
```yaml
|
||||
# docker-compose.yml (개발용)
|
||||
services:
|
||||
choco-admin:
|
||||
chocoadmin:
|
||||
build: .
|
||||
ports:
|
||||
- "3001:3000"
|
||||
@@ -296,7 +296,7 @@ app/
|
||||
## 9. 디렉토리 구조 (목표)
|
||||
|
||||
```
|
||||
choco-admin/
|
||||
chocoadmin/
|
||||
├── app/
|
||||
│ ├── (auth)/
|
||||
│ │ └── login/
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
# choco-admin 개발 작업 계획
|
||||
# chocoadmin 개발 작업 계획
|
||||
|
||||
## 1. 프로젝트 개요
|
||||
|
||||
`choco-admin`은 기존 `chocomae` 웹 서비스의 관리자 페이지와 관리자 기능만 독립 분리하는 신규 관리자 웹 서비스이다.
|
||||
`chocoadmin`은 기존 `chocomae` 웹 서비스의 관리자 페이지와 관리자 기능만 독립 분리하는 신규 관리자 웹 서비스이다.
|
||||
|
||||
- 기존 서비스명: `chocomae`
|
||||
- 기존 서비스 개발 디렉토리: `/Users/jisangs/work/jinaju/git/web/mouse-typing`
|
||||
- 신규 서비스명: `choco-admin`
|
||||
- 신규 서비스 개발 디렉토리: `/Users/jisangs/work/jinaju/git/web/choco-admin`
|
||||
- 신규 서비스명: `chocoadmin`
|
||||
- 신규 서비스 개발 디렉토리: `/Users/jisangs/work/jinaju/git/web/chocoadmin`
|
||||
- 개발 목표: 기존 `mouse-typing` 서비스의 관리자 기능을 Next.js 기반 독립 서비스로 재구성
|
||||
- 기존 운영 환경: AWS EC2 `t3a.medium` 인스턴스 1개
|
||||
- 신규 개발/운영 플랫폼: Synology NAS Docker
|
||||
@@ -56,7 +56,7 @@
|
||||
- 장점: Next.js와 궁합이 좋고, 관리자 화면에 필요한 버튼, 입력, 다이얼로그, 탭, 폼 구성이 빠름
|
||||
- 장점: 컴포넌트 코드를 프로젝트 안에서 직접 소유하므로 장기 유지보수에 유리함
|
||||
- 단점: Tailwind 클래스에 익숙해지는 시간이 필요함
|
||||
- 추천 이유: `choco-admin`처럼 작은 팀/개인 프로젝트에서 빠르게 만들고 나중에 고치기 좋음
|
||||
- 추천 이유: `chocoadmin`처럼 작은 팀/개인 프로젝트에서 빠르게 만들고 나중에 고치기 좋음
|
||||
|
||||
### 2순위: Mantine
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
- 장점: 서버 사이드 페이지네이션, 정렬, 필터링을 구현하기 좋음
|
||||
- 장점: shadcn/ui의 Data Table 패턴과 잘 맞음
|
||||
- 단점: 직접 조립해야 하는 부분이 있어 초기 구현량이 있음
|
||||
- 추천 이유: 관리자 기능이 늘어날 가능성이 높은 `choco-admin`에 가장 유연함
|
||||
- 추천 이유: 관리자 기능이 늘어날 가능성이 높은 `chocoadmin`에 가장 유연함
|
||||
|
||||
### 2순위: AG Grid Community
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
|
||||
## 6. DB 기준 관리자 대상 테이블
|
||||
|
||||
스키마 파일: `/Users/jisangs/work/jinaju/git/web/choco-admin/docs/db-reference/schema.sql`
|
||||
스키마 파일: `/Users/jisangs/work/jinaju/git/web/chocoadmin/docs/db-reference/schema.sql`
|
||||
|
||||
### 주요 테이블
|
||||
|
||||
@@ -269,7 +269,7 @@
|
||||
## 8. 애플리케이션 구조 제안
|
||||
|
||||
```text
|
||||
choco-admin/
|
||||
chocoadmin/
|
||||
app/
|
||||
login/
|
||||
maestros/
|
||||
@@ -313,7 +313,7 @@ choco-admin/
|
||||
|
||||
### 운영 환경
|
||||
|
||||
- Synology NAS Docker에서 `choco-admin` 컨테이너 실행
|
||||
- Synology NAS Docker에서 `chocoadmin` 컨테이너 실행
|
||||
- 운영 DB는 기존 AWS EC2 MariaDB에 접속
|
||||
- AWS 보안 그룹에서 Synology NAS 공인 IP만 MariaDB 접속 허용
|
||||
- DB 계정은 관리자 서비스 전용 계정으로 분리
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
# choco-admin 프로젝트 계획서
|
||||
# chocoadmin 프로젝트 계획서
|
||||
|
||||
## 1. 프로젝트 개요
|
||||
|
||||
| 항목 | 내용 |
|
||||
|---|---|
|
||||
| 서비스명 | choco-admin |
|
||||
| 서비스명 | chocoadmin |
|
||||
| 목적 | chocomae 웹 서비스(mouse-typing)의 관리자 기능을 독립 웹 서비스로 분리 |
|
||||
| 기존 서비스 경로 | `/Users/jisangs/work/jinaju/git/web/mouse-typing` |
|
||||
| 신규 서비스 경로 | `/Users/jisangs/work/jinaju/git/web/choco-admin` |
|
||||
| 신규 서비스 경로 | `/Users/jisangs/work/jinaju/git/web/chocoadmin` |
|
||||
| 기존 운영 환경 | AWS EC2 t3a.medium 인스턴스 1개 |
|
||||
| 사용 DB | 기존 chocomae DB (MariaDB 10.11.13) 그대로 사용 |
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
| 실행 방법 | Synology Container Manager (`docker compose up`) |
|
||||
| DB (서비스) | AWS EC2 MariaDB (chocomae 서비스와 동일 인스턴스) |
|
||||
| DB 접근 | AWS 보안그룹에서 NAS 외부 IP만 3306 포트 허용 |
|
||||
| DB 계정 | choco-admin 전용 최소 권한 계정으로 분리 |
|
||||
| DB 계정 | chocoadmin 전용 최소 권한 계정으로 분리 |
|
||||
| 환경변수 | `.env.production` 또는 Container Manager 환경변수 설정 |
|
||||
|
||||
### 4-3. Dockerfile / docker-compose (배포용)
|
||||
@@ -90,7 +90,7 @@ CMD ["pnpm", "start"]
|
||||
```yaml
|
||||
# docker-compose.yml
|
||||
services:
|
||||
choco-admin:
|
||||
chocoadmin:
|
||||
build: .
|
||||
ports:
|
||||
- "3001:3000"
|
||||
@@ -151,7 +151,7 @@ services:
|
||||
## 6. 애플리케이션 구조
|
||||
|
||||
```
|
||||
choco-admin/
|
||||
chocoadmin/
|
||||
├── app/
|
||||
│ ├── (auth)/
|
||||
│ │ └── login/
|
||||
@@ -277,7 +277,7 @@ choco-admin/
|
||||
2. 기존 `admin.Password` 저장 방식(평문/해시/자체 암호화)을 먼저 확인한 뒤 동일 방식 또는 해시 업그레이드를 결정한다.
|
||||
3. 승인·취소·거절 액션은 Next.js Server Action 또는 API Route에서 CSRF 보호를 적용한다.
|
||||
4. DB 연결 정보는 `.env` 파일로 관리하며 Git에 커밋하지 않는다.
|
||||
5. 배포 DB 계정은 choco-admin 전용 계정으로 분리하고 최소 권한(SELECT + 필요한 테이블만 UPDATE)을 적용한다.
|
||||
5. 배포 DB 계정은 chocoadmin 전용 계정으로 분리하고 최소 권한(SELECT + 필요한 테이블만 UPDATE)을 적용한다.
|
||||
6. AWS EC2 보안그룹에서 MariaDB 포트(3306)를 NAS 외부 IP로만 허용한다.
|
||||
7. 관리자 전용 서비스이므로 외부에 직접 노출하지 않고 VPN 또는 NAS 내부 포트로 접근하는 방식을 권장한다.
|
||||
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "choco-admin",
|
||||
"name": "chocoadmin",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"packageManager": "pnpm@10.29.3",
|
||||
|
||||
Reference in New Issue
Block a user