[feat] populate project images
2
.gitignore
vendored
|
|
@ -33,3 +33,5 @@ yarn-error.log*
|
|||
# typescript
|
||||
*.tsbuildinfo
|
||||
next-env.d.ts
|
||||
|
||||
.env
|
||||
39
analyze/nodejs.html
Normal file
|
|
@ -270,7 +270,7 @@ const MyPage = () => {
|
|||
</div>
|
||||
<div className="section">
|
||||
<div className="relative md:h-screen w-screen gap-4 p-10 flex justify-center items-center flex-col">
|
||||
<div className="z-0 mb-48 md:mb-0 md:absolute top-1/4 md:right-[10%] md:-translate-y-16 ">
|
||||
<div className="z-0 mb-48 md:mb-0 md:absolute top-1/4 md:right-[10%] md:-translate-y-16 overflow-x-hidden">
|
||||
<motion.div
|
||||
className="bg-slate-300 rounded-sm h-[400px] md:h-[600px] w-[80vw] md:w-[30vw] grayscale hover:grayscale-0"
|
||||
initial={{
|
||||
|
|
@ -298,7 +298,7 @@ const MyPage = () => {
|
|||
</div>
|
||||
<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 overflow-hidden">
|
||||
<motion.h1
|
||||
className="bg-white lg:bg-transparent bg-opacity-50 px-3 md-px-0 text-black text-5xl md:text-8xl font-bold"
|
||||
className="bg-white lg:bg-transparent bg-opacity-50 px-3 md-px-0 text-black text-5xl md:text-8xl font-bold mb-3"
|
||||
initial={{ x: -100, opacity: 0 }}
|
||||
whileInView={{ x: 0, opacity: 1 }}
|
||||
transition={{
|
||||
|
|
@ -317,7 +317,9 @@ const MyPage = () => {
|
|||
type: "spring",
|
||||
}}>
|
||||
Feel free to contact me if you have any{" "}
|
||||
<span className="bg-transparent md:bg-gray-100 bg-opacity-50 xl:bg-transparent">questions or just want to say hi.</span>
|
||||
<span className="bg-transparent md:bg-gray-100 bg-opacity-50 xl:bg-transparent">
|
||||
questions or just want to say hi.
|
||||
</span>
|
||||
</motion.p>
|
||||
<motion.p
|
||||
className="title text-xl mt-4 tracking-wider text-gray-500 leading-[1.7rem] mb-5"
|
||||
|
|
@ -327,12 +329,14 @@ const MyPage = () => {
|
|||
delay: 0.3,
|
||||
type: "spring",
|
||||
}}>
|
||||
alvalen.shafel04@gmail.com
|
||||
<a href="mailto:Alvalen.shafel04@gmail.com?subject=Hello&body=Hello Alvalens,">
|
||||
alvalen.shafel04@gmail.com
|
||||
</a>
|
||||
</motion.p>
|
||||
{/* icons */}
|
||||
<div className="flex justify-center items-center space-x-4">
|
||||
<motion.a
|
||||
href="#"
|
||||
href="mailto:Alvalen.shafel04@gmail.com?subject=Hello&body=Hello Alvalens,"
|
||||
className="flex justify-center items-center bg-gray-500 w-14 h-14 rounded-full text-gray-100 hover:bg-gray-400 transition-all ease-in-out duration-300"
|
||||
initial={{ y: 40, opacity: 0 }}
|
||||
whileInView={{ y: 0, opacity: 1 }}
|
||||
|
|
@ -347,7 +351,9 @@ const MyPage = () => {
|
|||
</motion.a>
|
||||
|
||||
<motion.a
|
||||
href="#"
|
||||
href="https://github.com/Alvalens"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="flex justify-center items-center bg-gray-500 w-14 h-14 rounded-full text-gray-100 hover:bg-gray-400 transition-all ease-in-out duration-300"
|
||||
initial={{ opacity: 0, y: 40 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
|
|
@ -361,7 +367,9 @@ const MyPage = () => {
|
|||
/>
|
||||
</motion.a>
|
||||
<motion.a
|
||||
href="#"
|
||||
href="https://www.instagram.com/alvalens_/"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="flex justify-center items-center bg-gray-500 w-14 h-14 rounded-full text-gray-100 hover:bg-gray-400 transition-all ease-in-out duration-300"
|
||||
initial={{ opacity: 0, y: 40 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
|
|
@ -375,7 +383,9 @@ const MyPage = () => {
|
|||
/>
|
||||
</motion.a>
|
||||
<motion.a
|
||||
href="#"
|
||||
href="https://www.linkedin.com/in/alvalen-shafel-8a081a254/"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="flex justify-center items-center bg-gray-500 w-14 h-14 rounded-full text-gray-100 hover:bg-gray-400 transition-all ease-in-out duration-300"
|
||||
initial={{ opacity: 0, y: 40 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
|
|
@ -389,7 +399,9 @@ const MyPage = () => {
|
|||
/>
|
||||
</motion.a>
|
||||
<motion.a
|
||||
href="#"
|
||||
href="https://discordapp.com/users/bloody#6118"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="flex justify-center items-center bg-gray-500 w-14 h-14 rounded-full text-gray-100 hover:bg-gray-400 transition-all ease-in-out duration-300"
|
||||
initial={{ opacity: 0, y: 40 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
display: block;
|
||||
position: fixed;
|
||||
z-index: 1031;
|
||||
top: 15px;
|
||||
top: 50px;
|
||||
right: 15px;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -10,6 +10,14 @@ 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";
|
||||
// main project image
|
||||
import ReactChatMain from "@/public/projects/main-project/react-chat.png";
|
||||
import ReactTools from "@/public/projects/main-project/react-tools.png";
|
||||
import AlephBot from "@/public/projects/main-project/aleph-bot.png";
|
||||
import LPTK from "@/public/projects/lptk/lptk1.png";
|
||||
import NUINO from "@/public/projects/ino/ino1.png";
|
||||
import UnmuhJember from "@/public/projects/unmuh/unmuh1.png";
|
||||
import Porto from "@/public/projects/porto/porto1.png";
|
||||
|
||||
import Hr from "@/components/Hr";
|
||||
|
||||
|
|
@ -19,7 +27,7 @@ const projects = [
|
|||
desc: "My second React project. This project is a realtime chat webapp that I created using ReactJS, Firebase, and TailwindCSS.",
|
||||
year: "2023",
|
||||
tech: "Javascript, React Js, Firebase, Daisy UI",
|
||||
bg: ReactChat3,
|
||||
bg: ReactChatMain,
|
||||
slug: "react-chat",
|
||||
},
|
||||
{
|
||||
|
|
@ -27,7 +35,7 @@ const projects = [
|
|||
desc: "My first React project. contain three main tools: Todo List, Note, and Expense Tracker that usefull for daily activity",
|
||||
year: "2023",
|
||||
tech: "Javascript, React Js, TailwindCSS",
|
||||
bg: ReactChat3,
|
||||
bg: ReactTools,
|
||||
slug: "react-tools",
|
||||
},
|
||||
{
|
||||
|
|
@ -35,7 +43,7 @@ const projects = [
|
|||
desc: "Discord bot that can search images on google and send the result to discord channel, with this bot you can search images on google without leaving discord.",
|
||||
year: "2023",
|
||||
tech: "Python, Serp API, Discord.py",
|
||||
bg: ReactChat3,
|
||||
bg: AlephBot,
|
||||
slug: "aleph-discord-bot",
|
||||
},
|
||||
{
|
||||
|
|
@ -43,7 +51,7 @@ const projects = [
|
|||
desc: "LPTK Cup 2023 is a website for a competition that held by Universitas Negeri Malang. This is my second freelance project using Laravel.",
|
||||
year: "2023",
|
||||
tech: "PHP, Laravel, Bootstrap, JQuery, MySQL",
|
||||
bg: ReactChat3,
|
||||
bg: LPTK,
|
||||
slug: "lptk-cup-2023",
|
||||
},
|
||||
{
|
||||
|
|
@ -51,7 +59,7 @@ const projects = [
|
|||
desc: "My first freelance project. This project is a website for a School based on a JALAKAR curriculum. The website is built mainly using Laravel and Bootstrap.",
|
||||
year: "2023",
|
||||
tech: "PHP, Laravel, Livewire, Bootstrap, JQuery, MySQL",
|
||||
bg: ReactChat3,
|
||||
bg: NUINO,
|
||||
slug: "nu-ino-website",
|
||||
},
|
||||
{
|
||||
|
|
@ -59,7 +67,7 @@ const projects = [
|
|||
desc: "Landing page for Universitas Muhammadiyah Jember. This web is made for competition held by Universitas Muhammadiyah Jember.",
|
||||
year: "2023",
|
||||
tech: "HTML, CSS, Javascript",
|
||||
bg: ReactChat3,
|
||||
bg: UnmuhJember,
|
||||
slug: "unmuh-jember-landing-page",
|
||||
},
|
||||
{
|
||||
|
|
@ -67,12 +75,13 @@ const projects = [
|
|||
desc: "My first portofolio website that i created using HTML, CSS, and Javascript. This website is the reason why i learn web development.",
|
||||
year: "2022",
|
||||
tech: "HTML, CSS, Javascript, Bootstrap",
|
||||
bg: ReactChat3,
|
||||
bg: Porto,
|
||||
slug: "my-first-portofolio-website",
|
||||
},
|
||||
];
|
||||
|
||||
export default function Page() {
|
||||
|
||||
useEffect(() => {
|
||||
window.scrollTo(0, 0);
|
||||
}, []);
|
||||
|
|
@ -320,8 +329,9 @@ export default function Page() {
|
|||
alt="Alvalens"
|
||||
layout="fill"
|
||||
objectFit="cover"
|
||||
placeholder="empty"
|
||||
placeholder="blur"
|
||||
className="bg-slate-950 opacity-10 group-hover/tes:opacity-100 transition-all ease duration-500"
|
||||
blurDataURL={project.bg.blurDataURL}
|
||||
/>
|
||||
<div className="absolute top-0 left-0 bg-gray-600 px-4 py-2">
|
||||
<h4 className="text-white">
|
||||
|
|
|
|||
|
|
@ -86,13 +86,13 @@ const NavItems = ({ isNavOpen, setIsNavOpen }) => {
|
|||
animate={isNavOpen ? "open" : "closed"}
|
||||
initial={false}>
|
||||
<div className="relative backdrop-blur-sm opacity-95 flex flex-col items-center space-x-8 min-h-[100vh] bg-gray-700 min-w-[100vw] ">
|
||||
<div className="flex flex-col items-center space-y-8 my-auto mx-0">
|
||||
<div className="lg:ml-64 flex flex-col items-center space-y-8 my-auto mx-0">
|
||||
{/* title */}
|
||||
<motion.h1
|
||||
animate={{ opacity: 1 }}
|
||||
initial={{ opacity: 0 }}
|
||||
transition={{ delay: 0.5, duration: 1 }}
|
||||
className="text-6xl font-bold text-white">
|
||||
className="text-6xl font-bold text-white ">
|
||||
Menu
|
||||
</motion.h1>
|
||||
<a href="/#home">
|
||||
|
|
@ -175,8 +175,8 @@ const Navbar = () => {
|
|||
<nav
|
||||
ref={navRef}
|
||||
className={`navbar px-5 md:px-24 w-screen fixed transition-colors ease duration-500 ${
|
||||
isNavOpen ? "bg-transparent" : "backdrop-filter backdrop-blur-xl"
|
||||
} inset-0 opacity-50 flex flex-row justify-between items-center h-16 z-50 `}>
|
||||
isNavOpen ? "bg-transparent" : "backdrop-filter backdrop-blur-md"
|
||||
} inset-0 bg-opacity-50 flex flex-row justify-between items-center h-16 z-50 `}>
|
||||
<div className="">
|
||||
<h1 className="text-2xl">Alvalens</h1>
|
||||
</div>
|
||||
|
|
@ -187,7 +187,7 @@ const Navbar = () => {
|
|||
<div
|
||||
className={`w-10 h-1 bg-black rounded-full transition-all ease duration-300 ${
|
||||
isNavOpen
|
||||
? "rotate-45 bg-white"
|
||||
? "rotate-45 bg-white translate-y-[2px]"
|
||||
: ""
|
||||
}`}></div>
|
||||
<div
|
||||
|
|
|
|||
|
|
@ -10,9 +10,10 @@
|
|||
"preview": "http://www.google.com",
|
||||
"code": "http://www.google.com",
|
||||
"images": [
|
||||
"/projects/lms.png",
|
||||
"/projects/lms.png",
|
||||
"/projects/lms.png"
|
||||
"/projects/chat/chat1.png",
|
||||
"/projects/chat/chat2.png",
|
||||
"/projects/chat/chat3.png",
|
||||
"/projects/chat/chat4.png"
|
||||
],
|
||||
"tech": [
|
||||
"JavaScript",
|
||||
|
|
@ -36,9 +37,10 @@
|
|||
"preview": "http://www.google.com",
|
||||
"code": "http://www.google.com",
|
||||
"images": [
|
||||
"/projects/lms.png",
|
||||
"/projects/lms.png",
|
||||
"/projects/lms.png"
|
||||
"/projects/tools/tools.png",
|
||||
"/projects/tools/tools1.png",
|
||||
"/projects/tools/tools2.png",
|
||||
"/projects/tools/tools3.png"
|
||||
],
|
||||
"tech": [
|
||||
"Javascript",
|
||||
|
|
@ -56,14 +58,13 @@
|
|||
"preview": "http://www.google.com",
|
||||
"code": "http://www.google.com",
|
||||
"images": [
|
||||
"/projects/lms.png",
|
||||
"/projects/lms.png",
|
||||
"/projects/lms.png"
|
||||
"/projects/bot/bot1.png",
|
||||
"/projects/bot/bot2.png"
|
||||
],
|
||||
"tech": [
|
||||
"Python",
|
||||
"Discord.py",
|
||||
"Serp API"
|
||||
"Google Serp API"
|
||||
],
|
||||
"slug": "aleph-discord-bot"
|
||||
},
|
||||
|
|
@ -77,9 +78,10 @@
|
|||
"preview": "",
|
||||
"code": "",
|
||||
"images": [
|
||||
"/projects/lms.png",
|
||||
"/projects/lms.png",
|
||||
"/projects/lms.png"
|
||||
"/projects/lptk/lptk1.png",
|
||||
"/projects/lptk/lptk2.png",
|
||||
"/projects/lptk/lptk3.png",
|
||||
"/projects/lptk/lptk3.png"
|
||||
],
|
||||
"tech": [
|
||||
"PHP",
|
||||
|
|
@ -99,9 +101,9 @@
|
|||
"preview": "",
|
||||
"code": "",
|
||||
"images": [
|
||||
"/projects/lms.png",
|
||||
"/projects/lms.png",
|
||||
"/projects/lms.png"
|
||||
"/projects/ino/ino1.png",
|
||||
"/projects/ino/ino2.png",
|
||||
"/projects/ino/ino3.png"
|
||||
],
|
||||
"tech": [
|
||||
"PHP",
|
||||
|
|
@ -124,9 +126,9 @@
|
|||
"preview": "https://alvalens.github.io/unmuh-jember-landing-page/",
|
||||
"code": "https://github.com/Alvalens/unmuh-jember-landing-page",
|
||||
"images": [
|
||||
"/projects/lms.png",
|
||||
"/projects/lms.png",
|
||||
"/projects/lms.png"
|
||||
"/projects/unmuh/unmuh1.png",
|
||||
"/projects/unmuh/unmuh2.png",
|
||||
"/projects/unmuh/unmuh3.png"
|
||||
],
|
||||
"tech": [
|
||||
"HTML",
|
||||
|
|
@ -145,17 +147,18 @@
|
|||
"preview": "",
|
||||
"code": "",
|
||||
"images": [
|
||||
"/projects/lms.png",
|
||||
"/projects/lms.png",
|
||||
"/projects/lms.png"
|
||||
"/projects/porto/porto1.png",
|
||||
"/projects/porto/porto2.png",
|
||||
"/projects/porto/porto3.png"
|
||||
],
|
||||
"tech": [
|
||||
"HTML",
|
||||
"Bootstrap",
|
||||
"CSS",
|
||||
"AOS",
|
||||
"JavaScript"
|
||||
],
|
||||
"slug": "my-first-portfolio-website"
|
||||
"slug": "my-first-portofolio-website"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
/** @type {import('next').NextConfig} */
|
||||
const nextConfig = {}
|
||||
|
||||
module.exports = nextConfig
|
||||
const withBundleAnalyzer = require("@next/bundle-analyzer")({
|
||||
enabled: process.env.ANALYZE === "true",
|
||||
});
|
||||
module.exports = withBundleAnalyzer({
|
||||
// your Next.js configuration
|
||||
});
|
||||
|
|
|
|||
|
|
@ -26,5 +26,9 @@
|
|||
"react-dom": "18.2.0",
|
||||
"swr": "^2.2.2",
|
||||
"tailwindcss": "3.3.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@next/bundle-analyzer": "^13.4.19",
|
||||
"cross-env": "^7.0.3"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
123
pnpm-lock.yaml
generated
|
|
@ -57,6 +57,14 @@ dependencies:
|
|||
specifier: 3.3.3
|
||||
version: 3.3.3
|
||||
|
||||
devDependencies:
|
||||
'@next/bundle-analyzer':
|
||||
specifier: ^13.4.19
|
||||
version: 13.4.19
|
||||
cross-env:
|
||||
specifier: ^7.0.3
|
||||
version: 7.0.3
|
||||
|
||||
packages:
|
||||
|
||||
/@aashutoshrathi/word-wrap@1.2.6:
|
||||
|
|
@ -241,6 +249,15 @@ packages:
|
|||
'@jridgewell/sourcemap-codec': 1.4.15
|
||||
dev: false
|
||||
|
||||
/@next/bundle-analyzer@13.4.19:
|
||||
resolution: {integrity: sha512-nXKHz63dM0Kn3XPFOKrv2wK+hP9rdBg2iR1PsxuXLHVBoZhMyS1/ldRcX80YFsm2VUws9zM4a0E/1HlLI+P92g==}
|
||||
dependencies:
|
||||
webpack-bundle-analyzer: 4.7.0
|
||||
transitivePeerDependencies:
|
||||
- bufferutil
|
||||
- utf-8-validate
|
||||
dev: true
|
||||
|
||||
/@next/env@13.4.19:
|
||||
resolution: {integrity: sha512-FsAT5x0jF2kkhNkKkukhsyYOrRqtSxrEhfliniIq0bwWbuXLgyt3Gv0Ml+b91XwjwArmuP7NxCiGd++GGKdNMQ==}
|
||||
dev: false
|
||||
|
|
@ -353,6 +370,10 @@ packages:
|
|||
fastq: 1.15.0
|
||||
dev: false
|
||||
|
||||
/@polka/url@1.0.0-next.21:
|
||||
resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==}
|
||||
dev: true
|
||||
|
||||
/@rushstack/eslint-patch@1.3.3:
|
||||
resolution: {integrity: sha512-0xd7qez0AQ+MbHatZTlI1gu5vkG8r7MYRUJAHPAHJBmGLs16zpkrpAVLvjQKQOqaXPDUBwOiJzNc00znHSCVBw==}
|
||||
dev: false
|
||||
|
|
@ -438,11 +459,15 @@ packages:
|
|||
acorn: 8.10.0
|
||||
dev: false
|
||||
|
||||
/acorn-walk@8.2.0:
|
||||
resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==}
|
||||
engines: {node: '>=0.4.0'}
|
||||
dev: true
|
||||
|
||||
/acorn@8.10.0:
|
||||
resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==}
|
||||
engines: {node: '>=0.4.0'}
|
||||
hasBin: true
|
||||
dev: false
|
||||
|
||||
/ajv@6.12.6:
|
||||
resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
|
||||
|
|
@ -463,7 +488,6 @@ packages:
|
|||
engines: {node: '>=8'}
|
||||
dependencies:
|
||||
color-convert: 2.0.1
|
||||
dev: false
|
||||
|
||||
/any-promise@1.3.0:
|
||||
resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
|
||||
|
|
@ -677,7 +701,6 @@ packages:
|
|||
dependencies:
|
||||
ansi-styles: 4.3.0
|
||||
supports-color: 7.2.0
|
||||
dev: false
|
||||
|
||||
/chokidar@3.5.3:
|
||||
resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
|
||||
|
|
@ -703,17 +726,20 @@ packages:
|
|||
engines: {node: '>=7.0.0'}
|
||||
dependencies:
|
||||
color-name: 1.1.4
|
||||
dev: false
|
||||
|
||||
/color-name@1.1.4:
|
||||
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
|
||||
dev: false
|
||||
|
||||
/commander@4.1.1:
|
||||
resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
|
||||
engines: {node: '>= 6'}
|
||||
dev: false
|
||||
|
||||
/commander@7.2.0:
|
||||
resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
|
||||
engines: {node: '>= 10'}
|
||||
dev: true
|
||||
|
||||
/concat-map@0.0.1:
|
||||
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
|
||||
dev: false
|
||||
|
|
@ -724,6 +750,14 @@ packages:
|
|||
requiresBuild: true
|
||||
dev: false
|
||||
|
||||
/cross-env@7.0.3:
|
||||
resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==}
|
||||
engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
cross-spawn: 7.0.3
|
||||
dev: true
|
||||
|
||||
/cross-spawn@7.0.3:
|
||||
resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
|
||||
engines: {node: '>= 8'}
|
||||
|
|
@ -731,7 +765,6 @@ packages:
|
|||
path-key: 3.1.1
|
||||
shebang-command: 2.0.0
|
||||
which: 2.0.2
|
||||
dev: false
|
||||
|
||||
/cssesc@3.0.0:
|
||||
resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
|
||||
|
|
@ -812,6 +845,10 @@ packages:
|
|||
esutils: 2.0.3
|
||||
dev: false
|
||||
|
||||
/duplexer@0.1.2:
|
||||
resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==}
|
||||
dev: true
|
||||
|
||||
/electron-to-chromium@1.4.504:
|
||||
resolution: {integrity: sha512-cSMwIAd8yUh54VwitVRVvHK66QqHWE39C3DRj8SWiXitEpVSY3wNPD9y1pxQtLIi4w3UdzF9klLsmuPshz09DQ==}
|
||||
dev: false
|
||||
|
|
@ -1440,6 +1477,13 @@ packages:
|
|||
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
|
||||
dev: false
|
||||
|
||||
/gzip-size@6.0.0:
|
||||
resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==}
|
||||
engines: {node: '>=10'}
|
||||
dependencies:
|
||||
duplexer: 0.1.2
|
||||
dev: true
|
||||
|
||||
/has-bigints@1.0.2:
|
||||
resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
|
||||
dev: false
|
||||
|
|
@ -1447,7 +1491,6 @@ packages:
|
|||
/has-flag@4.0.0:
|
||||
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
|
||||
engines: {node: '>=8'}
|
||||
dev: false
|
||||
|
||||
/has-property-descriptors@1.0.0:
|
||||
resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==}
|
||||
|
|
@ -1684,7 +1727,6 @@ packages:
|
|||
|
||||
/isexe@2.0.0:
|
||||
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
|
||||
dev: false
|
||||
|
||||
/iterator.prototype@1.1.0:
|
||||
resolution: {integrity: sha512-rjuhAk1AJ1fssphHD0IFV6TWL40CwRZ53FrztKx43yk2v6rguBYsY4Bj1VU4HmoMmKwZUlx7mfnhDf9cOp4YTw==}
|
||||
|
|
@ -1785,6 +1827,10 @@ packages:
|
|||
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
|
||||
dev: false
|
||||
|
||||
/lodash@4.17.21:
|
||||
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
|
||||
dev: true
|
||||
|
||||
/loose-envify@1.4.0:
|
||||
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
|
||||
hasBin: true
|
||||
|
|
@ -1822,6 +1868,11 @@ packages:
|
|||
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
|
||||
dev: false
|
||||
|
||||
/mrmime@1.0.1:
|
||||
resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==}
|
||||
engines: {node: '>=10'}
|
||||
dev: true
|
||||
|
||||
/ms@2.1.2:
|
||||
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
|
||||
dev: false
|
||||
|
|
@ -1984,6 +2035,11 @@ packages:
|
|||
wrappy: 1.0.2
|
||||
dev: false
|
||||
|
||||
/opener@1.5.2:
|
||||
resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==}
|
||||
hasBin: true
|
||||
dev: true
|
||||
|
||||
/optionator@0.9.3:
|
||||
resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==}
|
||||
engines: {node: '>= 0.8.0'}
|
||||
|
|
@ -2030,7 +2086,6 @@ packages:
|
|||
/path-key@3.1.1:
|
||||
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
|
||||
engines: {node: '>=8'}
|
||||
dev: false
|
||||
|
||||
/path-parse@1.0.7:
|
||||
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
|
||||
|
|
@ -2311,12 +2366,10 @@ packages:
|
|||
engines: {node: '>=8'}
|
||||
dependencies:
|
||||
shebang-regex: 3.0.0
|
||||
dev: false
|
||||
|
||||
/shebang-regex@3.0.0:
|
||||
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
|
||||
engines: {node: '>=8'}
|
||||
dev: false
|
||||
|
||||
/side-channel@1.0.4:
|
||||
resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
|
||||
|
|
@ -2326,6 +2379,15 @@ packages:
|
|||
object-inspect: 1.12.3
|
||||
dev: false
|
||||
|
||||
/sirv@1.0.19:
|
||||
resolution: {integrity: sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==}
|
||||
engines: {node: '>= 10'}
|
||||
dependencies:
|
||||
'@polka/url': 1.0.0-next.21
|
||||
mrmime: 1.0.1
|
||||
totalist: 1.1.0
|
||||
dev: true
|
||||
|
||||
/slash@3.0.0:
|
||||
resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
|
||||
engines: {node: '>=8'}
|
||||
|
|
@ -2432,7 +2494,6 @@ packages:
|
|||
engines: {node: '>=8'}
|
||||
dependencies:
|
||||
has-flag: 4.0.0
|
||||
dev: false
|
||||
|
||||
/supports-preserve-symlinks-flag@1.0.0:
|
||||
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
|
||||
|
|
@ -2509,6 +2570,11 @@ packages:
|
|||
is-number: 7.0.0
|
||||
dev: false
|
||||
|
||||
/totalist@1.1.0:
|
||||
resolution: {integrity: sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==}
|
||||
engines: {node: '>=6'}
|
||||
dev: true
|
||||
|
||||
/ts-api-utils@1.0.2(typescript@5.2.2):
|
||||
resolution: {integrity: sha512-Cbu4nIqnEdd+THNEsBdkolnOXhg0I8XteoHaEKgvsxpsbWda4IsUut2c187HxywQCvveojow0Dgw/amxtSKVkQ==}
|
||||
engines: {node: '>=16.13.0'}
|
||||
|
|
@ -2637,6 +2703,25 @@ packages:
|
|||
graceful-fs: 4.2.11
|
||||
dev: false
|
||||
|
||||
/webpack-bundle-analyzer@4.7.0:
|
||||
resolution: {integrity: sha512-j9b8ynpJS4K+zfO5GGwsAcQX4ZHpWV+yRiHDiL+bE0XHJ8NiPYLTNVQdlFYWxtpg9lfAQNlwJg16J9AJtFSXRg==}
|
||||
engines: {node: '>= 10.13.0'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
acorn: 8.10.0
|
||||
acorn-walk: 8.2.0
|
||||
chalk: 4.1.2
|
||||
commander: 7.2.0
|
||||
gzip-size: 6.0.0
|
||||
lodash: 4.17.21
|
||||
opener: 1.5.2
|
||||
sirv: 1.0.19
|
||||
ws: 7.5.9
|
||||
transitivePeerDependencies:
|
||||
- bufferutil
|
||||
- utf-8-validate
|
||||
dev: true
|
||||
|
||||
/which-boxed-primitive@1.0.2:
|
||||
resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
|
||||
dependencies:
|
||||
|
|
@ -2691,12 +2776,24 @@ packages:
|
|||
hasBin: true
|
||||
dependencies:
|
||||
isexe: 2.0.0
|
||||
dev: false
|
||||
|
||||
/wrappy@1.0.2:
|
||||
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
|
||||
dev: false
|
||||
|
||||
/ws@7.5.9:
|
||||
resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==}
|
||||
engines: {node: '>=8.3.0'}
|
||||
peerDependencies:
|
||||
bufferutil: ^4.0.1
|
||||
utf-8-validate: ^5.0.2
|
||||
peerDependenciesMeta:
|
||||
bufferutil:
|
||||
optional: true
|
||||
utf-8-validate:
|
||||
optional: true
|
||||
dev: true
|
||||
|
||||
/yallist@4.0.0:
|
||||
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
|
||||
dev: false
|
||||
|
|
|
|||
BIN
public/projects/bot/bot1.png
Normal file
|
After Width: | Height: | Size: 572 KiB |
BIN
public/projects/bot/bot2.png
Normal file
|
After Width: | Height: | Size: 490 KiB |
BIN
public/projects/chat/chat1.png
Normal file
|
After Width: | Height: | Size: 69 KiB |
BIN
public/projects/chat/chat2.png
Normal file
|
After Width: | Height: | Size: 151 KiB |
BIN
public/projects/chat/chat3.png
Normal file
|
After Width: | Height: | Size: 102 KiB |
BIN
public/projects/chat/chat4.png
Normal file
|
After Width: | Height: | Size: 84 KiB |
BIN
public/projects/ino/ino1.png
Normal file
|
After Width: | Height: | Size: 266 KiB |
BIN
public/projects/ino/ino2.png
Normal file
|
After Width: | Height: | Size: 618 KiB |
BIN
public/projects/ino/ino3.png
Normal file
|
After Width: | Height: | Size: 211 KiB |
BIN
public/projects/lptk/lptk1.png
Normal file
|
After Width: | Height: | Size: 2.1 MiB |
BIN
public/projects/lptk/lptk2.png
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
public/projects/lptk/lptk3.png
Normal file
|
After Width: | Height: | Size: 576 KiB |
BIN
public/projects/lptk/lptk4.png
Normal file
|
After Width: | Height: | Size: 136 KiB |
BIN
public/projects/main-project/aleph-bot.png
Normal file
|
After Width: | Height: | Size: 481 KiB |
BIN
public/projects/main-project/react-chat.png
Normal file
|
After Width: | Height: | Size: 345 KiB |
BIN
public/projects/main-project/react-tools.png
Normal file
|
After Width: | Height: | Size: 334 KiB |
BIN
public/projects/porto/porto1.png
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
public/projects/porto/porto2.png
Normal file
|
After Width: | Height: | Size: 237 KiB |
BIN
public/projects/porto/porto3.png
Normal file
|
After Width: | Height: | Size: 106 KiB |
BIN
public/projects/tools/tools.png
Normal file
|
After Width: | Height: | Size: 104 KiB |
BIN
public/projects/tools/tools1.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
public/projects/tools/tools2.png
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
public/projects/tools/tools3.png
Normal file
|
After Width: | Height: | Size: 54 KiB |
BIN
public/projects/unmuh/unmuh1.png
Normal file
|
After Width: | Height: | Size: 3.3 MiB |
BIN
public/projects/unmuh/unmuh2.png
Normal file
|
After Width: | Height: | Size: 193 KiB |
BIN
public/projects/unmuh/unmuh3.png
Normal file
|
After Width: | Height: | Size: 86 KiB |