diff --git a/public/myresume.pdf b/public/myresume.pdf
new file mode 100644
index 0000000..bb1fab9
Binary files /dev/null and b/public/myresume.pdf differ
diff --git a/src/components/Career.js b/src/components/Career.js
new file mode 100644
index 0000000..7b08ac2
--- /dev/null
+++ b/src/components/Career.js
@@ -0,0 +1,117 @@
+import { Divider, List, ListItem, ListItemText, Typography } from '@mui/material'
+import React from 'react'
+
+export const experiencesData = [
+ {
+ key: 'sde-intern-rq', type: 'prof', location: 'RootQuotient Technologies', designation: 'Software Developer Intern',
+ desc: [
+ 'Developed interactive user interfaces for client applications using ReactJS, TypeScript, and the Ant Design library.',
+ 'Implemented a comprehensive admin dashboard for a client’s banking administration application, following MVC\
+ patterns for seamless backend integration.',
+ 'Actively contributed to bug fixes and enhanced an internal package by adding API documentation.'
+ ],
+ startDate: 'May 2022', endDate: 'July 2022'
+ },
+ {
+ key: 'tech-sd-ctf', type: 'extra', location: 'CEG Tech Forum', designation: 'Student Director of Technical Operations',
+ desc: [
+ 'Headed a 20-member strong technical operations team as the Lead Developer, Sysadmin, and Project Manager.',
+ 'Spearheaded multiple web apps developed for various purposes, such as a custom ERP mobile app, admin dashboards,\
+ and the flagship website for Kurukshetra, the international techno-management fest of CEG.',
+ 'Organized a technical summit on "Innovation and Transformation: AI, Autonomous Systems, and Disruptive Trends"\
+ featuring projects by local innovators and keynotes from BNY Mellon, Microsoft, and startups.'
+ ],
+ startDate: 'July 2022', endDate: 'July 2023'
+ },
+ {
+ key: 'sec-nss', type: 'extra', location: 'National Service Scheme', designation: 'Secretary',
+ desc: [
+ 'Organized cleanliness campaigns, awareness rallies, and the annual village development camp.',
+ 'Conducted a 3-day city-wide waste collection and awareness drive in collaboration with AWCEM, Chennai.'
+ ],
+ startDate: 'Nov 2021', endDate: 'Oct 2022'
+ },
+ {
+ key: 'cs-ms-asu', type: 'edu', location: 'Arizona State University', designation: 'MS, Computer Science',
+ desc: [
+ // Add relevant coursework in the future
+ ],
+ startDate: 'Aug 2023', endDate: 'May 2025'
+ },
+ {
+ key: 'cse-be-ceg', type: 'edu', location: 'College of Engineering, Guindy', designation: 'BE, Computer Science and Engineering',
+ desc: [
+ 'Graduated first-class with distinction with a 9.12 CGPA',
+ 'Relevant coursework: DBMS, OOPS, full-stack development, cloud computing, deep learning, computer networks',
+ ],
+ startDate: 'Aug 2023', endDate: 'May 2025'
+ },
+];
+
+const Career = () => {
+ return (
+ <>
+
+ Professional
+
+ {experiencesData.filter(exp => exp.type === 'prof').map(exp =>
+ <>
+
+ {exp.designation}, {exp.location}, {exp.startDate} - {exp.endDate}
+
+
+
+ {exp.desc.map((line, index) =>
+
+
+
+ )}
+
+
+ >
+ )}
+
+
+ Education
+
+ {experiencesData.filter(exp => exp.type === 'edu').map(exp =>
+ <>
+
+ {exp.designation}, {exp.location}, {exp.startDate} - {exp.endDate}
+
+
+
+ {exp.desc.map((line, index) =>
+
+
+
+ )}
+
+
+ >
+ )}
+
+
+ Volunteering
+
+ {experiencesData.filter(exp => exp.type === 'extra').map(exp =>
+ <>
+
+ {exp.designation}, {exp.location}, {exp.startDate} - {exp.endDate}
+
+
+
+ {exp.desc.map((line, index) =>
+
+
+
+ )}
+
+
+ >
+ )}
+ >
+ )
+}
+
+export default Career;
\ No newline at end of file
diff --git a/src/components/Experiences.js b/src/components/Experiences.js
deleted file mode 100644
index 3f17e67..0000000
--- a/src/components/Experiences.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import React from 'react'
-
-const Experiences = () => {
- return (
-
Experiences
- )
-}
-
-export default Experiences
\ No newline at end of file
diff --git a/src/components/Landing.js b/src/components/Landing.js
index 18b595d..54fe352 100644
--- a/src/components/Landing.js
+++ b/src/components/Landing.js
@@ -1,11 +1,12 @@
import React from 'react';
-import { Button, ButtonGroup, List, ListItem, ListItemText, Typography } from '@mui/material';
-import { handleButtonClick } from '../utils/linkClick';
+import { Button, ButtonGroup, Divider, List, ListItem, ListItemText, Typography } from '@mui/material';
+import { handleLinkClick } from '../utils/linkClick';
import GitHubIcon from '@mui/icons-material/GitHub';
import LinkedInIcon from '@mui/icons-material/LinkedIn';
import EmailIcon from '@mui/icons-material/Email';
import { projectsData } from './Projects';
+import { experiencesData } from './Career';
const socialsData = [
{ key: 'github', socialText: 'GitHub', socialLink: 'https://github.com/20kaushik02', socialIcon: },
@@ -20,7 +21,7 @@ const Landing = () => {
{/* one-liner summary */}
{/* intro with education */}
@@ -29,13 +30,28 @@ const Landing = () => {
primary={"I'm currently pursuing my masters in computer\
science at ASU, and will be graduating in the summer of 2025."} />
- {/* current stuff and last stint */}
+ {/* current stuff */}
+ primary={"Recently, I've been tinkering with " + projectsData[0].oneliner + "."} />
+
+ {/* last stint */}
+
+ exp.type === 'prof')[0].location + " as a " +
+ experiencesData.filter(exp => exp.type === 'prof')[0].designation + "."} />
+
+
+
Reach me at:
@@ -46,7 +62,7 @@ const Landing = () => {
{socialsData.map((social) => (
diff --git a/src/components/Menu.js b/src/components/Menu.js
index e23fef2..3176291 100644
--- a/src/components/Menu.js
+++ b/src/components/Menu.js
@@ -15,51 +15,69 @@ import ListItemText from '@mui/material/ListItemText';
import MenuIcon from '@mui/icons-material/Menu';
import Toolbar from '@mui/material/Toolbar';
import Typography from '@mui/material/Typography';
-import Link from '@mui/material/Link';
+// import Link from '@mui/material/Link';
import LandingIcon from '@mui/icons-material/Home';
import ProjIcon from '@mui/icons-material/AccountTree';
import ExpIcon from '@mui/icons-material/Work';
-import SkilIcon from '@mui/icons-material/Build';
-import EduIcon from '@mui/icons-material/School';
+import SkilIcon from '@mui/icons-material/Laptop';
import IntsIcon from '@mui/icons-material/SportsEsports';
import ArticleIcon from '@mui/icons-material/Article';
import Landing from './Landing';
import LoremIpsum from './LoremIpsum';
import Projects from './Projects';
+import Career from './Career';
+import { handleLinkClick } from '../utils/linkClick';
const drawerWidth = 240;
const menuSections = [
- { key: 'landing', display_name: 'Home', appbar_text: 'Hello There!', display_icon: , },
- { key: 'proj', display_name: 'Projects', appbar_text: 'My Projects', display_icon: , },
- { key: 'exp', display_name: 'Experiences', appbar_text: 'My Career', display_icon: , },
- { key: 'skil', display_name: 'Skills', appbar_text: 'My Skills', display_icon: , },
- { key: 'edu', display_name: 'Education', appbar_text: 'My Education', display_icon: , },
- { key: 'ints', display_name: 'Interests', appbar_text: 'My Interests', display_icon: , },
- { key: 'resume', display_name: 'Resume', appbar_text: 'My Resume', display_icon: , },
-];
-
-const menuSectionsData = [
- { key: 'landing', component: },
- { key: 'proj', component: },
- { key: 'exp', component: },
- { key: 'skil', component: },
- { key: 'edu', component: },
- { key: 'ints', component: },
- { key: 'resume', component: },
+ {
+ key: 'landing', display_name: 'Home', appbar_text: 'Hello There!', display_icon: ,
+ extLink: false, component:
+ },
+ {
+ key: 'proj', display_name: 'Projects', appbar_text: 'My Projects', display_icon: ,
+ extLink: false, component:
+ },
+ {
+ key: 'exp', display_name: 'Career', appbar_text: 'My Journey', display_icon: ,
+ extLink: false, component:
+ },
+ {
+ key: 'skil', display_name: 'Skills', appbar_text: 'My Skills', display_icon: ,
+ extLink: false, component:
+ },
+ {
+ key: 'ints', display_name: 'Interests', appbar_text: 'My Interests', display_icon: ,
+ extLink: false, component:
+ },
+ {
+ key: 'resume', display_name: 'Resume', appbar_text: 'My Resume', display_icon: ,
+ extLink: true, link: process.env.PUBLIC_URL + "myresume.pdf"
+ },
];
export default function Menu(props) {
const { window } = props;
const [mobileOpen, setMobileOpen] = React.useState(false);
- const [activeSection, setActiveSection] = React.useState('landing');
+ const [activeSection, setActiveSection] = React.useState(menuSections[0]);
const handleDrawerToggle = () => {
setMobileOpen(!mobileOpen);
};
+ const handleDrawerSelect = (selectedSectionKey) => {
+ handleDrawerToggle();
+ const menuSection = menuSections.filter((menuItem) => menuItem.key === selectedSectionKey)[0];
+ if (menuSection.extLink === true) {
+ handleLinkClick(menuSection.link);
+ return;
+ }
+ setActiveSection(menuSection);
+ }
+
const drawer = (
{/*
*/}
@@ -70,8 +88,8 @@ export default function Menu(props) {
{menuSections.map((menuItem, index) => (
- { handleDrawerToggle(); setActiveSection(menuItem.key); }} key={menuItem.key} disablePadding>
-
+ { handleDrawerSelect(menuItem.key); }} key={menuItem.key} disablePadding>
+
{menuItem.display_icon}
@@ -112,7 +130,7 @@ export default function Menu(props) {
- {menuSections.filter((menuItem) => menuItem.key === activeSection)[0].appbar_text}
+ {activeSection.appbar_text}
@@ -153,7 +171,7 @@ export default function Menu(props) {
sx={{ flexGrow: 1, padding: 1, width: { sm: `calc(100% - ${drawerWidth}px)` } }}
>
- {menuSectionsData.filter((menuItem) => menuItem.key === activeSection)[0].component}
+ {activeSection.component}
);
diff --git a/src/components/Projects.js b/src/components/Projects.js
index be48efe..2b8e34a 100644
--- a/src/components/Projects.js
+++ b/src/components/Projects.js
@@ -1,11 +1,11 @@
import React, { useContext } from 'react';
-import { Box, Button, Card, CardActionArea, CardActions, CardContent, CardMedia, Chip, List, ListItem, ListItemText, Stack, Typography } from '@mui/material';
+import { Box, Button, Card, CardActionArea, CardActions, CardContent, CardMedia, Chip, List, ListItem, ListItemText, Typography } from '@mui/material';
import { Swiper, SwiperSlide } from 'swiper/react';
import "swiper/css";
import { Pagination, Navigation, EffectFade } from "swiper/modules";
import { WidthContext } from '../App';
-import { handleButtonClick } from '../utils/linkClick';
+import { handleLinkClick } from '../utils/linkClick';
export const projectsData = [
{
@@ -13,6 +13,7 @@ export const projectsData = [
name: 'TCP-RL',
img: 'fyp-arch-diag.png',
desc: [
+ // eslint-disable-next-line
'Implemented RL based TCP congestion control (deep Q-learning and PPO models), which were 2% more performant\
compared to TCPNewReno.',
'Demonstrated that performance under simple adversarial attacks was dampened by 40%.',
@@ -27,7 +28,7 @@ export const projectsData = [
img: 'k-site-landing.png',
desc: [
'Flagship website for the 2023 edition of Kurukshetra, CEG\'s international techno-management fest.',
- 'Handled a peak of 10,000 daily users and transactions',
+ 'Avg. traffic of 1,000 daily users and transactions',
'Built with React and Express.js',
],
tools: ['React', 'Express.js', 'AWS'],
@@ -39,7 +40,7 @@ export const projectsData = [
img: 'donut-eat-me-gameplay.png',
desc: [
'An isometric 3D pastry-themed action platformer where you play as a donut and fight other pastries!',
- 'Made with Unity, all assets designed with Blender.',
+ 'Made with Unity, designed in Blender.',
],
tools: ['Blender', 'Unity'],
link: 'https://kirangeorge.itch.io/donut-eat-me'
@@ -67,7 +68,7 @@ const Projects = () => {
height="140"
image={process.env.PUBLIC_URL + "Projects/" + project.img}
alt={project.name}
- onClick={() => handleButtonClick(process.env.PUBLIC_URL + "Projects/" + project.img)}
+ onClick={() => handleLinkClick(process.env.PUBLIC_URL + "Projects/" + project.img)}
/>
@@ -88,7 +89,7 @@ const Projects = () => {
-
diff --git a/src/utils/linkClick.js b/src/utils/linkClick.js
index 2cc67b9..0c1fd9b 100644
--- a/src/utils/linkClick.js
+++ b/src/utils/linkClick.js
@@ -1,3 +1,3 @@
-export const handleButtonClick = (link) => {
+export const handleLinkClick = (link) => {
window.open(link, "_blank", "noopener")
}
\ No newline at end of file