Meerkit
Meerkit
HomeDocsComponentsAPI
GitHub

Getting Started

5
IntroductionInstallationProject StructureThemingDeployment

CLI

6
CLI Overviewinit & setupstart, stop & openstatus, check, env & logsdbadd, test & update

Core Concepts

5
AuthenticationRoles & PermissionsData ModelLogin LockoutSecurity

Guides

3
Protect a pageAdd a roleCall your own API

Components

24

사용자 화면12

Login FormSignup FormEmail VerificationTerms AgreementGoogle LoginPassword ResetProfile & PasswordNicknameAuth DialogProfile ImageUser AvatarUser Menu

관리자 화면6

Member TableMember DirectoryMember AI UsageMember AI Usage HistoryRole ManagerRole Select

공통5

Address FieldFile DropzoneLoadingDateRoute Guards

AI Components

4
AI Prompt InputThinking IndicatorAPI Key InputVoice

API

6
OverviewHealthAuthUsers · 내 정보Users · 관리자LLM

Reference

2
Hooks & StateFAQ

Signup Form

사용자용 컴포넌트서비스를 쓰는 일반 사용자가 보는 화면에 쓰입니다.

아이디, 이름, 이메일, 비밀번호를 받는 가입 폼입니다.

shadcn/ui · Inputshadcn/ui · Labelshadcn/ui · Button

아이디, 이름, 이메일, 비밀번호를 받는 가입 폼입니다. 이 네 가지는 항상 필수이고, 비밀번호 확인과 주소·전화번호·생년월일 같은 항목은 설정으로 켜고 끌 수 있습니다.

Preview

아래 버튼으로 항목을 켜 보세요. 폼이 부드럽게 늘어납니다.

영문으로 시작, 숫자·밑줄(_) 함께 사용 가능, 4~30자

약관 동의
보기
보기
tsx
<SignupForm
  onSubmit={(input) => signup.mutate(input)}
  pending={signup.isPending}
  passwordConfirm={false}
  optionalFields={[]}
  addressType="basic"
  terms={terms}
/>

Required fields

가입에 꼭 필요한 기본 항목입니다. 설정으로 끌 수 없습니다.

필드라벨필수 여부검증
user_id아이디필수공백 제거 후 전달. 중복은 서버가 확인
name이름필수공백 제거 후 전달
email이메일필수이메일 형식이 아니면 오류 표시
password비밀번호필수8자 미만이면 오류 표시
역할 필드는 없습니다. 가입한 사용자의 기본 역할은 서버가 부여합니다.

Optional fields

필요한 서비스만 골라 쓰는 선택 항목입니다. 켜면 라벨 옆에 (선택)이 붙고, 값을 비워 두면 서버로 보내지 않습니다. 아래는 샘플이며, 직접 만든 항목도 같은 방식으로 추가할 수 있습니다.

필드라벨필수 여부입력 타입DB 컬럼 예시
nickname닉네임선택textVARCHAR(30)
phone전화번호선택telVARCHAR(20)
address주소 (검색 버튼 + 상세 주소)선택addressaddress, address_detail (+ postcode)
birth_date생년월일선택dateDATE
gender성별선택radioVARCHAR(10)
선택 항목을 켜려면 백엔드의 users 테이블과 가입 스키마에도 같은 컬럼이 있어야 합니다. 프론트만 켜면 서버가 알 수 없는 필드로 거절할 수 있습니다.

Enable with config

폼을 직접 고치지 않고 meerkit.config.ts에서 켭니다. AuthDialog가 이 값을 그대로 폼에 넘깁니다.

meerkit.config.ts
export default defineMeerkitConfig({
  signup: {
    passwordConfirm: true,
    optionalFields: ["nickname", "phone", "address", "birth_date", "gender"],
    addressType: "postcode",   // "basic" | "postcode"  (Address Field 참고)
    emailVerification: true,   // 이메일 인증 (Email Verification 참고)
    // 약관 동의는 Terms Agreement 페이지를 보세요
  },
});

Terms agreement

약관 동의 영역이 폼 아래에 붙습니다. 약관 목록은 signup.terms로 정하고, 필수 약관에 동의하지 않으면 가입할 수 없습니다.체크한 약관의 id 목록이 agreed_terms로 서버에 전달됩니다. 자세한 내용은 Terms Agreement 페이지를 보세요.

Password confirmation

  • 두 입력이 다르면 "비밀번호가 일치하지 않습니다."를 보여 주고 제출하지 않습니다.
  • password_confirm은 서버로 보내지 않습니다. 오타를 막는 클라이언트 전용 검사입니다.
  • 서버는 이 값을 몰라도 됩니다. 비밀번호 규칙은 서버가 따로 검사합니다.

Email verification

