diff --git a/public/placeholder.png b/public/placeholder.png
new file mode 100644
index 0000000..ed6df8c
Binary files /dev/null and b/public/placeholder.png differ
diff --git a/src/app/portfolio/bruh/page.tsx b/src/app/portfolio/bruh/page.tsx
new file mode 100644
index 0000000..08056e8
--- /dev/null
+++ b/src/app/portfolio/bruh/page.tsx
@@ -0,0 +1,14 @@
+import Link from "next/link"
+
+export default function Sonion() {
+ return (<>
+
+
+
+
Where are you trying to go 🥀
+
click anywhere to return to the portfolio
+
+
+
+ >)
+}
\ No newline at end of file
diff --git a/src/app/portfolio/layout.tsx b/src/app/portfolio/layout.tsx
new file mode 100644
index 0000000..5233a95
--- /dev/null
+++ b/src/app/portfolio/layout.tsx
@@ -0,0 +1,30 @@
+import Project from "@/components/project_card";
+import { nextjs_tag, typescript_tag } from "@/types/tags";
+
+export default function Portfolio({
+ children,
+}: Readonly<{
+ children: React.ReactNode;
+}>) {
+ return (
+ <>
+ {children}
+
+ >
+ );
+}
diff --git a/src/app/portfolio/ongoingmaintenance/page.tsx b/src/app/portfolio/ongoingmaintenance/page.tsx
new file mode 100644
index 0000000..d46bdff
--- /dev/null
+++ b/src/app/portfolio/ongoingmaintenance/page.tsx
@@ -0,0 +1,14 @@
+import Link from "next/link"
+
+export default function Sonion() {
+ return (<>
+
+
+
+
The page or project you are trying to reach is currently under maintenance
+
click anywhere to return to the portfolio
+
+
+
+ >)
+}
\ No newline at end of file
diff --git a/src/app/portfolio/page.tsx b/src/app/portfolio/page.tsx
index 3a09d9a..6b1eed0 100644
--- a/src/app/portfolio/page.tsx
+++ b/src/app/portfolio/page.tsx
@@ -1,7 +1,3 @@
export default function Portfolio() {
- return (
- <>
-
- >
- )
-}
\ No newline at end of file
+ return <>>;
+}
diff --git a/src/app/portfolio/underconstruction/page.tsx b/src/app/portfolio/underconstruction/page.tsx
new file mode 100644
index 0000000..5642af8
--- /dev/null
+++ b/src/app/portfolio/underconstruction/page.tsx
@@ -0,0 +1,14 @@
+import Link from "next/link"
+
+export default function Sonion() {
+ return (<>
+
+
+
+
The page or project you are trying to reach is currently under construction
+
click anywhere to return to the portfolio
+
+
+
+ >)
+}
\ No newline at end of file
diff --git a/src/components/project_card.tsx b/src/components/project_card.tsx
new file mode 100644
index 0000000..c730a45
--- /dev/null
+++ b/src/components/project_card.tsx
@@ -0,0 +1,48 @@
+import TagType from "@/types/tags";
+import Tag from "@/components/tags";
+import Image from "next/image";
+import Link from "next/link";
+
+interface ProjectInt {
+ tags: TagType[];
+ title: string;
+ desc: string;
+ imgsrc: string;
+ link: string;
+}
+
+export default function Project({
+ tags,
+ title,
+ desc,
+ imgsrc,
+ link,
+}: ProjectInt) {
+ return (
+ <>
+
+
+
+
+
+ {tags.map((tag, index) => (
+
+ ))}
+
+
+
+ >
+ );
+}