diff --git a/web/app/install/installForm.tsx b/web/app/install/installForm.tsx
index 631812613e..414bd9d6fd 100644
--- a/web/app/install/installForm.tsx
+++ b/web/app/install/installForm.tsx
@@ -1,73 +1,67 @@
'use client'
import React, { useEffect } from 'react'
import { useTranslation } from 'react-i18next'
+
import Link from 'next/link'
import { useRouter } from 'next/navigation'
-// import { useContext } from 'use-context-selector'
-import Toast from '../components/base/toast'
+
+import type { SubmitHandler } from 'react-hook-form'
+import { useForm } from 'react-hook-form'
+import { z } from 'zod'
+import { zodResolver } from '@hookform/resolvers/zod'
+import classNames from 'classnames'
import Loading from '../components/base/loading'
import Button from '@/app/components/base/button'
-// import I18n from '@/context/i18n'
import { fetchInitValidateStatus, fetchSetupStatus, setup } from '@/service/common'
import type { InitValidateStatusResponse, SetupStatusResponse } from '@/models/common'
-const validEmailReg = /^[\w\.-]+@([\w-]+\.)+[\w-]{2,}$/
const validPassword = /^(?=.*[a-zA-Z])(?=.*\d).{8,}$/
+const accountFormSchema = z.object({
+ email: z
+ .string()
+ .min(1, { message: 'login.error.emailInValid' })
+ .email('login.error.emailInValid'),
+ name: z.string().min(1, { message: 'login.error.nameEmpty' }),
+ password: z.string().min(8, {
+ message: 'login.error.passwordLengthInValid',
+ }).regex(validPassword, 'login.error.passwordInvalid'),
+})
+
+type AccountFormValues = z.infer