+
About Me
-
-
+
+
A brief introduction about me and my interest.
- {/*
*/}
-
-
-
-
- Get In Touch{" "}
-
-
-
-
>
);
diff --git a/app/layout.js b/app/layout.js
index e3e3d7b..1d83d8e 100644
--- a/app/layout.js
+++ b/app/layout.js
@@ -7,7 +7,7 @@ config.autoAddCss = false;
import "./nprogress.css";
export const metadata = {
- title: "Create Next App",
+ title: "Alvalens | Portofolio",
description: "Generated by create next app",
};
diff --git a/app/projects/[slug]/page.js b/app/projects/[slug]/page.js
new file mode 100644
index 0000000..0a10e49
--- /dev/null
+++ b/app/projects/[slug]/page.js
@@ -0,0 +1,106 @@
+"use client";
+import { useState, useEffect } from "react";
+import jsonData from "../../../json/data.json";
+import Image from "next/image";
+
+function Page({ params }) {
+ const [data, setData] = useState(null);
+ useEffect(() => {
+ const selectedData = jsonData.Projects.find(
+ (item) => item.slug === params.slug
+ );
+ setData(selectedData);
+ }, [params.slug]);
+
+ if (!data) {
+ return
Loading...
;
+ }
+
+ return (
+
+
+
+
+
+
+ Project
+
+
+ {data.title}
+
+
+
+
+ Technology
+
+
+ {data.tech.join(", ")}
+
+
+
+
+ Year
+
+
+ {data.year}
+
+
+
+
+
+
+
+ Description
+
+ {data.desc.map((desc, index) => (
+
+ {desc}
+
+ ))}
+
+
+
+ {/* images */}
+
+
+ {data.images.map((image, index) => (
+

+ ))}
+
+
+
+ );
+}
+
+export default Page;
diff --git a/app/projects/layout.js b/app/projects/layout.js
index 22adb89..f50b242 100644
--- a/app/projects/layout.js
+++ b/app/projects/layout.js
@@ -1,5 +1,9 @@
// generate layour with footer
import Footer from "@/components/Footer";
+
+export const metadata = {
+ title: "Alvalens | Projects",
+};
export default function Layout({ children }) {
return (
<>
diff --git a/app/projects/page.js b/app/projects/page.js
index 010cada..6c2e3c9 100644
--- a/app/projects/page.js
+++ b/app/projects/page.js
@@ -6,12 +6,15 @@ import Button from "@/components/Button";
import Image from "next/legacy/image";
// images
-import Me1 from "@/public/img/me1.jpg";
-import Me2 from "@/public/img/me2.jpg";
-import Me3 from "@/public/img/me3.jpg";
+import ReactChat1 from "@/public/projects/react-chat.png";
+import ReactChat2 from "@/public/projects/react-chat2.png";
+import ReactChat3 from "@/public/projects/react-chat3.png";
+import ProjectAll from "@/public/img/projects-all.jpg";
+
+import Hr from "@/components/Hr";
const projects = () => {
- [{ title: "React Chat WebApp"}]
+ [{ title: "React Chat WebApp" }];
};
export default function Page() {
@@ -28,16 +31,21 @@ export default function Page() {
initial={{ scale: 1 }}
animate={{ scale: 1.6 }}
transition={{ duration: 1, ease: "circOut" }}
- className="bg-slate-300 rounded-sm h-[400px] md:h-[600px] w-[80vw] md:w-[30vw]">
+ className="bg-slate-300 rounded-sm h-[400px] md:h-[600px] w-[80vw] md:w-[30vw] grayscale hover:grayscale-0">
+
+