Fixed anded some cringe stuff
This commit is contained in:
parent
8a72520df5
commit
6c14b74ed0
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
"presets": ["next/babel"],
|
||||||
|
"plugins": [
|
||||||
|
[
|
||||||
|
"styled-components",
|
||||||
|
{
|
||||||
|
"ssr": true,
|
||||||
|
"displayName": true,
|
||||||
|
"preprocess": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
import { name, LanguagesKnown, description1, description2 } from "config";
|
||||||
|
import { AboutStyle } from "./about.style";
|
||||||
|
|
||||||
|
function about() {
|
||||||
|
// console.log(LanguagesKnown);
|
||||||
|
return (
|
||||||
|
<AboutStyle>
|
||||||
|
<div className="default">
|
||||||
|
<div className="content">
|
||||||
|
<p>{description1}</p>
|
||||||
|
</div>
|
||||||
|
<div className="lang-map">
|
||||||
|
{LanguagesKnown.map((lang) => {
|
||||||
|
return (
|
||||||
|
<div className="lang-map-element" key={lang}>
|
||||||
|
{lang}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
</div>
|
||||||
|
<div className="content-2">
|
||||||
|
<p>{description2}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</AboutStyle>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default about;
|
|
@ -0,0 +1,52 @@
|
||||||
|
import styled from "styled-components";
|
||||||
|
|
||||||
|
export const AboutStyle = styled.div`
|
||||||
|
background-color: var(--color1);
|
||||||
|
.default {
|
||||||
|
align-items: center;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
text-align: center;
|
||||||
|
padding-top: 8em;
|
||||||
|
padding-bottom: 8em;
|
||||||
|
/* overflow-y: auto; */
|
||||||
|
}
|
||||||
|
.content {
|
||||||
|
margin-top: 1em;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
margin-left: 1.3em;
|
||||||
|
margin-right: 1.3em;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 1.3em;
|
||||||
|
color: var(--color3);
|
||||||
|
}
|
||||||
|
.content-2 {
|
||||||
|
margin-top: 1em;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
margin-left: 1.3em;
|
||||||
|
margin-right: 1.3em;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 1.3em;
|
||||||
|
color: var(--color4);
|
||||||
|
}
|
||||||
|
.lang-map {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: space-around;
|
||||||
|
margin-left: 1.7em;
|
||||||
|
margin-right: 1.7em;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.lang-map-element {
|
||||||
|
padding: 5px;
|
||||||
|
border-radius: 20px;
|
||||||
|
margin: 2px;
|
||||||
|
/* background-color: #${Math.random().toString(16).substring(2, 6)}; */
|
||||||
|
background-color: #eeb90ac2;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 1.1em;
|
||||||
|
color: #f5f5f5;
|
||||||
|
flex: 0 1 20%;
|
||||||
|
}
|
||||||
|
`;
|
|
@ -2,7 +2,7 @@ import React from "react";
|
||||||
import ArtCardStyle from "./artCard.style";
|
import ArtCardStyle from "./artCard.style";
|
||||||
import ArtModel from "./artModal";
|
import ArtModel from "./artModal";
|
||||||
|
|
||||||
function SkillCard({ name, description, image, onClick }) {
|
function SkillCard({ name, description, image, type, onClick }) {
|
||||||
const [open, setOpen] = React.useState(false);
|
const [open, setOpen] = React.useState(false);
|
||||||
const handleClose = () => {
|
const handleClose = () => {
|
||||||
setOpen(false);
|
setOpen(false);
|
||||||
|
@ -24,6 +24,7 @@ function SkillCard({ name, description, image, onClick }) {
|
||||||
<b>{name}</b>
|
<b>{name}</b>
|
||||||
</div>
|
</div>
|
||||||
<div className="content">{description}</div>
|
<div className="content">{description}</div>
|
||||||
|
<div className="type">#{type}</div>
|
||||||
</div>
|
</div>
|
||||||
</ArtCardStyle>
|
</ArtCardStyle>
|
||||||
<ArtModel open={open} onClose={handleClose}>
|
<ArtModel open={open} onClose={handleClose}>
|
||||||
|
|
|
@ -8,7 +8,9 @@ export default styled.div`
|
||||||
background-color: #8609d4;
|
background-color: #8609d4;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
margin: 5px;
|
margin: 5px;
|
||||||
|
.type {
|
||||||
|
color: var(--color1);
|
||||||
|
}
|
||||||
.card-logo {
|
.card-logo {
|
||||||
display: flex;
|
display: flex;
|
||||||
/* width: 100%; */
|
/* width: 100%; */
|
||||||
|
|
|
@ -23,7 +23,7 @@ const LINKS = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Art / Projects",
|
title: "Art / Projects",
|
||||||
href: "/art",
|
href: "/projects",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Blog",
|
title: "Blog",
|
||||||
|
|
|
@ -0,0 +1,98 @@
|
||||||
|
import { darkScrollbar } from "@mui/material";
|
||||||
|
import { useRef, useEffect } from "react";
|
||||||
|
|
||||||
|
const Cursor = () => {
|
||||||
|
const delay = 18;
|
||||||
|
const dot = useRef(null);
|
||||||
|
const dotOutline = useRef(null);
|
||||||
|
const cursorVisaible = useRef(true);
|
||||||
|
const cursorEnlarge = useRef(false);
|
||||||
|
|
||||||
|
const endX = useRef(window.innerWidth / 2);
|
||||||
|
const endY = useRef(window.innerHeight / 2);
|
||||||
|
const _x = useRef(0);
|
||||||
|
const _y = useRef(0);
|
||||||
|
|
||||||
|
const requestRef = useRef(null);
|
||||||
|
useEffect(() => {
|
||||||
|
document.addEventListener("mousedown", mouseOverEvent);
|
||||||
|
document.addEventListener("mouseup", mouseOutEvent);
|
||||||
|
document.addEventListener("mousemove", mouseMoveEvent);
|
||||||
|
document.addEventListener("mouseenter", mouseEnterEvent);
|
||||||
|
document.addEventListener("mouseleave", mouseLeaveEvent);
|
||||||
|
console.log("Cursor Mounted");
|
||||||
|
animateDotOutline();
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
document.removeEventListener("mousedown", mouseOverEvent);
|
||||||
|
document.removeEventListener("mouseup", mouseOutEvent);
|
||||||
|
document.removeEventListener("mousemove", mouseMoveEvent);
|
||||||
|
document.removeEventListener("mouseenter", mouseEnterEvent);
|
||||||
|
document.removeEventListener("mouseleave", mouseLeaveEvent);
|
||||||
|
cancelAnimationFrame(requestRef.current);
|
||||||
|
console.log("Cursor Unmounted");
|
||||||
|
};
|
||||||
|
});
|
||||||
|
const toggleCursorVisaible = () => {
|
||||||
|
if (cursorVisaible.current) {
|
||||||
|
dot.current.style.opacity = 1;
|
||||||
|
dotOutline.current.style.opacity = 1;
|
||||||
|
} else {
|
||||||
|
dot.current.style.opacity = 0;
|
||||||
|
dotOutline.current.style.opacity = 0;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const toggleCursorSize = () => {
|
||||||
|
if (cursorEnlarge.current) {
|
||||||
|
dot.current.style.transform = "transform(-50%, -50%) scale(0.75)";
|
||||||
|
dotOutline.current.style.transform = "transform(-50%, -50%) scale(1.50)";
|
||||||
|
} else {
|
||||||
|
dot.current.style.transform = "transform(-50%, -50%) scale(1)";
|
||||||
|
dotOutline.current.style.transform = "transform(-50%, -50%) scale(1)";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const mouseOverEvent = () => {
|
||||||
|
cursorVisaible.current = true;
|
||||||
|
toggleCursorSize();
|
||||||
|
};
|
||||||
|
|
||||||
|
const mouseOutEvent = () => {
|
||||||
|
cursorVisaible.current = false;
|
||||||
|
toggleCursorSize();
|
||||||
|
};
|
||||||
|
|
||||||
|
const mouseEnterEvent = (e) => {
|
||||||
|
cursorVisaible.current = true;
|
||||||
|
toggleCursorVisaible();
|
||||||
|
};
|
||||||
|
|
||||||
|
const mouseLeaveEvent = () => {
|
||||||
|
cursorVisaible.current = false;
|
||||||
|
toggleCursorVisaible();
|
||||||
|
};
|
||||||
|
const mouseMoveEvent = (e) => {
|
||||||
|
cursorVisaible.current = true;
|
||||||
|
toggleCursorVisaible();
|
||||||
|
endX.current = e.pageX;
|
||||||
|
endY.current = e.pageY;
|
||||||
|
|
||||||
|
dot.current.style.top = endY.current + "px";
|
||||||
|
dot.current.style.left = endX.current + "px";
|
||||||
|
};
|
||||||
|
const animateDotOutline = () => {
|
||||||
|
_x.current += (endX.current - _x.current) / delay;
|
||||||
|
_y.current += (endY.current - _y.current) / delay;
|
||||||
|
|
||||||
|
dotOutline.current.style.top = _y.current + "px";
|
||||||
|
dotOutline.current.style.left = _x.current + "px";
|
||||||
|
};
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<div ref={dotOutline} className="cursor-dot-outline"></div>
|
||||||
|
<div ref={dot} className="cursor-dot"></div>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Cursor;
|
|
@ -6,6 +6,7 @@ import { APISDK } from "handlers/sdk";
|
||||||
import Box from "@mui/material/Box";
|
import Box from "@mui/material/Box";
|
||||||
import LinearProgress from "@mui/material/LinearProgress";
|
import LinearProgress from "@mui/material/LinearProgress";
|
||||||
// import "mainboard.css";
|
// import "mainboard.css";
|
||||||
|
import Cursor, { mouseOverEvent, mouseOutEvent } from "./providers/cursor";
|
||||||
|
|
||||||
// Skill Card templates
|
// Skill Card templates
|
||||||
import GitHubSkillCard from "./skillComponents/github_user";
|
import GitHubSkillCard from "./skillComponents/github_user";
|
||||||
|
@ -65,6 +66,7 @@ function Skills() {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
|
<Cursor />
|
||||||
{!loading && (
|
{!loading && (
|
||||||
<SkillsStyle>
|
<SkillsStyle>
|
||||||
<div className="mainboard__container">
|
<div className="mainboard__container">
|
||||||
|
@ -77,6 +79,8 @@ function Skills() {
|
||||||
following={skills?.gh_user?.data?.following}
|
following={skills?.gh_user?.data?.following}
|
||||||
public_gists={skills?.gh_user?.data?.public_gists}
|
public_gists={skills?.gh_user?.data?.public_gists}
|
||||||
created_at={skills?.gh_user?.data?.created_at}
|
created_at={skills?.gh_user?.data?.created_at}
|
||||||
|
mouseOverEvent={mouseOverEvent}
|
||||||
|
mouseOutEvent={mouseOutEvent}
|
||||||
/>
|
/>
|
||||||
<OsuUserSkillCard
|
<OsuUserSkillCard
|
||||||
title={"Osu! Player Stats"}
|
title={"Osu! Player Stats"}
|
||||||
|
|
28
config.js
28
config.js
|
@ -11,9 +11,32 @@ export const resume_url = "";
|
||||||
export const facebook_url = "https://www.facebook.com/Bravo68Web/";
|
export const facebook_url = "https://www.facebook.com/Bravo68Web/";
|
||||||
export const discord_id = "457039372009865226";
|
export const discord_id = "457039372009865226";
|
||||||
export const discord_profile = "";
|
export const discord_profile = "";
|
||||||
|
export const description1 =
|
||||||
|
"I am Jyotirmoy Bandyopadhayaya, AKA Bravo68web, 19, a student developer from India with passion in API and microservices development. I have expertice in DevOps and Full Stack development. I am a self taught developer and I am always looking for new challenges to learn and grow.";
|
||||||
|
export const description2 =
|
||||||
|
"I love Cats 😻 and I love to code and I love to play FPS shooting games.";
|
||||||
|
export const LanguagesKnown = [
|
||||||
|
"NodeJS",
|
||||||
|
"Python",
|
||||||
|
"TypeScript",
|
||||||
|
"C++",
|
||||||
|
"C",
|
||||||
|
"SQL",
|
||||||
|
"Rust",
|
||||||
|
"Go",
|
||||||
|
"Bash",
|
||||||
|
"Java",
|
||||||
|
"Docker",
|
||||||
|
"AWS",
|
||||||
|
"GCP",
|
||||||
|
"Cloud Computing",
|
||||||
|
"Git",
|
||||||
|
"Linux",
|
||||||
|
];
|
||||||
export const projects = [
|
export const projects = [
|
||||||
{
|
{
|
||||||
name: "URL Minify",
|
name: "URL Minify",
|
||||||
|
type: "project",
|
||||||
description:
|
description:
|
||||||
"Open Source | URL Minify is a simple URL shortener service that allows you to shorten any URL and redirect to the original URL.",
|
"Open Source | URL Minify is a simple URL shortener service that allows you to shorten any URL and redirect to the original URL.",
|
||||||
image:
|
image:
|
||||||
|
@ -21,27 +44,32 @@ export const projects = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "API",
|
name: "API",
|
||||||
|
type: "project",
|
||||||
description:
|
description:
|
||||||
"Bravo68web API solely devloped by me to provide a data on and needed by me on daily basis.",
|
"Bravo68web API solely devloped by me to provide a data on and needed by me on daily basis.",
|
||||||
image: "https://api.b68dev.xyz/logo",
|
image: "https://api.b68dev.xyz/logo",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Karyl #1",
|
name: "Karyl #1",
|
||||||
|
type: "art",
|
||||||
description: "Drawn Princess Connect : Re-Dive charecter #1",
|
description: "Drawn Princess Connect : Re-Dive charecter #1",
|
||||||
image: "/images/art/karyl-2-final-3b.png",
|
image: "/images/art/karyl-2-final-3b.png",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Karyl #2",
|
name: "Karyl #2",
|
||||||
|
type: "art",
|
||||||
description: "Drawn Princess Connect : Re-Dive charecter #2",
|
description: "Drawn Princess Connect : Re-Dive charecter #2",
|
||||||
image: "/images/art/karyl-2-final.png",
|
image: "/images/art/karyl-2-final.png",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Ayaka",
|
name: "Ayaka",
|
||||||
|
type: "art",
|
||||||
description: "Drawing of Ayaka from the Genshin Impact game",
|
description: "Drawing of Ayaka from the Genshin Impact game",
|
||||||
image: "/images/art/H12M27S20.smoothed_careful.png",
|
image: "/images/art/H12M27S20.smoothed_careful.png",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Kirby",
|
name: "Kirby",
|
||||||
|
type: "art",
|
||||||
description: "A Student, Full Stack and DevOps Platform Developer",
|
description: "A Student, Full Stack and DevOps Platform Developer",
|
||||||
image: "/images/art/Final_best.png",
|
image: "/images/art/Final_best.png",
|
||||||
},
|
},
|
||||||
|
|
|
@ -27,16 +27,21 @@
|
||||||
"@mui/material": "^5.3.0",
|
"@mui/material": "^5.3.0",
|
||||||
"@pdftron/webviewer": "^8.3.3",
|
"@pdftron/webviewer": "^8.3.3",
|
||||||
"axios": "^0.26.1",
|
"axios": "^0.26.1",
|
||||||
|
"core-js": "^3.21.1",
|
||||||
|
"cursor-react": "^1.0.3",
|
||||||
"date-format-parse": "^0.2.7",
|
"date-format-parse": "^0.2.7",
|
||||||
"fs-extra": "^10.0.1",
|
"fs-extra": "^10.0.1",
|
||||||
"next": "^12.1.4",
|
"next": "^12.1.4",
|
||||||
|
"next-connect": "^0.12.2",
|
||||||
"react": "^17.0.2",
|
"react": "^17.0.2",
|
||||||
"react-dom": "^17.0.2",
|
"react-dom": "^17.0.2",
|
||||||
"react-use-lanyard": "^0.1.1",
|
"react-use-lanyard": "^0.1.1",
|
||||||
|
"sitemap": "^7.1.1",
|
||||||
"styled-components": "^5.3.3",
|
"styled-components": "^5.3.3",
|
||||||
"use-last-fm": "https://github.com/BRAVO68WEB/use-last-fm"
|
"use-last-fm": "https://github.com/BRAVO68WEB/use-last-fm"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"babel-plugin-styled-components": "^2.0.7",
|
||||||
"eslint": "^7.32.0",
|
"eslint": "^7.32.0",
|
||||||
"eslint-config-next": "12.0.4"
|
"eslint-config-next": "12.0.4"
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
import Head from "next/head";
|
||||||
|
import Nav from "components/nav";
|
||||||
|
import About from "components/about";
|
||||||
|
import Footer from "components/footer";
|
||||||
|
|
||||||
|
export default function Home() {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<Head>
|
||||||
|
<title>
|
||||||
|
About | Jyotirmoy Bandyopadhayaya | Full Stack Web Developer and
|
||||||
|
DevOps Engineer
|
||||||
|
</title>
|
||||||
|
<meta
|
||||||
|
name="description"
|
||||||
|
content="Jyotirmoy Bandyopadhayaya's Website | A Student, Full Stack and DevOps Platform Developer | Jyotirmoy Bandyopadhayaya's Tech Stack"
|
||||||
|
/>
|
||||||
|
<meta
|
||||||
|
name="keywords"
|
||||||
|
content="bravo, bravo68web, Jyotirmoy, Bandyopadhayaya, dev, web, Full Stack Developer, DevOps, gcp, linux, server, api, rest, lpu"
|
||||||
|
/>
|
||||||
|
<meta name="language" content="EN" />
|
||||||
|
<meta name="author" content="Jyotirmoy Bandyopadhayaya | Bravo68web" />
|
||||||
|
<meta
|
||||||
|
name="publisher"
|
||||||
|
content="Jyotirmoy Bandyopadhayaya | Bravo68web"
|
||||||
|
/>
|
||||||
|
<link rel="icon" href="/favicon.ico" />
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" />
|
||||||
|
<link
|
||||||
|
href="https://fonts.googleapis.com/css2?family=Roboto+Mono:ital,wght@0,200;0,300;0,400;0,500;0,600;0,700;1,200;1,300;1,400;1,500;1,600;1,700&display=swap"
|
||||||
|
rel="stylesheet"
|
||||||
|
/>
|
||||||
|
</Head>
|
||||||
|
<Nav />
|
||||||
|
<About />
|
||||||
|
|
||||||
|
{/* <Footer /> */}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
import nc from "next-connect";
|
||||||
|
const handler = nc();
|
||||||
|
export default handler.get(async (req, res) => {
|
||||||
|
// Get the all Blog posts
|
||||||
|
|
||||||
|
const { createWriteStream } = require("fs");
|
||||||
|
const { SitemapStream } = require("sitemap");
|
||||||
|
const sitemap = new SitemapStream({
|
||||||
|
hostname: "https://itsmebravo.dev",
|
||||||
|
});
|
||||||
|
const writeStream = createWriteStream("./public/sitemap.xml");
|
||||||
|
|
||||||
|
sitemap.pipe(writeStream);
|
||||||
|
|
||||||
|
// Writing static pages to sitemap
|
||||||
|
sitemap.write({ url: "/", changefreq: "daily", priority: 1 });
|
||||||
|
sitemap.write({ url: "/art/", changefreq: "daily", priority: 0.8 });
|
||||||
|
sitemap.write({ url: "/stats/", changefreq: "daily", priority: 0.8 });
|
||||||
|
sitemap.write({ url: "/contact/", changefreq: "daily", priority: 0.8 });
|
||||||
|
sitemap.write({ url: "/resume/", changefreq: "daily", priority: 0.8 });
|
||||||
|
|
||||||
|
sitemap.end();
|
||||||
|
|
||||||
|
// Send a message after process done
|
||||||
|
res.status(200).json({ message: "Done" });
|
||||||
|
});
|
|
@ -1,6 +1,5 @@
|
||||||
import Head from "next/head";
|
import Head from "next/head";
|
||||||
import Nav from "components/nav";
|
import Nav from "components/nav";
|
||||||
import { useEffect, useRef } from "react";
|
|
||||||
import Contact from "components/contact";
|
import Contact from "components/contact";
|
||||||
import Footer from "components/footer";
|
import Footer from "components/footer";
|
||||||
|
|
||||||
|
@ -9,7 +8,8 @@ export default function Home() {
|
||||||
<div>
|
<div>
|
||||||
<Head>
|
<Head>
|
||||||
<title>
|
<title>
|
||||||
Jyotirmoy Bandyopadhayaya | Full Stack and DevOps Platform Developer
|
Contact | Jyotirmoy Bandyopadhayaya | Full Stack Web Developer and
|
||||||
|
DevOps Engineer
|
||||||
</title>
|
</title>
|
||||||
<meta
|
<meta
|
||||||
name="description"
|
name="description"
|
||||||
|
|
|
@ -8,7 +8,8 @@ export default function Home() {
|
||||||
<div>
|
<div>
|
||||||
<Head>
|
<Head>
|
||||||
<title>
|
<title>
|
||||||
Jyotirmoy Bandyopadhayaya | Full Stack and DevOps Platform Developer
|
Jyotirmoy Bandyopadhayaya | Full Stack Web Developer and DevOps
|
||||||
|
Engineer
|
||||||
</title>
|
</title>
|
||||||
<meta
|
<meta
|
||||||
name="description"
|
name="description"
|
||||||
|
|
|
@ -7,7 +7,8 @@ export default function Home() {
|
||||||
<div>
|
<div>
|
||||||
<Head>
|
<Head>
|
||||||
<title>
|
<title>
|
||||||
Jyotirmoy Bandyopadhayaya | Full Stack and DevOps Platform Developer
|
Projects | Jyotirmoy Bandyopadhayaya | Full Stack Web Developer and
|
||||||
|
DevOps Engineer
|
||||||
</title>
|
</title>
|
||||||
<meta
|
<meta
|
||||||
name="description"
|
name="description"
|
|
@ -9,7 +9,8 @@ export default function Home() {
|
||||||
<div>
|
<div>
|
||||||
<Head>
|
<Head>
|
||||||
<title>
|
<title>
|
||||||
Jyotirmoy Bandyopadhayaya | Full Stack and DevOps Platform Developer
|
Resume | Jyotirmoy Bandyopadhayaya | Full Stack Web Developer and
|
||||||
|
DevOps Engineer
|
||||||
</title>
|
</title>
|
||||||
<meta
|
<meta
|
||||||
name="description"
|
name="description"
|
||||||
|
|
|
@ -8,7 +8,8 @@ export default function Home() {
|
||||||
<div>
|
<div>
|
||||||
<Head>
|
<Head>
|
||||||
<title>
|
<title>
|
||||||
Jyotirmoy Bandyopadhayaya | Full Stack and DevOps Platform Developer
|
Skills | Jyotirmoy Bandyopadhayaya | Full Stack Web Developer and
|
||||||
|
DevOps Engineer
|
||||||
</title>
|
</title>
|
||||||
<meta
|
<meta
|
||||||
name="description"
|
name="description"
|
||||||
|
@ -24,7 +25,7 @@ export default function Home() {
|
||||||
name="publisher"
|
name="publisher"
|
||||||
content="Jyotirmoy Bandyopadhayaya | Bravo68web"
|
content="Jyotirmoy Bandyopadhayaya | Bravo68web"
|
||||||
/>
|
/>
|
||||||
<link rel="icon" href="/favicon.png" />
|
<link rel="icon" href="/favicon.ico" />
|
||||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||||
<link rel="preconnect" href="https://fonts.gstatic.com" />
|
<link rel="preconnect" href="https://fonts.gstatic.com" />
|
||||||
<link
|
<link
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://itsmebravo.dev/</loc><changefreq>daily</changefreq><priority>1.0</priority></url><url><loc>https://itsmebravo.dev/art/</loc><changefreq>daily</changefreq><priority>0.8</priority></url><url><loc>https://itsmebravo.dev/stats/</loc><changefreq>daily</changefreq><priority>0.8</priority></url><url><loc>https://itsmebravo.dev/contact/</loc><changefreq>daily</changefreq><priority>0.8</priority></url><url><loc>https://itsmebravo.dev/resume/</loc><changefreq>daily</changefreq><priority>0.8</priority></url></urlset>
|
|
@ -13,6 +13,10 @@
|
||||||
--color9: #f5a80f;
|
--color9: #f5a80f;
|
||||||
--color10: #0ffaac;
|
--color10: #0ffaac;
|
||||||
--font: "Source Code Pro", monospace;
|
--font: "Source Code Pro", monospace;
|
||||||
|
--color-cursor: 220, 90, 90;
|
||||||
|
--cursor-outline-shade: 0.3;
|
||||||
|
--cursor-size: 10px;
|
||||||
|
--cursor-outline-size: 12px;
|
||||||
}
|
}
|
||||||
* {
|
* {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
@ -39,3 +43,15 @@ a {
|
||||||
* {
|
* {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#cursor-dot {
|
||||||
|
width: var(--cursor-size);
|
||||||
|
height: var(--cursor-size);
|
||||||
|
background-color: rgba(var(--color-cursor), 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
#cursor-dot-outline {
|
||||||
|
width: var(--cursor-outline-size);
|
||||||
|
height: var(--cursor-outline-size);
|
||||||
|
background-color: rgba(var(--color-cursor), var(--cursor-outline-shade));
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue