Releasing v1.2.0
This commit is contained in:
parent
4cfe4b6cfa
commit
8524949cbc
|
@ -13,12 +13,12 @@ name: "CodeQL"
|
|||
|
||||
on:
|
||||
push:
|
||||
branches: [ main ]
|
||||
branches: [main]
|
||||
pull_request:
|
||||
# The branches below must be a subset of the branches above
|
||||
branches: [ main ]
|
||||
branches: [main]
|
||||
schedule:
|
||||
- cron: '15 19 * * 5'
|
||||
- cron: "15 19 * * 5"
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
|
@ -32,39 +32,39 @@ jobs:
|
|||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
language: [ 'javascript' ]
|
||||
language: ["javascript"]
|
||||
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
|
||||
# Learn more about CodeQL language support at https://git.io/codeql-language-support
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v2
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
# 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.
|
||||
# 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
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v2
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
# 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.
|
||||
# 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
|
||||
|
||||
# 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)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v2
|
||||
# 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)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v2
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 https://git.io/JvXDl
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 https://git.io/JvXDl
|
||||
|
||||
# ✏️ 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
|
||||
# uses a compiled language
|
||||
# ✏️ 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
|
||||
# uses a compiled language
|
||||
|
||||
#- run: |
|
||||
# make bootstrap
|
||||
# make release
|
||||
#- run: |
|
||||
# make bootstrap
|
||||
# make release
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v2
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v2
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
build
|
||||
coverage
|
||||
.vercel
|
||||
.next
|
||||
node_modules
|
||||
public/
|
|
@ -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;
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
`;
|
|
@ -26,7 +26,7 @@ const LINKS = [
|
|||
href: "/contact",
|
||||
},
|
||||
{
|
||||
title: "Art / Projects",
|
||||
title: "Art/Projects",
|
||||
href: "/projects",
|
||||
},
|
||||
{
|
||||
|
@ -34,8 +34,8 @@ const LINKS = [
|
|||
href: "https://blog.bravo68web.me",
|
||||
},
|
||||
{
|
||||
title: "Mail Me",
|
||||
href: "mailto:me@bravo68web.me",
|
||||
title: "Extras",
|
||||
href: "/extras",
|
||||
},
|
||||
];
|
||||
|
||||
|
@ -77,7 +77,7 @@ function Nav() {
|
|||
<div className="links">
|
||||
{LINKS.map(({ title, href }, index) => (
|
||||
<div key={index} className="link">
|
||||
<Link href={href}>{title}</Link> |
|
||||
<Link href={href}>{title}</Link>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
|
|
|
@ -25,6 +25,11 @@ export default styled.nav`
|
|||
.link {
|
||||
/* padding: 20px; */
|
||||
margin-left: 10px;
|
||||
color: #fff;
|
||||
&:hover {
|
||||
color: #111111;
|
||||
background-color: #6ffc03;
|
||||
}
|
||||
}
|
||||
@media (max-width: 900px) {
|
||||
display: none;
|
||||
|
|
|
@ -1,98 +1,66 @@
|
|||
import { darkScrollbar } from "@mui/material";
|
||||
import { useRef, useEffect } from "react";
|
||||
export function loadCursor(ball) {
|
||||
let x = window.innerWidth / 2;
|
||||
let y = window.innerHeight / 2;
|
||||
|
||||
const Cursor = () => {
|
||||
const delay = 18;
|
||||
const dot = useRef(null);
|
||||
const dotOutline = useRef(null);
|
||||
const cursorVisaible = useRef(true);
|
||||
const cursorEnlarge = useRef(false);
|
||||
let ballX = x;
|
||||
let ballY = y;
|
||||
|
||||
const endX = useRef(window.innerWidth / 2);
|
||||
const endY = useRef(window.innerHeight / 2);
|
||||
const _x = useRef(0);
|
||||
const _y = useRef(0);
|
||||
let hideTimeout = NodeJS.Timeout ? null : null;
|
||||
|
||||
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();
|
||||
function drawBall() {
|
||||
ballX += (x - ballX) * 0.1 - 1;
|
||||
ballY += (y - ballY) * 0.1 - 1;
|
||||
|
||||
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;
|
||||
ball.style.top = `${ballY - window.scrollY}px`;
|
||||
ball.style.left = `${ballX}px`;
|
||||
}
|
||||
|
||||
function loop() {
|
||||
drawBall();
|
||||
requestAnimationFrame(loop);
|
||||
}
|
||||
|
||||
loop();
|
||||
|
||||
function touch(event) {
|
||||
x = event.touches[0].pageX;
|
||||
y = event.touches[0].pageY;
|
||||
}
|
||||
|
||||
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 = () => {
|
||||
cursorVisaible.current = true;
|
||||
toggleCursorSize();
|
||||
};
|
||||
x = event.pageX;
|
||||
y = event.pageY;
|
||||
|
||||
const mouseOutEvent = () => {
|
||||
cursorVisaible.current = false;
|
||||
toggleCursorSize();
|
||||
};
|
||||
hideTimeout = setTimeout(() => {
|
||||
ball.style.opacity = "0";
|
||||
}, 300);
|
||||
}
|
||||
|
||||
const mouseEnterEvent = (e) => {
|
||||
cursorVisaible.current = true;
|
||||
toggleCursorVisaible();
|
||||
};
|
||||
function mousedown() {
|
||||
ball.style.transform = "scale(2)";
|
||||
}
|
||||
|
||||
const mouseLeaveEvent = () => {
|
||||
cursorVisaible.current = false;
|
||||
toggleCursorVisaible();
|
||||
};
|
||||
const mouseMoveEvent = (e) => {
|
||||
cursorVisaible.current = true;
|
||||
toggleCursorVisaible();
|
||||
endX.current = e.pageX;
|
||||
endY.current = e.pageY;
|
||||
function mouseup() {
|
||||
ball.style.transform = "scale(1)";
|
||||
}
|
||||
|
||||
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;
|
||||
window.addEventListener("touchstart", touch);
|
||||
window.addEventListener("touchmove", touch);
|
||||
window.addEventListener("mousemove", mousemove);
|
||||
window.addEventListener("mousedown", mousedown);
|
||||
window.addEventListener("mouseup", mouseup);
|
||||
|
||||
dotOutline.current.style.top = _y.current + "px";
|
||||
dotOutline.current.style.left = _x.current + "px";
|
||||
return () => {
|
||||
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;
|
||||
}
|
||||
|
|
33
config.js
33
config.js
|
@ -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 = [
|
||||
{
|
||||
name: "URL Minify",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"baseUrl": "./"
|
||||
}
|
||||
}
|
||||
"compilerOptions": {
|
||||
"baseUrl": "./"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"name": "bravo68web-portfolio",
|
||||
"private": true,
|
||||
"description": "My NextJS Portfolio",
|
||||
"version": "1.1.0",
|
||||
"version": "1.2.0",
|
||||
"license": "CC-BY-ND-4.0",
|
||||
"author": {
|
||||
"name": "Bravo68Web",
|
||||
|
@ -18,7 +18,8 @@
|
|||
"build": "next build",
|
||||
"start": "next start",
|
||||
"lint": "next lint",
|
||||
"postinstall": "node tools/copy-webviewer-files.js"
|
||||
"postinstall": "node tools/copy-webviewer-files.js",
|
||||
"prettier": "prettier --write ."
|
||||
},
|
||||
"dependencies": {
|
||||
"@emotion/react": "^11.7.1",
|
||||
|
@ -43,6 +44,7 @@
|
|||
"devDependencies": {
|
||||
"babel-plugin-styled-components": "^2.0.7",
|
||||
"eslint": "^7.32.0",
|
||||
"eslint-config-next": "12.0.4"
|
||||
"eslint-config-next": "12.0.4",
|
||||
"prettier": "^2.6.2"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
import "../styles/globals.css";
|
||||
// import { loadCursor } from "../components/providers/cursor";
|
||||
|
||||
function MyApp({ Component, pageProps }) {
|
||||
return <Component {...pageProps} />;
|
||||
function MyPortfolio({ Component, pageProps }) {
|
||||
return <Component {...pageProps} />;
|
||||
}
|
||||
|
||||
export default MyApp;
|
||||
export default MyPortfolio;
|
||||
|
|
|
@ -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>
|
||||
);
|
||||
}
|
3190
pnpm-lock.yaml
3190
pnpm-lock.yaml
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 |
|
@ -2989,6 +2989,11 @@ prelude-ls@^1.2.1:
|
|||
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
|
||||
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:
|
||||
version "26.6.2"
|
||||
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93"
|
||||
|
|
Loading…
Reference in New Issue