vkorobtsev-nextJs/app/projects/page.js

310 lines
9.8 KiB
JavaScript
Raw Normal View History

2023-09-03 08:45:12 +07:00
"use client";
2023-09-03 13:23:39 +07:00
import { useEffect } from "react";
2023-09-03 08:45:12 +07:00
import Link from "next/link";
import { motion } from "framer-motion";
import Button from "@/components/Button";
2023-09-03 14:45:00 +07:00
import Image from "next/legacy/image";
2023-09-03 08:45:12 +07:00
// images
2023-09-03 20:26:08 +07:00
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";
2023-09-03 11:21:56 +07:00
const projects = () => {
2023-09-03 20:26:08 +07:00
[{ title: "React Chat WebApp" }];
2023-09-03 11:21:56 +07:00
};
2023-09-03 08:45:12 +07:00
export default function Page() {
2023-09-03 13:23:39 +07:00
useEffect(() => {
window.scrollTo(0, 0);
}, []);
2023-09-03 08:45:12 +07:00
return (
<>
<main className="overflow-hidden">
<div className="relative h-screen w-screen gap-4 p-10 flex justify-center items-center flex-col mb-10">
<div className="z-0 mb-48 md:mb-0 md:absolute top-1/4 md:right-[10%] md:-translate-y-16 ">
<motion.div
2023-09-03 13:23:39 +07:00
initial={{ scale: 1 }}
animate={{ scale: 1.6 }}
transition={{ duration: 1, ease: "circOut" }}
2023-09-03 20:26:08 +07:00
className="bg-slate-300 rounded-sm h-[400px] md:h-[600px] w-[80vw] md:w-[30vw] grayscale hover:grayscale-0">
<Image
src={ProjectAll}
alt="Alvalens"
layout="fill"
objectFit="cover"
placeholder="blur"
/>
</motion.div>
2023-09-03 08:45:12 +07:00
</div>
2023-09-03 20:26:08 +07:00
<div className="z-10 w-full absolute md:w-auto md:left-[10%] top-[60%] md:top-1/3 col-span-2 flex flex-col justify-center items-start md:items-start text-start px-10 pt-4 backdrop-filter backdrop-blur-sm md:backdrop-blur-none md:backdrop-filter-none bg-gray-100 bg-opacity-50 md:bg-transparent md:pt-0">
2023-09-03 08:45:12 +07:00
<h1 className="text-5xl md:text-8xl font-bold">
My Projects
</h1>
2023-09-03 20:26:08 +07:00
<Hr />
2023-09-03 08:45:12 +07:00
<p className="title text-xl mt-4 tracking-wider text-gray-500 leading-[1.7rem] mb-5">
List of my projects that I have done and currently
working on.
</p>
<motion.div
initial={{ opacity: 0, y: 100 }}
animate={{ opacity: 1, y: 0 }}
2023-09-03 13:23:39 +07:00
transition={{ duration: 0.5, ease: "circOut" }}
2023-09-03 08:45:12 +07:00
onClick={() => {
window.scrollTo({
top: 1000,
behavior: "smooth",
});
}}
className="">
<Button variation="primary">Scroll Down</Button>
</motion.div>
</div>
</div>
<div className="mt-10 flex flex-col justify-start items-center w-full pl-10 md:pl-32">
<div className="flex justify-center items-center flex-col my-5 self-start ">
<div className="bg-gray-700 w-28 h-1 rounded-full mb-3 self-start"></div>
<div className="bg-gray-700 w-28 h-1 rounded-full translate-x-12"></div>
<h1 className="text-3xl font-bold mt-3">Hightlight</h1>
</div>
</div>
<div className="relative w-screen mx-auto container gap-4 px-10 grid grid-cols-1 md:grid-cols-2 mb-10">
<div className="flex justify-center items-start flex-col mb-5 ">
<div className="images relative w-full aspect-square">
2023-09-03 20:26:08 +07:00
<div className="absolute top-28 left-10 w-[50%] aspect-square grayscale hover:grayscale-0 transition-all ease duration-300 hover:scale-150">
2023-09-03 08:45:12 +07:00
<motion.div
initial={{ opacity: 0, scale: 0.5, x: 100 }}
whileInView={{
opacity: 1,
scale: 1,
x: 0,
}}
2023-09-03 20:26:08 +07:00
className="w-full h-full shadow-lg">
2023-09-03 08:45:12 +07:00
<Image
2023-09-03 20:26:08 +07:00
src={ReactChat1}
2023-09-03 08:45:12 +07:00
alt="Alvalens"
layout="fill"
objectFit="cover"
placeholder="blur"
/>
</motion.div>
</div>
2023-09-03 20:26:08 +07:00
<div className="absolute top-16 right-28 w-[30%] aspect-square grayscale hover:grayscale-0 transition-all ease duration-300 hover:scale-150">
2023-09-03 08:45:12 +07:00
<motion.div
initial={{
opacity: 0,
scale: 0.5,
x: -100,
}}
whileInView={{
opacity: 1,
scale: 1,
x: 0,
}}
2023-09-03 20:26:08 +07:00
transition={{ delay: 0.3 }}
className="w-full h-full shadow-lg ">
2023-09-03 08:45:12 +07:00
<Image
2023-09-03 20:26:08 +07:00
src={ReactChat3}
2023-09-03 08:45:12 +07:00
alt="Alvalens"
layout="fill"
objectFit="cover"
placeholder="blur"
2023-09-03 20:26:08 +07:00
objectPosition="0% 0%"
2023-09-03 08:45:12 +07:00
/>
</motion.div>
</div>
2023-09-03 20:26:08 +07:00
<div className="absolute bottom-16 right-20 w-[40%] aspect-square grayscale hover:grayscale-0 transition-all ease duration-300 hover:scale-150">
2023-09-03 08:45:12 +07:00
<motion.div
initial={{
opacity: 0,
scale: 0.5,
x: -100,
}}
whileInView={{
opacity: 1,
scale: 1,
x: 0,
}}
transition={{
delay: 0.5,
}}
2023-09-03 20:26:08 +07:00
className="w-full h-full shadow-lg">
2023-09-03 08:45:12 +07:00
<Image
2023-09-03 20:26:08 +07:00
src={ReactChat2}
2023-09-03 08:45:12 +07:00
alt="Alvalens"
layout="fill"
objectFit="cover"
placeholder="blur"
/>
</motion.div>
</div>
</div>
</div>
<motion.div
className="flex justify-center items-start flex-col mb-5 md:px-10"
initial={{
opacity: 0,
x: 200,
}}
whileInView={{
opacity: 1,
x: 0,
}}
transition={{
delay: 0.5,
2023-09-03 13:23:39 +07:00
2023-09-03 08:45:12 +07:00
type: "spring",
}}>
<h2 className="text-2xl font-bold tracking-wider mb-3">
React Chat WebApp
</h2>
<p className="text-gray-600 text-justify title text-lg">
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.
2023-09-03 20:26:08 +07:00
</p>{" "}
<div className="mt-3">
<Button variation="primary">
<Link href="projects/react-chat ">More</Link>
</Button>
<Button variation="secondary">
<Link href="projects/react-chat">Preview</Link>
</Button>
</div>
2023-09-03 08:45:12 +07:00
</motion.div>
</div>
<div className="mt-16 flex flex-col justify-start items-center w-full pl-10 md:pl-32">
<div className="flex justify-center items-center flex-col my-5 self-start ">
<motion.div
className="bg-gray-700 w-28 h-1 rounded-full mb-3 self-start"
initial={{
opacity: 0,
x: -200,
}}
whileInView={{
opacity: 1,
x: 0,
}}
transition={{
delay: 0.5,
2023-09-03 13:23:39 +07:00
2023-09-03 08:45:12 +07:00
type: "spring",
}}></motion.div>
<motion.div
className="bg-gray-700 w-28 h-1 rounded-full"
initial={{
opacity: 0,
x: 200,
}}
whileInView={{
opacity: 1,
x: -50,
}}
transition={{
delay: 0.5,
2023-09-03 13:23:39 +07:00
2023-09-03 08:45:12 +07:00
type: "spring",
}}></motion.div>
<motion.h1
className="text-3xl font-bold mt-3"
initial={{
opacity: 0,
x: -200,
}}
whileInView={{
opacity: 1,
x: 0,
}}
transition={{
delay: 0.7,
2023-09-03 13:23:39 +07:00
2023-09-03 08:45:12 +07:00
type: "spring",
}}>
Other Note Worthy Projects
</motion.h1>
</div>
</div>
<div className="w-screen mx-auto container gap-4 px-10 grid grid-cols-1 md:grid-cols-2 mb-10 cursor-pointer">
<div className="relative flex justify-center items-start flex-col mb-5 md:px-10 w-full h-[400px] bg-gray-400 group/tes ">
<div className="absolute top-0 left-0 bg-gray-600 px-4 py-2">
<h4 className="text-white">2023</h4>
</div>
<div className="transition-all ease duration-500 opacity-100 content text-center group-hover/tes:opacity-0">
<h1 className="text-3xl font-bold mb-3">
React Tools
</h1>
<p>
React Tools is my first project using ReactJS,
this project contain 3 main tools: Todo List,
Note, and Expense tracker.
</p>
<div className="flex justify-center items-center flex-row mt-5 flex-wrap">
<span className="m-1 px-4 py-2 bg-gray-600 text-white ">
Javascript
</span>
<span className="m-1 px-4 py-2 bg-gray-600 text-white ">
React Js
</span>
<span className="m-1 px-4 py-2 bg-gray-600 text-white ">
Firebase
</span>
<span className="m-1 px-4 py-2 bg-gray-600 text-white ">
Tailwind CSS
</span>
</div>
</div>
</div>
<div className="relative flex justify-center items-start flex-col mb-5 md:px-10 w-full h-[400px] bg-gray-400 group/tes ">
<div className="absolute top-0 left-0 bg-gray-600 px-4 py-2">
<h4 className="text-white">2023</h4>
</div>
<div className="transition-all ease duration-500 opacity-100 content text-center group-hover/tes:opacity-0">
<h1 className="text-3xl font-bold mb-3">
React Tools
</h1>
<p>
React Tools is my first project using ReactJS,
this project contain 3 main tools: Todo List,
Note, and Expense tracker.
</p>
<div className="flex justify-center items-center flex-row mt-5 flex-wrap">
<span className="m-1 px-4 py-2 bg-gray-600 text-white ">
Javascript
</span>
<span className="m-1 px-4 py-2 bg-gray-600 text-white ">
React Js
</span>
<span className="m-1 px-4 py-2 bg-gray-600 text-white ">
Firebase
</span>
<span className="m-1 px-4 py-2 bg-gray-600 text-white ">
Tailwind CSS
</span>
</div>
</div>
</div>
</div>
{/* view in archive btn */}
<div className="flex justify-center items-center flex-col my-5 self-start ">
2023-09-03 13:23:39 +07:00
<Button variation="primary">
<Link href="projects/archive">View In Archive</Link>
</Button>
2023-09-03 08:45:12 +07:00
</div>
</main>
</>
);
}