From aa8ce41e7097904fa72871be20392c48cc97c3ba Mon Sep 17 00:00:00 2001 From: Rykkel <220993G@mymail.nyp.edu.sg> Date: Fri, 28 Jun 2024 13:35:01 +0800 Subject: [PATCH] added community, CRUD --- client/src/App.tsx | 8 + .../src/components/NextUIFormikTextarea.tsx | 28 + client/src/pages/CommunityPage.tsx | 278 +++ client/src/pages/CreatePostPage.tsx | 127 ++ client/src/pages/EditPostPage.tsx | 146 ++ client/tailwind.config.js | 6 +- server/index.js | 3 + server/models/Post.js | 15 + server/package.json | 1 + server/pnpm-lock.yaml | 1803 +++++++++-------- server/routes/post.js | 155 ++ 11 files changed, 1764 insertions(+), 806 deletions(-) create mode 100644 client/src/components/NextUIFormikTextarea.tsx create mode 100644 client/src/pages/CommunityPage.tsx create mode 100644 client/src/pages/CreatePostPage.tsx create mode 100644 client/src/pages/EditPostPage.tsx create mode 100644 server/models/Post.js create mode 100644 server/routes/post.js diff --git a/client/src/App.tsx b/client/src/App.tsx index 6d0c2ab..3eb973a 100644 --- a/client/src/App.tsx +++ b/client/src/App.tsx @@ -4,6 +4,10 @@ import SignUpPage from "./pages/SignUpPage"; import SignInPage from "./pages/SignInPage"; import SpringboardPage from "./pages/SpringboardPage"; import ManageUserAccountPage from "./pages/ManageUserAccountPage"; + +import CommunityPage from "./pages/CommunityPage"; +import CreatePostPage from "./pages/CreatePostPage"; +import EditPostPage from "./pages/EditPostPage"; import SchedulePage from "./pages/SchedulePage"; function App() { @@ -17,6 +21,10 @@ function App() { element={} path="/manage-account/:accessToken" /> + + } path="/community" /> + } path="/createPost" /> + } path="/editPost/:id" /> } path="/schedule"/> ); diff --git a/client/src/components/NextUIFormikTextarea.tsx b/client/src/components/NextUIFormikTextarea.tsx new file mode 100644 index 0000000..203b4dd --- /dev/null +++ b/client/src/components/NextUIFormikTextarea.tsx @@ -0,0 +1,28 @@ +import { Textarea } from "@nextui-org/react"; +import { useField } from "formik"; + +interface NextUIFormikTextareaProps { + label: string; + name: string; + placeholder: string; + labelPlacement?: "inside" | "outside"; +} + +const NextUIFormikTextarea = ({ + label, + ...props +}: NextUIFormikTextareaProps) => { + const [field, meta] = useField(props.name); + + return ( +