diff --git a/src/components/calendar/calendar.js b/src/components/calendar/calendar.js
index cbbfd12988a778f502f14e59a9e531c564a67a92..7fabe2528dcab0fbf08eebd8411451f707432654 100644
--- a/src/components/calendar/calendar.js
+++ b/src/components/calendar/calendar.js
@@ -3,7 +3,7 @@ import "@progress/kendo-theme-default/dist/all.css";
 import React, {useEffect, useState, useContext} from 'react';
 import '@progress/kendo-react-intl';
 import '@progress/kendo-react-scheduler';
-//import { AppContext } from '../../pages/main';
+import { AppContext } from '../../pages/main';
 import { Scheduler, WeekView, DayView, MonthView, SchedulerEditItem} from '@progress/kendo-react-scheduler';
 
 import calendar_styles from './calendar.module.css'
@@ -58,7 +58,7 @@ const MySchedulerApp = () => {
   const[scheduleListModalOpen, setScheduleListModalOpen]=useState(false);
   //const [isContent, setIsContent]=useState(' 상세 내용이 없습니다. ');
   const [date, setDate]=useState(defaultDate);
-  //const { setCount } = useContext(AppContext);
+  const { setCount } = useContext(AppContext);
   
 
   const openInModal=()=>{
@@ -115,7 +115,7 @@ const MySchedulerApp = () => {
           if(response.status===200){
             alert('중복된 일정이 존재합니다.');
           }
-          //setCount( prevNum=> (prevNum+1))
+          setCount( prevNum => (prevNum+1))
          
         })
         .then(data => {
diff --git a/src/components/recruit/createRecruit.js b/src/components/recruit/createRecruit.js
index 1d5e6aca6f1751c80d1b36a5b6f523ef6aaa5efd..295e89c62bd804cf3c6b900cef82eae403783464 100644
--- a/src/components/recruit/createRecruit.js
+++ b/src/components/recruit/createRecruit.js
@@ -53,14 +53,15 @@ function CreateRecruit({ isOpen, onClose }){
         }));
     };
 
-    const handleSave = () => {
+    const handleSave = (e) => {
+        e.preventDefault()
         if(formData.data.timeCategory === "D"){
             handleSubmit({
                 ...formData,
                 data: {
                     ...formData.data,
-                    startTime: `${timeData.startHour}:${timeData.startMinute}`,
-                    endTime: `${timeData.endHour}:${timeData.endMinute}`,
+                    startTime: `${timeData.startHour || '00'}:${timeData.startMinute || '00'}`,
+                    endTime: `${timeData.endHour || '00'}:${timeData.endMinute || '00'}`,
                 }
             });
         }else{
@@ -105,7 +106,12 @@ function CreateRecruit({ isOpen, onClose }){
                 return;
             }
         }
-        
+
+        if (formData.data.endTime < formData.data.startTime) {
+            alert('종료 시간은 시작 시간보다 늦어야 합니다.');
+            return;
+        }
+
         try {
             const jsonDataString = JSON.stringify(formData.data);
             const formDataToSend = new FormData();
diff --git a/src/components/recruit/modifyRecruit.js b/src/components/recruit/modifyRecruit.js
index ffdcc1f74ef4dc19a8de249037708ad5f7c8e842..a29b2bf5ac8db10e61cbac4cdbf96c3064e94d00 100644
--- a/src/components/recruit/modifyRecruit.js
+++ b/src/components/recruit/modifyRecruit.js
@@ -51,14 +51,15 @@ const ModifyRecruit=({isOpen, onClose, data})=>{
         }));
     };
 
