Releasing v1.2.0

This commit is contained in:
Jyotirmoy Bandyopadhayaya 2022-05-02 17:46:18 +05:30
parent 4cfe4b6cfa
commit 8524949cbc
18 changed files with 2532 additions and 1087 deletions

View File

@ -13,12 +13,12 @@ name: "CodeQL"
on: on:
push: push:
branches: [ main ] branches: [main]
pull_request: pull_request:
# The branches below must be a subset of the branches above # The branches below must be a subset of the branches above
branches: [ main ] branches: [main]
schedule: schedule:
- cron: '15 19 * * 5' - cron: "15 19 * * 5"
jobs: jobs:
analyze: analyze:
@ -32,39 +32,39 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
language: [ 'javascript' ] language: ["javascript"]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
# Learn more about CodeQL language support at https://git.io/codeql-language-support # Learn more about CodeQL language support at https://git.io/codeql-language-support
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v3 uses: actions/checkout@v3
# Initializes the CodeQL tools for scanning. # Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL - name: Initialize CodeQL
uses: github/codeql-action/init@v2 uses: github/codeql-action/init@v2
with: with:
languages: ${{ matrix.language }} languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file. # If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file. # By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file. # Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main # queries: ./path/to/local/query, your-org/your-repo/queries@main
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below) # If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild - name: Autobuild
uses: github/codeql-action/autobuild@v2 uses: github/codeql-action/autobuild@v2
# Command-line programs to run using the OS shell. # Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl # 📚 https://git.io/JvXDl
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project # and modify them (or add more) to build your code if your project
# uses a compiled language # uses a compiled language
#- run: | #- run: |
# make bootstrap # make bootstrap
# make release # make release
- name: Perform CodeQL Analysis - name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2 uses: github/codeql-action/analyze@v2

6
.prettierignore Normal file
View File

@ -0,0 +1,6 @@
build
coverage
.vercel
.next
node_modules
public/

37
components/extras.js Normal file
View File

@ -0,0 +1,37 @@
import {} from "config";
import { ExtraStyles } from "./extras.style";
import { extra } from "config";
function extras() {
return (
<ExtraStyles>
<h1>Extras</h1>
<div className="default">
{extra.map((content, index) => {
return (
<>
<div className="content">
<div className="content-description">
<img src={content.image} />
</div>
<div className="content-title">
<h1>
<a
href={content.url}
target="_blank"
rel="noopener noreferrer"
>
{content.name}
</a>
</h1>
</div>
</div>
</>
);
})}
</div>
</ExtraStyles>
);
}
export default extras;

View File

@ -0,0 +1,72 @@
import styled from "styled-components";
// import SendIcon from "@mui/icons-material/Send";
export const ExtraStyles = styled.div`
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: center;
padding-top: 15vh;
background-image: url("images/background2.jpg");
background-size: cover;
background-position: center;
background-attachment: fixed;
background-repeat: no-repeat;
overflow-y: scroll !important;
height: 100vh;
.default {
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: center;
/* height: 100vh; */
padding-bottom: 10em;
.content {
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: center;
padding-bottom: 2em;
&:hover {
filter: contrast(200%);
-webkit-transform: translateX(-5px) translateY(-5px);
transform: translateX(-5px) translateY(-5px);
transition: 1s ease;
}
.content-description {
width: 100%;
height: 100%;
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: center;
}
.content-description img {
width: 100px;
}
.content-title {
width: 100%;
height: 100%;
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: center;
h1 {
font-size: 1.5em;
font-weight: bold;
color: #fff;
text-align: center;
margin: 0;
padding: 0;
a {
color: #fff;
text-decoration: none;
&:hover {
color: #b41ee6;
}
}
}
}
}
}
`;

View File

