From 0be22beae33703a09b28a921571dc35f1115c05e Mon Sep 17 00:00:00 2001
From: Alvalen
Date: Sun, 3 Sep 2023 08:45:12 +0700
Subject: [PATCH] [feat] project archive page
---
app/(root)/page.js | 2 +
app/globals.css | 26 ++++
app/projects/archive/page.js | 148 ++++++++++++++++++
app/projects/layout.js | 11 ++
app/projects/page.js | 291 +++++++++++++++++++++++++++++++++++
components/Footer.jsx | 36 +++++
components/Navbar.js | 6 +-
7 files changed, 517 insertions(+), 3 deletions(-)
create mode 100644 app/projects/archive/page.js
create mode 100644 app/projects/layout.js
create mode 100644 components/Footer.jsx
diff --git a/app/(root)/page.js b/app/(root)/page.js
index 138c571..199f9bd 100644
--- a/app/(root)/page.js
+++ b/app/(root)/page.js
@@ -129,7 +129,9 @@ const MyPage = () => {
done and currently working on.
+
Learn More
+
diff --git a/app/globals.css b/app/globals.css
index 963b6f7..e814308 100644
--- a/app/globals.css
+++ b/app/globals.css
@@ -16,6 +16,7 @@ html {
font-size: 14px !important;
}
}
+
@media (max-width: 768px) {
html {
font-size: 13px !important;
@@ -61,4 +62,29 @@ span {
.active {
color: rgb(255, 235, 87);
+}
+
+td, th {
+ @apply py-2 px-3;
+}
+
+
+[title]:hover:after {
+ margin-left: 10px;
+ position: absolute;
+ content: attr(title);
+ padding: 0.5rem;
+ white-space: nowrap;
+ z-index: 1;
+ background-color: #333333;
+ color: #fff;
+ border-radius: 4px;
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
+ font-size: 14px;
+}
+
+[title]:hover:after {
+ opacity: 1;
+ transform: translateY(0);
+
}
\ No newline at end of file
diff --git a/app/projects/archive/page.js b/app/projects/archive/page.js
new file mode 100644
index 0000000..c2d5f87
--- /dev/null
+++ b/app/projects/archive/page.js
@@ -0,0 +1,148 @@
+"use client"
+import { motion } from "framer-motion";
+
+import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
+import { faGithub } from "@fortawesome/free-brands-svg-icons";
+import { faArrowUpRightFromSquare } from "@fortawesome/free-solid-svg-icons";
+
+const projects = [
+ {
+ year: "2023",
+ title: "React Realtime Chat",
+ tech: "Javascript, React Js, Firebase, Daisy UI",
+ github: "https://github.com/Alvalens/react-realtime-chat",
+ preview: "https://react-chat-rouge.vercel.app",
+ },
+ {
+ year: "2023",
+ title: "React Tools",
+ tech: "Javascript, React Js, TailwindCSS",
+ github: "https://github.com/Alvalens/react-tools",
+ preview: "react-tools-flax.vercel.app",
+ },
+ {
+ year: "2023",
+ title: "Aleph Discord Bot",
+ tech: "Python, Serp API, Discord.py",
+ github: "https://github.com/Alvalens/aleph-discord-bot",
+ },
+ {
+ year: "2023",
+ title: "Unmuh Jember Landing Page",
+ tech: "HTML, CSS, Javascript",
+ github: "https://github.com/Alvalens/unmuh-jember-landing-page",
+ preview: "https://alvalens.github.io/unmuh-jember-landing-page/",
+ },
+];
+export default function Page () {
+ return (
+ <>
+
+
+
+
+
+
+ Archive
+
+
+
+
+ {/* invisible table */}
+
+
+
+ Year
+ Title
+ Technology
+ Link
+
+
+
+ {projects.map((project, index) => (
+
+ {project.year}
+ {project.title}
+ {project.tech}
+
+
+ {project.github && (
+
+
+
+ )}
+ {project.preview && (
+
+
+
+ )}
+
+
+
+ ))}
+
+
+
+
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/app/projects/layout.js b/app/projects/layout.js
new file mode 100644
index 0000000..22adb89
--- /dev/null
+++ b/app/projects/layout.js
@@ -0,0 +1,11 @@
+// generate layour with footer
+import Footer from "@/components/Footer";
+export default function Layout({ children }) {
+ return (
+ <>
+
+ {children}
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/app/projects/page.js b/app/projects/page.js
index e69de29..09ccd7c 100644
--- a/app/projects/page.js
+++ b/app/projects/page.js
@@ -0,0 +1,291 @@
+"use client";
+import Link from "next/link";
+import { motion } from "framer-motion";
+import Button from "@/components/Button";
+import Image from "next/image";
+
+// images
+import Me1 from "@/public/img/me1.jpg";
+import Me2 from "@/public/img/me2.jpg";
+import Me3 from "@/public/img/me3.jpg";
+export default function Page() {
+ // useEffect(() => {
+ // window.scrollTo(0, 0);
+ // }, []);
+
+ return (
+ <>
+
+
+
+
+
+
+
+ My Projects
+
+
+
+ List of my projects that I have done and currently
+ working on.
+
+
{
+ window.scrollTo({
+ top: 1000,
+ behavior: "smooth",
+ });
+ }}
+ className="">
+ Scroll Down
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ React Chat WebApp
+
+
+ React Chat WebApp is a chat application that I
+ created using ReactJS, Firebase, and TailwindCSS.
+ This is my second project using ReactJS and
+ Firebase. I created this project to learn more about
+ ReactJS and Firebase. I also use TailwindCSS to make
+ the UI more beautiful and responsive. In this
+ project i learn many things about react and
+ firebase, such as react hooks, react router,
+ firebase authentication, firebase firestore, and
+ firebase storage. You can see the source code of
+ this project on my github account or preview the
+ project by clicking the button below.
+
+
+
+
+
+
+
+
+ Other Note Worthy Projects
+
+
+
+
+
+
+
2023
+
+
+
+ React Tools
+
+
+ React Tools is my first project using ReactJS,
+ this project contain 3 main tools: Todo List,
+ Note, and Expense tracker.
+
+
+
+ Javascript
+
+
+ React Js
+
+
+ Firebase
+
+
+ Tailwind CSS
+
+
+
+
+
+
+
2023
+
+
+
+ React Tools
+
+
+ React Tools is my first project using ReactJS,
+ this project contain 3 main tools: Todo List,
+ Note, and Expense tracker.
+
+
+
+ Javascript
+
+
+ React Js
+
+
+ Firebase
+
+
+ Tailwind CSS
+
+
+
+
+
+ {/* view in archive btn */}
+
+
+
+ View In Archive
+
+
+
+
+
+ >
+ );
+}
diff --git a/components/Footer.jsx b/components/Footer.jsx
new file mode 100644
index 0000000..4a382f4
--- /dev/null
+++ b/components/Footer.jsx
@@ -0,0 +1,36 @@
+"use client";
+import { motion } from "framer-motion";
+import Link from "next/link";
+
+import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
+import { faArrowRight } from "@fortawesome/free-solid-svg-icons";
+
+export default function Footer() {
+ return (
+
+
+
+ Get In Touch{" "}
+
+
+
+
+ );
+}
diff --git a/components/Navbar.js b/components/Navbar.js
index 907950e..739934b 100644
--- a/components/Navbar.js
+++ b/components/Navbar.js
@@ -108,7 +108,7 @@ if (isMobile) {
-
+
Projects
@@ -141,14 +141,14 @@ const Navbar = () => {
<>
+ className={`navbar px-5 md:px-24 w-screen fixed transition-colors ease duration-500 ${isNavOpen ? "bg-transparent" : "bg-gray-50"} inset-0 backdrop-blur-md opacity-50 flex flex-row justify-between items-center h-16 z-50 `}>
Alvalens
{/* toggler */}