diff --git a/apps/cs/app/(with-base-layout)/bbs/(post)/bbsmovie/[bbsId]/[pstNo]/modify/page.tsx b/apps/cs/app/(with-base-layout)/bbs/(post)/bbsmovie/[bbsId]/[pstNo]/modify/page.tsx
new file mode 100644
index 000000000..7cd9664a6
--- /dev/null
+++ b/apps/cs/app/(with-base-layout)/bbs/(post)/bbsmovie/[bbsId]/[pstNo]/modify/page.tsx
@@ -0,0 +1,10 @@
+import { ModifyPage } from "@/pages/(post)/movie";
+
+export default async function PstBbsMoviePostModifyPage({
+ params,
+}: {
+ params: Promise<{ bbsId: string; pstNo: string }>;
+}) {
+ const { bbsId, pstNo } = await params;
+ return ;
+}
diff --git a/apps/cs/app/(with-base-layout)/bbs/(post)/bbsmovie/[bbsId]/[pstNo]/page.tsx b/apps/cs/app/(with-base-layout)/bbs/(post)/bbsmovie/[bbsId]/[pstNo]/page.tsx
new file mode 100644
index 000000000..51615fd10
--- /dev/null
+++ b/apps/cs/app/(with-base-layout)/bbs/(post)/bbsmovie/[bbsId]/[pstNo]/page.tsx
@@ -0,0 +1,10 @@
+import { MoviePost } from "@/pages/(post)/movie";
+
+export default async function PstBbsMoviePostPage({
+ params,
+}: {
+ params: Promise<{ bbsId: string; pstNo: string }>;
+}) {
+ const { bbsId, pstNo } = await params;
+ return ;
+}
diff --git a/apps/cs/app/(with-base-layout)/bbs/(post)/bbsmovie/[bbsId]/page.tsx b/apps/cs/app/(with-base-layout)/bbs/(post)/bbsmovie/[bbsId]/page.tsx
new file mode 100644
index 000000000..b5d9daf91
--- /dev/null
+++ b/apps/cs/app/(with-base-layout)/bbs/(post)/bbsmovie/[bbsId]/page.tsx
@@ -0,0 +1,10 @@
+import { MoviePage } from "@/pages/(post)/movie";
+
+export default async function PstBbsMoviePage({
+ params,
+}: {
+ params: Promise<{ bbsId: string }>;
+}) {
+ const { bbsId } = await params;
+ return ;
+}
diff --git a/apps/cs/app/(with-base-layout)/bbs/(post)/bbsmovie/[bbsId]/register/page.tsx b/apps/cs/app/(with-base-layout)/bbs/(post)/bbsmovie/[bbsId]/register/page.tsx
new file mode 100644
index 000000000..368832658
--- /dev/null
+++ b/apps/cs/app/(with-base-layout)/bbs/(post)/bbsmovie/[bbsId]/register/page.tsx
@@ -0,0 +1,10 @@
+import { CreatePage } from "@/pages/(post)/movie";
+
+export default async function PstBbsMovieRegisterPage({
+ params,
+}: {
+ params: Promise<{ bbsId: string }>;
+}) {
+ const { bbsId } = await params;
+ return ;
+}
diff --git a/apps/cs/src/pages/(post)/movie/index.ts b/apps/cs/src/pages/(post)/movie/index.ts
new file mode 100644
index 000000000..c746cff6c
--- /dev/null
+++ b/apps/cs/src/pages/(post)/movie/index.ts
@@ -0,0 +1,4 @@
+export { CreatePage } from "./ui/create-page";
+export { ModifyPage } from "./ui/modify-page";
+export { MoviePage } from "./ui/movie-page";
+export { MoviePost } from "./ui/movie-post";
diff --git a/apps/cs/src/pages/(post)/movie/ui/create-page.tsx b/apps/cs/src/pages/(post)/movie/ui/create-page.tsx
new file mode 100644
index 000000000..f7e2e837f
--- /dev/null
+++ b/apps/cs/src/pages/(post)/movie/ui/create-page.tsx
@@ -0,0 +1,43 @@
+"use client";
+
+import { useRouter } from "next/navigation";
+import { useForm } from "react-hook-form";
+import { zodResolver } from "@hookform/resolvers/zod";
+import { useMutation } from "@tanstack/react-query";
+import { PostForm } from "@/widgets/post";
+import { PostApi, postFormSchema, type PostFormData } from "@/entities/post";
+import { useAlertStore, useUserStore } from "@/shared/lib";
+
+function CreatePage({ bbsId }: { bbsId: string }) {
+ const router = useRouter();
+ const { userInfo } = useUserStore((state) => state);
+ const { setMessage: alert } = useAlertStore((state) => state);
+
+ const { mutateAsync: createPost } = useMutation({
+ mutationFn: (data: PostFormData) => PostApi.createPost(data),
+ onSuccess: () => {
+ alert("등록되었습니다.", router.back);
+ },
+ });
+
+ const form = useForm({
+ resolver: zodResolver(postFormSchema),
+ values: {
+ bbsId: parseInt(bbsId),
+ pstTtl: "",
+ wrtrNm: userInfo?.userName ?? "",
+ pstPswd: userInfo?.userUnqId ?? "",
+ },
+ });
+
+ return (
+
+ );
+}
+
+export { CreatePage };
diff --git a/apps/cs/src/pages/(post)/movie/ui/modify-page.tsx b/apps/cs/src/pages/(post)/movie/ui/modify-page.tsx
new file mode 100644
index 000000000..2f67e313c
--- /dev/null
+++ b/apps/cs/src/pages/(post)/movie/ui/modify-page.tsx
@@ -0,0 +1,53 @@
+"use client";
+
+import { useRouter } from "next/navigation";
+import { useForm } from "react-hook-form";
+import { zodResolver } from "@hookform/resolvers/zod";
+import { useMutation, useQuery } from "@tanstack/react-query";
+import { PostForm } from "@/widgets/post";
+import {
+ PostApi,
+ postUpdateFormSchema,
+ type PostUpdateFormData,
+} from "@/entities/post";
+import { ENDPOINT } from "@/shared/config";
+import { useAlertStore, useUserStore } from "@/shared/lib";
+
+function ModifyPage({ bbsId, pstNo }: { bbsId: string; pstNo: string }) {
+ const router = useRouter();
+ const { setMessage: alert } = useAlertStore((state) => state);
+ const { userInfo } = useUserStore((state) => state);
+
+ const { data: postInfo } = useQuery({
+ queryKey: [ENDPOINT.BOARD_SERVICE.POSTS_USER, bbsId, pstNo],
+ queryFn: () => PostApi.getPostInfo(bbsId, pstNo),
+ });
+
+ const { mutateAsync: updatePost } = useMutation({
+ mutationFn: (data: PostUpdateFormData) =>
+ PostApi.updatePost(bbsId, pstNo, data),
+ onSuccess: () => {
+ alert("수정되었습니다.", router.back);
+ },
+ });
+
+ const form = useForm({
+ resolver: zodResolver(postUpdateFormSchema),
+ values: {
+ ...postInfo,
+ pstTtl: postInfo?.pstTtl ?? "",
+ pstPswd: userInfo?.userUnqId ?? "",
+ },
+ });
+
+ return (
+
+ );
+}
+
+export { ModifyPage };
diff --git a/apps/cs/src/pages/(post)/movie/ui/movie-page.tsx b/apps/cs/src/pages/(post)/movie/ui/movie-page.tsx
new file mode 100644
index 000000000..5ba24e94b
--- /dev/null
+++ b/apps/cs/src/pages/(post)/movie/ui/movie-page.tsx
@@ -0,0 +1,3 @@
+"use client";
+
+export { PostPage as MoviePage } from "@/widgets/post";
diff --git a/apps/cs/src/pages/(post)/movie/ui/movie-post.tsx b/apps/cs/src/pages/(post)/movie/ui/movie-post.tsx
new file mode 100644
index 000000000..8a5bf6996
--- /dev/null
+++ b/apps/cs/src/pages/(post)/movie/ui/movie-post.tsx
@@ -0,0 +1,3 @@
+"use client";
+
+export { Post as MoviePost } from "@/widgets/post";