Next.js와 React 기반의 현대적인 회원 관리 애플리케이션입니다.
- ✅ 실시간 이름/이메일 중복 체크
- ✅ 비밀번호 재입력 확인
- ✅ 다음 우편번호 API를 사용한 주소 검색
- ✅ 폼 유효성 검사
- ✅ ID, 이름, 이메일, 가입일 조회
- ✅ 페이징 처리 (페이지당 5건)
- ✅ 이전/다음 페이지 네비게이션
- ✅ 프로필 정보 수정
- ✅ 비밀번호 변경 (선택사항)
- ✅ 주소 정보 업데이트
- ✅ Next-Auth를 사용한 세션 관리
- ✅ 로그인/로그아웃 기능
- ✅ 보안된 페이지 접근 제어
- Frontend: Next.js 14, React 18, TypeScript
- UI: Tailwind CSS, shadcn/ui
- Database: MariaDB
- ORM: Drizzle ORM
- Authentication: Next-Auth v5
- Form Handling: React Hook Form
- Validation: Zod
npm install.env.local 파일을 생성하고 다음 내용을 추가하세요:
# MariaDB Database
DATABASE_URL="mysql://root:1111@localhost:3306/redfin"
# NextAuth
AUTH_SECRET="your-super-secret-auth-secret"MariaDB가 실행 중인지 확인하고, redfin 데이터베이스를 생성하세요:
CREATE DATABASE redfin;npm run db:pushnpm run dev애플리케이션이 http://localhost:3000에서 실행됩니다.
├── app/ # Next.js App Router
│ ├── api/ # API 라우트
│ │ ├── auth/ # 인증 관련 API
│ │ ├── check-duplicate/ # 중복 체크 API
│ │ ├── members/ # 회원 목록 API
│ │ ├── profile/ # 프로필 API
│ │ └── signup/ # 회원가입 API
│ ├── login/ # 로그인 페이지
│ ├── members/ # 회원 목록 페이지
│ ├── profile/ # 프로필 수정 페이지
│ └── signup/ # 회원가입 페이지
├── components/ # 재사용 가능한 컴포넌트
│ └── ui/ # UI 컴포넌트 (shadcn/ui)
├── lib/ # 유틸리티 및 설정
│ ├── actions/ # 서버 액션
│ └── db/ # 데이터베이스 설정 및 스키마
└── drizzle.config.ts # Drizzle ORM 설정
id: 고유 식별자 (UUID)name: 사용자 이름email: 이메일 주소 (고유)password: 해시된 비밀번호address: 주소postalCode: 우편번호createdAt: 등록일시updatedAt: 수정일시createdBy: 만든사람updatedBy: 수정한사람
- redfin 데이터베이스
- member 테이블: 사용자 정보
- accounts 테이블: NextAuth 외부 얰결 계정
- sessions 테이블: NextAuth 세션
- verification_tokens 테이블: NextAuth 인증 토큰
- 비밀번호 해싱 (bcrypt)
- CSRF 보호
- 세션 기반 인증
- 입력 데이터 검증
모든 페이지는 반응형으로 설계되어 다양한 화면 크기에서 최적화된 사용자 경험을 제공합니다.
- 깔끔하고 현대적인 디자인
- 실시간 피드백 (중복 체크, 폼 검증)
- 사용자 친화적인 오류 메시지
- 로딩 상태 표시
GET /api/check-duplicate: 이름/이메일 중복 체크POST /api/signup: 회원가입GET /api/members: 회원 목록 조회 (페이징)GET /api/profile/[id]: 프로필 정보 조회PUT /api/profile/[id]: 프로필 정보 수정
프로덕션 환경에 배포하기 전에:
- 환경 변수를 프로덕션 값으로 설정
- 데이터베이스 연결 정보 확인
- Next.js 빌드 실행:
npm run build npm start
이 프로젝트는 MIT 라이선스 하에 있습니다.