diff --git a/frontend/src/hooks/useUpdateProgramStatus.ts b/frontend/src/hooks/useUpdateProgramStatus.ts
new file mode 100644
index 0000000000..4f5bc5eab6
--- /dev/null
+++ b/frontend/src/hooks/useUpdateProgramStatus.ts
@@ -0,0 +1,61 @@
+import { DocumentNode, useMutation } from '@apollo/client'
+import { addToast } from '@heroui/toast'
+import upperFirst from 'lodash/upperFirst'
+import { handleAppError } from 'app/global-error'
+import { UPDATE_PROGRAM_STATUS_MUTATION } from 'server/mutations/programsMutations'
+
+interface UseUpdateProgramStatusProps {
+ programKey: string
+ programName: string
+ isAdmin: boolean
+ refetchQueries?: { query: DocumentNode; variables: { programKey: string } }[]
+}
+
+export const useUpdateProgramStatus = ({
+ programKey,
+ programName,
+ isAdmin,
+ refetchQueries = [],
+}: UseUpdateProgramStatusProps) => {
+ const [updateProgramMutation] = useMutation(UPDATE_PROGRAM_STATUS_MUTATION, {
+ onError: handleAppError,
+ })
+
+ const updateProgramStatus = async (newStatus: string) => {
+ if (!isAdmin) {
+ addToast({
+ title: 'Permission Denied',
+ description: 'Only admins can update the program status.',
+ variant: 'solid',
+ color: 'danger',
+ timeout: 3000,
+ })
+ return
+ }
+
+ try {
+ await updateProgramMutation({
+ variables: {
+ inputData: {
+ key: programKey,
+ name: programName,
+ status: newStatus,
+ },
+ },
+ refetchQueries,
+ })
+
+ addToast({
+ title: `Program status updated to ${upperFirst(newStatus)}`,
+ description: 'The status has been successfully updated.',
+ variant: 'solid',
+ color: 'success',
+ timeout: 3000,
+ })
+ } catch (err) {
+ handleAppError(err)
+ }
+ }
+
+ return { updateProgramStatus }
+}
diff --git a/frontend/src/server/queries/programsQueries.ts b/frontend/src/server/queries/programsQueries.ts
index 307cbd7760..a3b722b19e 100644
--- a/frontend/src/server/queries/programsQueries.ts
+++ b/frontend/src/server/queries/programsQueries.ts
@@ -9,6 +9,7 @@ export const GET_MY_PROGRAMS = gql`
id
key
name
+ status
description
startedAt
endedAt
diff --git a/frontend/src/types/card.ts b/frontend/src/types/card.ts
index 9f37a9011e..8382bb0835 100644
--- a/frontend/src/types/card.ts
+++ b/frontend/src/types/card.ts
@@ -56,6 +56,7 @@ export interface DetailsCardProps {
mentors?: Contributor[]
admins?: Contributor[]
projectName?: string
+ programKey?: string
pullRequests?: PullRequest[]
recentIssues?: Issue[]
recentMilestones?: Milestone[]