diff --git a/README.md b/README.md
index a75ac524..a28f6e0b 100644
--- a/README.md
+++ b/README.md
@@ -1,40 +1,212 @@
-This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).
+
-## Getting Started
+## **π λͺ©μ°¨**
-First, run the development server:
+> ***[νλ‘μ νΈ μκ°](#νλ‘μ νΈ-μκ°)***
+>
+> ***[κ°λ° κΈ°κ°](#κ°λ°-κΈ°κ°)***
+>
+> ***[κ°λ°μ μκ°](#κ°λ°μ-μκ°)***
+>
+> ***[μμΈ κ³ν](#μμΈ-κ³ν)***
+>
+> ***[User Flow](#User-Flow)***
+>
+> ***[νλ‘μ νΈ κ΅¬μ‘°](#νλ‘μ νΈ-ꡬ쑰)***
+>
+> ***[κ°λ° νκ²½](#κ°λ°-νκ²½)***
+>
+> ***[κΈ°μ μ€ν](#κΈ°μ -μ€ν)***
+>
+> ***[μ£Όμ κΈ°λ₯](#μ£Όμ-κΈ°λ₯)***
+>
+> ***[λ°°ν¬ λ° μ€ν λ°©λ²](#λ°°ν¬-λ°-μ€ν-λ°©λ²)***
+>
+
+
+
+## π§βπ» νλ‘μ νΈ μκ°
+
+μ΄ νλ‘μ νΈλΒ [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app) μΌλ‘ μμλ [Next.js](https://nextjs.org/) νλ‘μ νΈμ
λλ€.
+
+Coworkersλ νμ ꡬμ±ν΄μ ν μΌμ λ§λ€κ³ , 곡μ νκ³ μν΅νλ©΄μ μ
무λ₯Ό ν¨μ¨μ μΌλ‘ ν μ μκ² λλ μλΉμ€μ
λλ€.
+
+
+
+## πΒ λ§ν¬
+
+[GitHub](https://github.com/team-collabor/coworkers)
+
+[π¬ μμ° μμ](https://www.youtube.com/watch?v=sF21zWhRcss)
+
+[π λ°°ν¬ μ¬μ΄νΈ](https://coworkers-colla.netlify.app)
+
+
+
+## π¨βπ« μ£Όμ κΈ°λ₯
+
+||||
+|:---:|:---:|:---:|
+|**λλ© νμ΄μ§**|**ν νμ΄μ§**|**ν μΌ νμ΄μ§**|
+
+||||
+|:---:|:---:|:---:|
+|**μμ κ²μν**|**κ³μ μ€μ νμ΄μ§**|**λ§μ΄ νμ€ν 리 νμ΄μ§**|
+
+
+
+## ποΈ κ°λ° κΈ°κ°
+
+***10 / 7 (λͺ©) ~ 11 / 14 (λͺ©)***
+
+
+
+## **π¨βπ¨βπ¦βπ¦Β κ°λ°μ μκ°**
+
+- **κΉμ°μ±** [@me92years](https://github.com/me92years) : λ§μ΄ νμ€ν 리 νμ΄μ§
+- **μ΄μΉν**Β [@leesh7048](https://github.com/leesh7048) : μμ κ²μν νμ΄μ§
+- **μ₯μΉν** [@SeungHyunOK](https://github.com/SeungHyunOK) : λ λ©νμ΄μ§ λ° κ³μ μ€μ νμ΄μ§
+- **μ μμ**Β [@wonsik3686](https://github.com/wonsik3686) : ν μΌ νμ΄μ§
+- **μ μΈμ¬**Β [@Injaeeee](https://github.com/Injaeeee?pvs=4,)Β : ν νμ΄μ§
+
+
+
+## π μμΈ κ³νκ³Ό μΌμ
+
+[**π μμΈ κ³ν**](https://www.notion.so/wonsik/11309277475d81549fe7ebf0e04dae7d,)
+
+[**π μμΈ μΌμ **](https://www.notion.so/wonsik/11309277475d810db53ec53c248f89d7,)
+
+
+
+## π‘ User Flow
+
+
+
+
+
+## π νλ‘μ νΈ κ΅¬μ‘°
-```bash
-npm run dev
-# or
-yarn dev
-# or
-pnpm dev
-# or
-bun dev
```
+πwine/
+β
+βββ πpublic/
+β βββ πimages/ # μ΄λ―Έμ§ νμΌ ν΄λ
+β βββ πic_wine.svg ...
+β
+βββ πconstants/
+β βββ πauth/
+β βββ mediaQueryBreakPoint.ts
+β
+βββ πsrc/
+β βββ πcomponents/ # μ¬μ¬μ© κ°λ₯ν μ»΄ν¬λνΈ
+β βββ πcommon/ # κ³΅ν΅ μ»΄ν¬λνΈ
+β βββ πButton/
+β β βββ Button.tsx
+β βββ πToast/
+β βββ Toast.tsx
+β
+βββ πpages/ # Next.js page λΌμ°ν
+β β βββ πsignin/
+β β βββ index.tsx
+β β βββ πsignup/
+β β βββ index.tsx
+β β βββ π[id]/ # ν νμ΄μ§μ λ€μ΄κ° μ»΄ν¬λνΈ λͺ¨μ
+β β β βββ πeditteam/
+β β β β βββ index.tsx
+β β βββ index.tsx
+β β βββ index.tsx
+β β βββ _app.tsx
+β β βββ _404.tsx
+β β
+β βββ πlibs/ # λΌμ΄λΈλ¬λ¦¬ κ΄λ ¨λ μΈν
λ° ν¨μλ€ μ 리νλ ν΄λ
+β β βββ πaxios/ # axios κ΄λ ¨ μΈν
λ° api μμ² ν¨μ
+β β βββ axiosInstance.ts
+β β βββ πauth/
+β β βββ πimage/
+β β βββ πreview/
+β β βββ πuser/
+β β βββ πwine/
+β β
+β βββ πcontexts/ # μ μ μν κ΄λ¦¬
+β β
+β βββ πhooks/ # 컀μ€ν
React ν
+β β
+β βββ πtypes/ # νμ
ν΄λ (DTO νΉμ μ μμ μΌλ‘ μ¬μ©λλ type 미리 μ μ)
+β β # μ»΄ν¬λνΈ propsμ κ²½μ°μλ ν΄λΉ μ»΄ν¬λνΈ μμΉμ μ μ
+β β
+β βββ πstyles/ # μ€νμΌ κ΄λ ¨ νμΌ λͺ¨μ
+β β βββ global.css
+β β
+β β
+β βββ πutils/ # μ νΈλ¦¬ν° ν΄λ
+β
+ββ .gitignore
+ββ .env.local # κ°μ νκ²½μμ λ³λ μμ± νμ
+ββ .eslintrc.json
+ββ .prettierrc.json
+ββ next.confing.mjs
+ββ tailwind.config.ts
+ββ tsconfig.json
+β
+...μλ΅
+
+```
+
+
+
+## π» κ°λ° νκ²½
+
+|OS|IDE|Version Control|Package Manager|deploy|Community|
+|:---:|:---:|:---:|:---:|:---:|:---:|
+| | | ||||
+
+
+
+## β κΈ°μ μ€ν
+
+
+
+
+
+
+
+
+
+## π λ°°ν¬ λ° μ€ν λ°©λ²
+
+**1. νλ‘μ νΈ ν΄λ‘ **
+
+`git clone https://github.com/Codeit-FE08-Part3-Team6/wine.git cd wine](https://github.com/team-collabor/coworkers.git`
+
+**2. μμ‘΄μ± μ€μΉ**
+
+νλ‘μ νΈμμ μ¬μ©νλ ν¨ν€μ§λ€μ μ€μΉν©λλ€.
+
+`npm install`
+
+**3. κ°λ° μλ² μ€ν**
-Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
+λ€μ λͺ
λ Ήμ΄λ₯Ό μ€ννμ¬ λ‘컬 κ°λ° νκ²½μμ νλ‘μ νΈλ₯Ό μ€νν μ μμ΅λλ€.
-You can start editing the page by modifying `pages/index.tsx`. The page auto-updates as you edit the file.
+`npm run dev`
-[API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.ts`.
+μ΄ν λΈλΌμ°μ μμΒ [http://localhost:3000](http://localhost:3000/)Β μΌλ‘ μ μνμ¬ κ°λ° μ€μΈ μΉ μ ν리μΌμ΄μ
μ νμΈν μ μμ΅λλ€.
-The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages.
+**4. λΉλ λ° λ°°ν¬**
-This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font.
+νλ‘λμ
νκ²½μμ μ¬μ©νκΈ° μν΄ λΉλν λλ μλ λͺ
λ Ήμ΄λ₯Ό μ¬μ©ν©λλ€.
-## Learn More
+`npm run build`
-To learn more about Next.js, take a look at the following resources:
+κ·Έ ν, μλ λͺ
λ Ήμ΄λ‘ λΉλλ νμΌμ μ€μ λ‘ μ€νν©λλ€.
-- [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.
+`npm start`
-You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!
+**5. λ°°ν¬**
-## Deploy on Vercel
+μ΄ νλ‘μ νΈλ netlifyμ μ¬μ©νμ¬ λ°°ν¬ν μ μμ΅λλ€.
-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.
+GitHubμ μ°λλ netlify κ³μ μ ν΅ν΄ μλμΌλ‘ λ°°ν¬λλ©°, μ½λλ₯Ό pushνλ©΄ μλμΌλ‘ λ°°ν¬ νλ‘μΈμ€κ° μ§νλ©λλ€.
-Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
+[**λ°°ν¬ μ¬μ΄νΈ**](https://wine-nine-xi.vercel.app/?pvs=4%5D(https://coworkers-colla.netlify.app/,)
diff --git a/src/constants/formSchemas/teamSchema.ts b/src/constants/formSchemas/teamSchema.ts
new file mode 100644
index 00000000..5112508b
--- /dev/null
+++ b/src/constants/formSchemas/teamSchema.ts
@@ -0,0 +1,14 @@
+import { PostGroupRequest } from '@/types/dto/requests/group.request.types';
+import { z } from 'zod';
+
+export const teamSchema: z.ZodSchema = z.object({
+ name: z
+ .string()
+ .min(1, { message: 'ν μ΄λ¦μ νμ μ
λ ₯μ
λλ€.' })
+ .max(30, { message: 'ν μ΄λ¦μ 30κΈμ μ΄νλ‘ μ
λ ₯ν΄μ£ΌμΈμ.' }),
+ image: z.string().min(1),
+});
+
+export const attendTeamSchema = z.object({
+ link: z.string().min(1, { message: 'ν λ§ν¬λ₯Ό μ
λ ₯ν΄μ£ΌμΈμ.' }),
+});
diff --git a/src/pages/[id]/editteam/index.tsx b/src/pages/[id]/editteam/index.tsx
index 9db7b29d..432e351a 100644
--- a/src/pages/[id]/editteam/index.tsx
+++ b/src/pages/[id]/editteam/index.tsx
@@ -10,6 +10,7 @@ import Button, {
} from '@/components/common/Button/Button';
import Input from '@/components/common/Input';
import ProfileInput from '@/components/Team/ProfileInput';
+import { teamSchema } from '@/constants/formSchemas/teamSchema';
import { useToast } from '@/hooks/useToast';
import { usePatchTeamMutation, useTeamQuery } from '@/queries/groups.queries';
import { groupsQueryKeys } from '@/queries/keys/groups.key';
@@ -24,15 +25,6 @@ import Head from 'next/head';
import { useRouter } from 'next/router';
import { useEffect, useState } from 'react';
import { useForm } from 'react-hook-form';
-import { z } from 'zod';
-
-const teamSchema: z.ZodSchema = z.object({
- name: z
- .string()
- .min(1, { message: 'ν μ΄λ¦μ νμ μ
λ ₯μ
λλ€.' })
- .max(30, { message: 'ν μ΄λ¦μ 30κΈμ μ΄νλ‘ μ
λ ₯ν΄μ£ΌμΈμ.' }),
- image: z.string().min(1),
-});
export default function EditTeam() {
const router = useRouter();
diff --git a/src/pages/addteam/index.tsx b/src/pages/addteam/index.tsx
index 1e17cc45..e7a071f4 100644
--- a/src/pages/addteam/index.tsx
+++ b/src/pages/addteam/index.tsx
@@ -9,6 +9,7 @@ import Button, {
} from '@/components/common/Button/Button';
import Input from '@/components/common/Input';
import ProfileInput from '@/components/Team/ProfileInput';
+import { teamSchema } from '@/constants/formSchemas/teamSchema';
import { useRedirect } from '@/hooks/useRedirect';
import { useTeamMutation } from '@/queries/groups.queries';
import { useUploadImageMutation } from '@/queries/uploadImage.query';
@@ -18,15 +19,6 @@ import Head from 'next/head';
import { useRouter } from 'next/router';
import { useState } from 'react';
import { useForm } from 'react-hook-form';
-import { z } from 'zod';
-
-const teamSchema: z.ZodSchema = z.object({
- name: z.string().min(1, { message: 'ν μ΄λ¦μ νμ μ
λ ₯μ
λλ€.' }),
- image: z
- .string()
- .min(1)
- .refine((val) => val !== '/icons/BaseTeam_Icon.svg'),
-});
export default function AddTeam() {
const [selectImage, setSelectImage] = useState(null);
diff --git a/src/pages/attendteam/index.tsx b/src/pages/attendteam/index.tsx
index f2b8b47f..0d4002bd 100644
--- a/src/pages/attendteam/index.tsx
+++ b/src/pages/attendteam/index.tsx
@@ -8,6 +8,7 @@ import Button, {
TextSize,
} from '@/components/common/Button/Button';
import Input from '@/components/common/Input';
+import { attendTeamSchema } from '@/constants/formSchemas/teamSchema';
import { useRedirect } from '@/hooks/useRedirect';
import { useToast } from '@/hooks/useToast';
import { useInviteGroupMutation } from '@/queries/groups.queries';
@@ -18,11 +19,7 @@ import { useRouter } from 'next/router';
import { useForm } from 'react-hook-form';
import { z } from 'zod';
-const teamSchema = z.object({
- link: z.string().min(1, { message: 'ν λ§ν¬λ₯Ό μ
λ ₯ν΄μ£ΌμΈμ.' }),
-});
-
-type TeamLinkValues = z.infer;
+type TeamLinkValues = z.infer;
export default function AttendTeam() {
const router = useRouter();
@@ -36,7 +33,7 @@ export default function AttendTeam() {
handleSubmit,
formState: { errors },
} = useForm({
- resolver: zodResolver(teamSchema),
+ resolver: zodResolver(attendTeamSchema),
defaultValues: {
link: '',
},