-    const handleSave = () => {
+    const handleSave = (e) => {
+        e.preventDefault()
         if(formData.info.timeCategory === "D"){
             modifyInfo({
                 ...formData,
                 info: {
                     ...formData.info,
-                    startTime: `${timeData.startHour|| '00'}:${timeData.startMinute || '00'}`,
-                    endTime: `${timeData.endHour|| '00'}:${timeData.endMinute || '00'}`,
+                    startTime: `${timeData.startHour || '00'}:${timeData.startMinute || '00'}`,
+                    endTime: `${timeData.endHour || '00'}:${timeData.endMinute || '00'}`,
                 }
             });
         }else{
@@ -67,6 +68,44 @@ const ModifyRecruit=({isOpen, onClose, data})=>{
     };
 
     const modifyInfo = async (formData)=>{
+        if(formData.info.title === ''){
+            alert('제목을 입력해주세요.');
+            return;
+        } else if(formData.info.timeCategory === ''){
+            alert('시간 지정 여부를 선택해주세요.');
+            return;
+        } else if(formData.info.content === ''){
+            alert('내용을 입력해주세요.');
+            return;
+        } else if(formData.info.peopleNum === ''){
+            alert('모집 인원을 입력해주세요.');
+            return;
+        } else if(formData.info.startDate === ''){
+            alert('시작 날짜를 입력해주세요.');
+            return;
+        } else if(formData.info.endDate === ''){
+            alert('종료 날짜를 입력해주세요.');
+            return;
+        }
+
+        if(formData.info.timeCategory === "D"){
+            if(timeData.startHour === null || timeData.endHour === null || timeData.startMinute === null || timeData.endMinute === null){
+                alert('시간을 선택해주세요.');
+                return;
+            }
+        }
+
+        if (formData.info.endTime < formData.info.startTime) {
+            alert('종료 시간은 시작 시간보다 늦어야 합니다.');
+            return;
+        }
+
+        if (data.state === "Closed"){
+            if(formData.info.peopleNum < data.peopleNum){
+                alert('모집 완료시 이전 인원보다 적은 인원으로 변경할 수 없습니다.');
+                return;
+            }
+        }
         try{
             const jsonDataString = JSON.stringify(formData.info);
             const formDataToSend = new FormData();
diff --git a/src/components/recruit/recruitDetail.js b/src/components/recruit/recruitDetail.js
index 3cbc64d472d7a3180ad5afa9e42cd8df3b769242..f6f168c4f6c8de9cf1dd02d67dbeb8d3d135deae 100644
--- a/src/components/recruit/recruitDetail.js
+++ b/src/components/recruit/recruitDetail.js
@@ -154,7 +154,11 @@ const RecruitDetail = ({ isOpen, onClose, data }) => {
                     </div>
                   </div>
                   )}
+                  {data.state === "Recruiting" ? (
                   <button type="button" className={recruitDetailStyles.apply} onClick={applyInfo}>신청</button>
+                  ):(
+                  <button type="button" className={recruitDetailStyles.endApply} onClick={applyInfo} disabled>신청</button>
+                  )}
                 </div>
               </div>
             </div>
diff --git a/src/components/recruit/recruitDetail.module.css b/src/components/recruit/recruitDetail.module.css
index be8def3e55f61cba74557ae93617eaefe2c73d0e..254ed0764048ff63636d28270dab562f992b4a97 100644
--- a/src/components/recruit/recruitDetail.module.css
+++ b/src/components/recruit/recruitDetail.module.css
@@ -308,4 +308,21 @@
 
     background-color: #808DC2;
     color: #FFFFFF;
-}
\ No newline at end of file
+}
+
+.endApply{
+    display: flex; /* Flexbox를 사용하여 자식 요소들을 가로로 배열합니다. */
+    align-items: center; /* 세로 방향에서 가운데 정렬. */
+    justify-content: center;
+
+    width: 81px;
+    height: 40px;
+    margin-left: 10px;
+    border: none;
+
+    font-size: 22px;
+    font-weight: bolder;
+
+    background-color: #b5b9c5;
+    color: #FFFFFF;
+}   
\ No newline at end of file
diff --git a/src/components/recruit/stateRecruit.js b/src/components/recruit/stateRecruit.js
index 6f5c1b7c3854490a7f3ea84af87d8b9c9b7f9a0a..e2c12e7085105df871adfbd98406fada2ffa0a49 100644
--- a/src/components/recruit/stateRecruit.js
+++ b/src/components/recruit/stateRecruit.js
@@ -10,7 +10,7 @@ const StateRecruit=({isOpen, onClose, data})=>{
 
     const stateChangeInfo = async ()=>{
         try{
-          const response = await fetch(`/api/recruits/${data.id}?state=${selectedStatus}`,{
+          const response = await fetch(`/api/recruits/${data.id}/state?state=${selectedStatus}`,{
             method: 'PUT',
             headers: {
               'Content-Type': 'application/json',
diff --git a/src/components/search.js b/src/components/search.js
index 76d82f7c048a81bbff40e2c692afb23063acdd5b..128eae730674f2a0162f93bc719ffbd7b6839501 100644
--- a/src/components/search.js
+++ b/src/components/search.js
@@ -4,8 +4,6 @@ import searchStyles from './search.module.css';
 import CreateRecruit from './recruit/createRecruit';
 import MyChannelModal from './channel/myChannelModal';
 import ExistingChannel from './channel/existingChannel';
-    
-
 
 function Search({ currentPage, onUrlGenerated, onFirstQueryString, onSecondQueryString }){
     const [isModalOpen, setIsModalOpen] = useState(false);
@@ -54,8 +52,6 @@ function Search({ currentPage, onUrlGenerated, onFirstQueryString, onSecondQuery
         }
     };
 
-
-
     const handleSearch = () => {
         let searchURL = `${currentPage}/search`;
         let firstQueryString = '?';
diff --git a/src/components/subscribe/createSubscribe.js b/src/components/subscribe/createSubscribe.js
deleted file mode 100644
index a5fb89e8d6e1594ee3e371c85d2a12f14d5d831c..0000000000000000000000000000000000000000
--- a/src/components/subscribe/createSubscribe.js
+++ /dev/null
@@ -1,103 +0,0 @@
-import React, { useState } from "react";
-//import createSubscribeStyles from './createSubscribe.module.css';
-
-function CreateSubscribe({ isOpen, onClose }){
-    const [formData, setFormData] = useState({
-        data: {
-        },
-        image: null
-    });
-
-    const handleInputChange = (e) => {
-        const { name, value } = e.target;
-        setFormData((prevData) => ({
-            ...prevData,
-            data: {
-                ...prevData.data,
-                [name]: value,
-            },
-        }));
-    };
-
-    const handleImageChange = (e) => {
-        const imageFile = e.target.files[0];
-        setFormData((prevDate) => ({
-            ...prevDate,
-            image: imageFile 
-        }));
-    };
-
-    const handleSubmit = async (e) => {
-        e.preventDefault();
-
-        if(formData.data.title === ''){
-            alert('제목을 입력해주세요.');
-            return;
-        } else if(formData.data.content === ''){
-            alert('내용을 입력해주세요.');
-            return;
-        }
-
-        const jsonDataString = JSON.stringify(formData.data);
-        try {
-            const formDataToSend = new FormData();
-            formDataToSend.append('data', jsonDataString);
-            formDataToSend.append('image', formData.image);
-
-            const response = await fetch('/api/subscribes', {
-                method: 'POST',
-                body: formDataToSend,
-            });
-
-            if (response.ok) {
-                alert('채널이 성공적으로 생성되었습니다.');
-                window.location.reload();
-            } else {
-                alert('채널 생성에 실패하였습니다.');
-            }
-
-        } catch (error) {
-            console.error('Error:', error);
-        }
-    };
-
-    return(
-        <div>
-            {isOpen && (
-            <div className={createRecruitStyles.overlay}>
-                <div className={createRecruitStyles.modal}>
-                    <button type="button" className={createRecruitStyles.x} onClick={onClose}>X</button>
-
-                    <div className={createRecruitStyles.top}>
-                        <div>채널 생성</div>
-                    </div>
-
-                    <form onSubmit={handleSubmit}>
-                        <div className={createRecruitStyles.title}>
-                            <label>제목*</label>
-                            <input type="text" name="title" value={formData.data.title} onChange={handleInputChange} placeholder="제목을 입력하세요.(50자 이내)"/>
-                        </div>
-
-                        <div className={createRecruitStyles.content}>
-                            <label>내용*</label>
-                            <textarea name="content" value={formData.data.content} onChange={handleInputChange} placeholder="내용을 입력하세요."/>
-                        </div>
-
-                        <div className={createRecruitStyles.image}>
-                            <label>이미지 첨부</label>
-                            <input type="file" name="image" value={formData.data.image} onChange={handleImageChange} />
-                        </div>
-
-                        <div className={createRecruitStyles.button}>
-                            <button type="submit" className={createRecruitStyles.save}>저장</button>
-                            <button type="button" className={createRecruitStyles.cancel} onClick={onClose}>취소</button>
-                        </div>
-                    </form>
-                </div>
-            </div>
-            )}
-        </div>
-    )
-}
-
-export default CreateSubscribe;
\ No newline at end of file
diff --git a/src/components/subscribe/subscribeList.js b/src/components/subscribe/subscribeList.js
deleted file mode 100644
index 2cfae697462fded82ee30e9564a2a33092e99fc0..0000000000000000000000000000000000000000
--- a/src/components/subscribe/subscribeList.js
+++ /dev/null
@@ -1,31 +0,0 @@
-import React, { useState } from 'react';
-//import subscribeListStyles from '.subscribeList.module.css';
-import InfiniteScroll from '../infiniteScroll';
-
-function PageItem(props){
-    const [isModalOpen, setIsModalOpen] = useState(false);
-
-    const openModal = () => {
-        setIsModalOpen(true);
-    };
-    
-    const closeModal = () => {
-        setIsModalOpen(false);
-    };
-
-    return (
-        <div className='{subscribeListStyles.subscribe}'>
-
-        </div>
-    )
-}
-
-function SubscribeList(){
-    return(
-        <div className='{subscribeListStyles.SubscribeList}'>
-            <InfiniteScroll pagename='subscribes' />
-        </div>
-    )
-}
-
-export {SubscribeList, PageItem};
\ No newline at end of file