├── public ├── HeroImage.jpg └── index.html ├── src ├── images │ └── HeroImage.jpg ├── components │ ├── About │ │ ├── index.js │ │ └── AboutStyle.js │ ├── HeroBgAnimation │ │ ├── HeroBgAnimationStyle.js │ │ └── index.js │ ├── HeroSection │ │ ├── index.js │ │ └── HeroStyle.js │ ├── Projects │ │ ├── index.js │ │ └── ProjectsStyle.js │ ├── Navbar │ │ ├── index.js │ │ └── NavbarStyledComponent.js │ ├── Experience │ │ └── index.js │ ├── Education │ │ └── index.js │ ├── Footer │ │ └── index.js │ ├── Cards │ │ ├── EducationCard.jsx │ │ ├── ProjectCards.jsx │ │ └── ExperienceCard.jsx │ ├── Skills │ │ └── index.js │ ├── Contact │ │ └── index.js │ └── ProjectDetails │ │ └── index.jsx ├── index.js ├── utils │ └── Themes.js ├── themes │ └── default.js ├── App.css ├── App.js └── data │ └── constants.js ├── .gitignore ├── package.json └── README.md /public/HeroImage.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rishavchanda/Portfolio-Youtube/HEAD/public/HeroImage.jpg -------------------------------------------------------------------------------- /src/images/HeroImage.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rishavchanda/Portfolio-Youtube/HEAD/src/images/HeroImage.jpg -------------------------------------------------------------------------------- /src/components/About/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | const About = () => { 4 | return ( 5 |
About
6 | ) 7 | } 8 | 9 | export default About; -------------------------------------------------------------------------------- /src/components/HeroBgAnimation/HeroBgAnimationStyle.js: -------------------------------------------------------------------------------- 1 | import styled from 'styled-components'; 2 | 3 | 4 | export const Div = styled.div` 5 | width:600px; 6 | height: 500px; 7 | ` -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom/client'; 3 | import App from './App'; 4 | const root = ReactDOM.createRoot(document.getElementById('root')); 5 | root.render( 6 | 7 | 8 | 9 | ); 10 | 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /src/components/About/AboutStyle.js: -------------------------------------------------------------------------------- 1 | import styled from 'styled-components'; 2 | import _default from '../../themes/default'; 3 | 4 | 5 | export const SocialMediaIcons = styled.div` 6 | display: flex; 7 | margin-top: 1rem; 8 | `; 9 | 10 | export const SocialMediaIcon = styled.a` 11 | display: inline-block; 12 | margin: 0 1rem; 13 | font-size: 1.5rem; 14 | color: ${({ theme }) => theme.text_primary}; 15 | transition: color 0.2s ease-in-out; 16 | &:hover { 17 | color: ${({ theme }) => theme.primary}; 18 | } 19 | `; -------------------------------------------------------------------------------- /src/utils/Themes.js: -------------------------------------------------------------------------------- 1 | export const darkTheme = { 2 | bg:"#1C1C27", 3 | bgLight: "#1C1E27", 4 | primary:"#854CE6", 5 | text_primary:"#F2F3F4", 6 | text_secondary:"#b1b2b3", 7 | card:"#171721", 8 | card_light: '#191924', 9 | button:"#854CE6", 10 | white:"#FFFFFF", 11 | black:"#000000", 12 | } 13 | 14 | export const lightTheme = { 15 | bg:"#FFFFFF", 16 | bgLight: "#f0f0f0", 17 | primary:"#be1adb", 18 | text_primary:"#111111", 19 | text_secondary:"#48494a", 20 | card:"#FFFFFF", 21 | button:"#5c5b5b", 22 | } -------------------------------------------------------------------------------- /src/themes/default.js: -------------------------------------------------------------------------------- 1 | export default { 2 | // Temp fonts 3 | fonts: { 4 | title: "Space Grotesk, sans-serif", 5 | main: "Space Grotesk, sans-serif" 6 | }, 7 | // Colors for layout 8 | colors: { 9 | primary1: "#854CE6", 10 | background1: "#222A35", 11 | button: "#854CE6", 12 | background2: "#19212C", 13 | text: "#C8CFD8", 14 | text1: "#F2F5F7", 15 | text2: "#626970", 16 | text3: "#575C66", 17 | footerBackground: "#00012B" 18 | }, 19 | // Breakpoints for responsive design 20 | breakpoints: { 21 | sm: 'screen and (max-width: 640px)', 22 | md: 'screen and (max-width: 768px)', 23 | lg: 'screen and (max-width: 1024px)', 24 | xl: 'screen and (max-width: 1280px)' 25 | }, 26 | } -------------------------------------------------------------------------------- /src/App.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@100;200;300;400;500;600;700;800;900&display=swap'); 2 | 3 | *{ 4 | box-sizing: border-box; 5 | margin: 0; 6 | padding: 0; 7 | font-family: 'Poppins', sans-serif; 8 | 9 | } 10 | 11 | html{ 12 | scroll-behavior: smooth; 13 | } 14 | 15 | body{ 16 | margin: 0px !important; 17 | padding: 0; 18 | font-family: 'Montserrat', sans-serif; 19 | } 20 | 21 | /* width */ 22 | ::-webkit-scrollbar { 23 | width: 4px; 24 | height: 80px; 25 | } 26 | 27 | /* Track */ 28 | ::-webkit-scrollbar-track { 29 | background:#222A35; 30 | } 31 | 32 | /* Handle */ 33 | ::-webkit-scrollbar-thumb { 34 | background: #575C66; 35 | border-radius: 6px; 36 | } 37 | 38 | /* Handle on hover */ 39 | ::-webkit-scrollbar-thumb:hover { 40 | background: #626970; 41 | } -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rishav-chanda-portfolio", 3 | "version": "0.1.0", 4 | "homepage": "https://rishavchanda.github.io", 5 | "private": true, 6 | "dependencies": { 7 | "@emailjs/browser": "^3.11.0", 8 | "@emotion/react": "^11.11.0", 9 | "@emotion/styled": "^11.11.0", 10 | "@mui/icons-material": "^5.11.16", 11 | "@mui/lab": "^5.0.0-alpha.130", 12 | "@mui/material": "^5.13.1", 13 | "@testing-library/jest-dom": "^5.16.4", 14 | "@testing-library/react": "^13.1.1", 15 | "@testing-library/user-event": "^13.5.0", 16 | "emailjs": "^4.0.2", 17 | "gh-pages": "^3.2.3", 18 | "react": "^18.0.0", 19 | "react-dom": "^18.0.0", 20 | "react-icons": "^4.3.1", 21 | "react-router-dom": "^6.3.0", 22 | "react-scripts": "5.0.1", 23 | "react-scroll": "^1.8.7", 24 | "styled-components": "^5.3.5", 25 | "typewriter-effect": "^2.19.0", 26 | "web-vitals": "^2.1.4" 27 | }, 28 | "scripts": { 29 | "start": "react-scripts start", 30 | "build": "react-scripts build", 31 | "test": "react-scripts test", 32 | "eject": "react-scripts eject", 33 | "predeploy" : "npm run build", 34 | "deploy" : "gh-pages -d build" 35 | }, 36 | "eslintConfig": { 37 | "extends": [ 38 | "react-app", 39 | "react-app/jest" 40 | ] 41 | }, 42 | "browserslist": { 43 | "production": [ 44 | ">0.2%", 45 | "not dead", 46 | "not op_mini all" 47 | ], 48 | "development": [ 49 | "last 1 chrome version", 50 | "last 1 firefox version", 51 | "last 1 safari version" 52 | ] 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 12 | 13 | 17 | 18 | 27 | Rishav Chanda 28 | 29 | 30 | 31 |
32 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /src/components/HeroSection/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import HeroBgAnimation from '../HeroBgAnimation' 3 | import { HeroContainer, HeroBg, HeroLeftContainer, Img, HeroRightContainer, HeroInnerContainer, TextLoop, Title, Span, SubTitle,SocialMediaIcons,SocialMediaIcon, ResumeButton } from './HeroStyle' 4 | import HeroImg from '../../images/HeroImage.jpg' 5 | import Typewriter from 'typewriter-effect'; 6 | import { Bio } from '../../data/constants'; 7 | 8 | const HeroSection = () => { 9 | return ( 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 | Hi, I am <br /> {Bio.name} 18 | 19 | I am a 20 | 21 | 28 | 29 | 30 | {Bio.description} 31 | Check Resume 32 | 33 | 34 | 35 | 36 | hero-image 37 | 38 | 39 | 40 | 41 |
42 | ) 43 | } 44 | 45 | export default HeroSection -------------------------------------------------------------------------------- /src/App.js: -------------------------------------------------------------------------------- 1 | import { ThemeProvider } from "styled-components"; 2 | import { useState, useEffect } from "react"; 3 | import { darkTheme, lightTheme } from './utils/Themes.js' 4 | import Navbar from "./components/Navbar"; 5 | import './App.css'; 6 | import { BrowserRouter as Router } from 'react-router-dom'; 7 | import HeroSection from "./components/HeroSection"; 8 | import About from "./components/About"; 9 | import Skills from "./components/Skills"; 10 | import Projects from "./components/Projects"; 11 | import Contact from "./components/Contact"; 12 | import Footer from "./components/Footer"; 13 | import Experience from "./components/Experience"; 14 | import Education from "./components/Education"; 15 | import ProjectDetails from "./components/ProjectDetails"; 16 | import styled from "styled-components"; 17 | 18 | const Body = styled.div` 19 | background-color: ${({ theme }) => theme.bg}; 20 | width: 100%; 21 | overflow-x: hidden; 22 | ` 23 | 24 | const Wrapper = styled.div` 25 | background: linear-gradient(38.73deg, rgba(204, 0, 187, 0.15) 0%, rgba(201, 32, 184, 0) 50%), linear-gradient(141.27deg, rgba(0, 70, 209, 0) 50%, rgba(0, 70, 209, 0.15) 100%); 26 | width: 100%; 27 | clip-path: polygon(0 0, 100% 0, 100% 100%,30% 98%, 0 100%); 28 | ` 29 | function App() { 30 | const [darkMode, setDarkMode] = useState(true); 31 | const [openModal, setOpenModal] = useState({ state: false, project: null }); 32 | console.log(openModal) 33 | return ( 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 |