이메일 옆에 [인증번호 받기] 버튼을 붙이고 인증을 마쳐야 가입할 수 있게 합니다. 서비스마다 필요 여부가 다르므로 signup.emailVerification으로 켜고 끄며 기본은 꺼져 있습니다. 위 미리보기의 이메일 인증 버튼을 눌러 보세요 (인증번호는 123456). 자세한 흐름과 API는 Email Verification 페이지를 보세요.

Address

주소는 검색 버튼으로 고르면 우편번호와 주소가 함께 채워지는 전용 입력입니다. 검색은 카카오 우편번호 팝업(기본) 또는 결과 목록이 있는 검색 창 중에서 고릅니다. addressType으로 두 가지 방식을 고릅니다: A(basic) 주소 + 상세 주소, B(postcode) 우편번호 + 주소 + 상세 주소. 자세한 내용은 Address Field 페이지를 보세요.

Nickname

optionalFields에 "nickname"을 켜면 가입 때 닉네임(2~12자)을 받습니다. 입력칸 옆의 [자동 생성] 버튼으로 "용감한미어캣482" 같은 이름을 받아 쓸 수 있고,nickname.autoFill을 켜면 폼을 열 때 미리 채워 둡니다. 닉네임이 있는 사용자는 메뉴와 아바타에 이름 대신 닉네임이 보이며, 마이페이지에서 바꿀 수 있습니다. 닉네임 중복 검사는 서버가 합니다. 자세한 내용은 Nickname 페이지를 보세요.

Add your own field

샘플에 없는 항목은 폼 상태, 입력, 타입, 백엔드 스키마를 함께 바꿉니다.

types.ts
export interface SignupInput extends LoginInput {
  email: string;
  name: string;
  phone?: string;
  address?: string;
  birth_date?: string;
  company?: string; // 추가한 필드
}

Validation

  • 클라이언트 검사는 사용자 편의용입니다. 같은 규칙을 서버가 반드시 다시 검사합니다.
  • 아이디·이메일 중복은 서버만 알 수 있으므로, 서버 오류의 detail을 error로 전달해 표시합니다.
  • 비밀번호 최소 길이는 SignupForm.tsx의 한 줄(password.length < 8)에서 바꿉니다.

영문으로 시작, 숫자·밑줄(_) 함께 사용 가능, 4~30자

이미 사용 중인 아이디입니다.

Accessibility

  • 라벨과 입력이 연결되어 있고, autoComplete로 username, name, email, new-password, tel, bday 등을 지정했습니다.
  • 검증 오류는 role="alert"로 안내합니다.

Props

PropType설명
onSubmit필수(input: SignupInput) => void검증을 통과하면 입력값을 전달합니다. 켠 선택 항목 중 값이 있는 것만 포함됩니다.
pendingboolean요청 중 여부.
errorstring | null서버 오류 메시지. 클라이언트 검증 오류가 있으면 그것이 우선 표시됩니다.
passwordConfirmboolean비밀번호 확인 입력을 추가합니다. 서버로는 보내지 않습니다.
optionalFields("nickname" | "phone" | "address" | "birth_date" | "gender")[]추가로 받을 선택 항목. address는 검색 버튼 입력, gender는 라디오 버튼으로 나옵니다.
addressType"basic" | "postcode"주소 입력 방식. basic은 주소 + 상세, postcode는 우편번호 + 주소 + 상세.
emailVerification{ sendCode, verifyCode }주면 이메일 옆에 인증번호 받기·확인 버튼이 생기고 인증해야 가입할 수 있습니다.
checkUserId(userId: string) => Promise<boolean>주면 아이디 옆에 [중복 확인] 버튼이 생기고, 사용 가능 확인을 받아야 가입할 수 있습니다 (GET /auth/check-user-id). 아이디를 고치면 다시 확인합니다.
onSearchAddress() => Promise<{ postcode, address } | null>주소 검색 방법을 바꿉니다. 기본은 카카오 우편번호 팝업.
termsTermsItem[]동의받을 약관. 비어 있으면 약관 영역이 없습니다.

Related API

이 컴포넌트가 호출하는 API입니다. 누르면 요청·응답 명세로 이동합니다.

GET/api/auth/terms가입 때 동의받을 약관 (현재 버전)GET/api/auth/check-user-id아이디 사용 가능 여부POST/api/auth/email/send-code가입용 이메일 인증번호 발송 (같은 이메일 60초 간격, 하루 10회)POST/api/auth/email/verify-code인증번호 확인 → 가입에 붙일 증표 발급POST/api/auth/signup회원가입 (기본 역할 VIEWER, 필수 약관·이메일 인증 필요)
Login FormEmail Verification
© Meerkit. All rights reserved.GitHub