@ -26,7 +26,7 @@ const LINKS = [
href: "/contact", href: "/contact",
}, },
{ {
title: "Art / Projects", title: "Art/Projects",
href: "/projects", href: "/projects",
}, },
{ {
@ -34,8 +34,8 @@ const LINKS = [
href: "https://blog.bravo68web.me", href: "https://blog.bravo68web.me",
}, },
{ {
title: "Mail Me", title: "Extras",
href: "mailto:me@bravo68web.me", href: "/extras",
}, },
]; ];
@ -77,7 +77,7 @@ function Nav() {
<div className="links"> <div className="links">
{LINKS.map(({ title, href }, index) => ( {LINKS.map(({ title, href }, index) => (
<div key={index} className="link"> <div key={index} className="link">
<Link href={href}>{title}</Link> | <Link href={href}>{title}</Link>
</div> </div>
))} ))}
</div> </div>

View File

@ -25,6 +25,11 @@ export default styled.nav`
.link { .link {
/* padding: 20px; */ /* padding: 20px; */
margin-left: 10px; margin-left: 10px;
color: #fff;
&:hover {
color: #111111;
background-color: #6ffc03;
}
} }
@media (max-width: 900px) { @media (max-width: 900px) {
display: none; display: none;

View File

@ -1,98 +1,66 @@
import { darkScrollbar } from "@mui/material"; export function loadCursor(ball) {
import { useRef, useEffect } from "react"; let x = window.innerWidth / 2;
let y = window.innerHeight / 2;
const Cursor = () => { let ballX = x;
const delay = 18; let ballY = y;
const dot = useRef(null);
const dotOutline = useRef(null);
const cursorVisaible = useRef(true);
const cursorEnlarge = useRef(false);
const endX = useRef(window.innerWidth / 2); let hideTimeout = NodeJS.Timeout ? null : null;
const endY = useRef(window.innerHeight / 2);
const _x = useRef(0);
const _y = useRef(0);
const requestRef = useRef(null); function drawBall() {
useEffect(() => { ballX += (x - ballX) * 0.1 - 1;
document.addEventListener("mousedown", mouseOverEvent); ballY += (y - ballY) * 0.1 - 1;
document.addEventListener("mouseup", mouseOutEvent);
document.addEventListener("mousemove", mouseMoveEvent);
document.addEventListener("mouseenter", mouseEnterEvent);
document.addEventListener("mouseleave", mouseLeaveEvent);
console.log("Cursor Mounted");
animateDotOutline();
return () => { ball.style.top = `${ballY - window.scrollY}px`;
document.removeEventListener("mousedown", mouseOverEvent); ball.style.left = `${ballX}px`;
document.removeEventListener("mouseup", mouseOutEvent); }
document.removeEventListener("mousemove", mouseMoveEvent);
document.removeEventListener("mouseenter", mouseEnterEvent); function loop() {
document.removeEventListener("mouseleave", mouseLeaveEvent); drawBall();
cancelAnimationFrame(requestRef.current); requestAnimationFrame(loop);
console.log("Cursor Unmounted"); }
};
}); loop();
const toggleCursorVisaible = () => {
if (cursorVisaible.current) { function touch(event) {
dot.current.style.opacity = 1; x = event.touches[0].pageX;
dotOutline.current.style.opacity = 1; y = event.touches[0].pageY;
} else { }
dot.current.style.opacity = 0;
dotOutline.current.style.opacity = 0; function mousemove(event) {
ball.style.opacity = "1";
if (hideTimeout) {
clearTimeout(hideTimeout);
} }
};
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 = () => { x = event.pageX;
cursorVisaible.current = true; y = event.pageY;
toggleCursorSize();
};
const mouseOutEvent = () => { hideTimeout = setTimeout(() => {
cursorVisaible.current = false; ball.style.opacity = "0";
toggleCursorSize(); }, 300);
}; }
const mouseEnterEvent = (e) => { function mousedown() {
cursorVisaible.current = true; ball.style.transform = "scale(2)";
toggleCursorVisaible(); }
};
const mouseLeaveEvent = () => { function mouseup() {
cursorVisaible.current = false; ball.style.transform = "scale(1)";
toggleCursorVisaible(); }
};
const mouseMoveEvent = (e) => {
cursorVisaible.current = true;
toggleCursorVisaible();
endX.current = e.pageX;
endY.current = e.pageY;
dot.current.style.top = endY.current + "px"; window.addEventListener("touchstart", touch);
dot.current.style.left = endX.current + "px"; window.addEventListener("touchmove", touch);
}; window.addEventListener("mousemove", mousemove);
const animateDotOutline = () => { window.addEventListener("mousedown", mousedown);
_x.current += (endX.current - _x.current) / delay; window.addEventListener("mouseup", mouseup);
_y.current += (endY.current - _y.current) / delay;
dotOutline.current.style.top = _y.current + "px"; return () => {
dotOutline.current.style.left = _x.current + "px"; window.removeEventListener("touchstart", touch);
window.removeEventListener("touchmove", touch);
window.removeEventListener("mousemove", mousemove);
window.removeEventListener("mousedown", mousedown);
window.removeEventListener("mouseup", mouseup);
}; };
return ( }
<>
<div ref={dotOutline} className="cursor-dot-outline"></div>
<div ref={dot} className="cursor-dot"></div>
</>
);
};
export default Cursor;

View File

@ -86,6 +86,39 @@ export const arts = [
}, },
]; ];
export const extra = [
{
name: "PraiveBin",
image: "/images/projects/privatebin.jpg",
url: "https://paste.itsmebravo.dev/",
},
{
name: "ImageSafe",
image: "https://safe.b68dev.xyz/images/logo_smol.png",
url: "https://safe.b68dev.xyz",
},
{
name: "Bravo's Git Hosting",
image: "https://gitea.io/images/gitea.png",
url: "https://git.itsmebravo.dev/",
},
{
name: "Bravo's Radio Player",
image: "/images/projects/radio-cast.png",
url: "https://radio.b68dev.xyz/",
},
{
name: "Bravo's IRC",
image: "/images/projects/irc.png",
url: "https://irc.b68dev.xyz/",
},
{
name: "IP Tracker",
image: "/images/projects/GOIPTracker.png",
url: "https://ip.b68dev.xyz",
},
];
var project = [ var project = [
{ {
name: "URL Minify", name: "URL Minify",

View File

@ -1,5 +1,5 @@
{ {
"compilerOptions": { "compilerOptions": {
"baseUrl": "./" "baseUrl": "./"
} }
} }

View File

@ -2,7 +2,7 @@
"name": "bravo68web-portfolio", "name": "bravo68web-portfolio",
"private": true, "private": true,
"description": "My NextJS Portfolio", "description": "My NextJS Portfolio",
"version": "1.1.0", "version": "1.2.0",
"license": "CC-BY-ND-4.0", "license": "CC-BY-ND-4.0",
"author": { "author": {
"name": "Bravo68Web", "name": "Bravo68Web",
@ -18,7 +18,8 @@
"build": "next build", "build": "next build",
"start": "next start", "start": "next start",
"lint": "next lint", "lint": "next lint",
"postinstall": "node tools/copy-webviewer-files.js" "postinstall": "node tools/copy-webviewer-files.js",
"prettier": "prettier --write ."
}, },
"dependencies": { "dependencies": {
"@emotion/react": "^11.7.1", "@emotion/react": "^11.7.1",
@ -43,6 +44,7 @@
"devDependencies": { "devDependencies": {
"babel-plugin-styled-components": "^2.0.7", "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",
"prettier": "^2.6.2"
} }
} }

View File

@ -1,7 +1,8 @@
import "../styles/globals.css"; import "../styles/globals.css";
// import { loadCursor } from "../components/providers/cursor";
function MyApp({ Component, pageProps }) { function MyPortfolio({ Component, pageProps }) {
return <Component {...pageProps} />; return <Component {...pageProps} />;
} }
export default MyApp; export default MyPortfolio;

42
pages/extras.js Normal file
View File

@ -0,0 +1,42 @@
import Head from "next/head";
import Nav from "components/nav";
import Extras from "components/extras";
import Footer from "components/footer";
export default function Home() {
return (
<div>
<Head>
<title>
Extras | 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 />
<Extras />
{/* <Footer /> */}
</div>
);
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 315 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -2989,6 +2989,11 @@ prelude-ls@^1.2.1:
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
prettier@^2.6.2:
version "2.6.2"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.6.2.tgz#e26d71a18a74c3d0f0597f55f01fb6c06c206032"
integrity sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==
pretty-format@^26.6.2: pretty-format@^26.6.2:
version "26.6.2" version "26.6.2"
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93"