Skip to content

Commit d9fd5a3

Browse files
committed
Made changes to styling
1 parent 369625d commit d9fd5a3

File tree

5 files changed

+412
-54
lines changed

5 files changed

+412
-54
lines changed

package-lock.json

+13-13
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"@tailwindcss/postcss": "^4.0.0",
1515
"@types/three": "^0.172.0",
1616
"clsx": "^2.1.1",
17-
"framer-motion": "^12.0.1",
17+
"framer-motion": "^12.4.10",
1818
"gsap": "^3.12.7",
1919
"next": "15.1.6",
2020
"react": "^18.2.0",
+250
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,250 @@
1+
"use client";
2+
3+
import { motion, AnimatePresence } from "framer-motion";
4+
import "../../styles/experience.css";
5+
import { useState } from "react";
6+
import { HandRaisedIcon } from "@heroicons/react/24/outline";
7+
import {
8+
UserGroupIcon,
9+
AcademicCapIcon,
10+
HeartIcon,
11+
LightBulbIcon,
12+
PresentationChartBarIcon,
13+
} from "@heroicons/react/24/outline";
14+
15+
interface Skill {
16+
name: string;
17+
color: string;
18+
}
19+
20+
interface ExperienceItem {
21+
number: number;
22+
company: string;
23+
position: string;
24+
isRight?: boolean;
25+
duration: string;
26+
description: string[];
27+
skills: Skill[];
28+
}
29+
30+
const experiences: ExperienceItem[] = [
31+
{
32+
number: 1,
33+
company: "The Linux Foundation",
34+
position: "Software Engineer Fellow",
35+
duration: "September 2024 - December 2024",
36+
description: [
37+
"Enhanced RISC-V's prod pipeline with 2 peer-approved PRs, increasing testing coverage by 70% & improving reliability",
38+
"Optimized the RISC-V Sail Model repository by adding LaTeX/AsciiDoc documentation generation, type-checking, and an executable emulator, achieving 300 KIPS performance on Intel i7-7700",
39+
"Refactored a critical parser by modularizing outputs into dedicated scripts, improving scalability by 30% & maintainability",
40+
"Developed and integrated 20+ unit tests, streamlining debugging processes and improving code reliability by 25%",
41+
"Automated testing and integration workflows using YAML, enabling seamless updates with minimal manual intervention",
42+
],
43+
skills: [
44+
{ name: "RISC-V", color: "#8b5cf6" },
45+
{ name: "YAML", color: "#ec4899" },
46+
{ name: "LaTeX", color: "#14b8a6" },
47+
{ name: "Testing", color: "#f97316" },
48+
{ name: "Documentation", color: "#06b6d4" },
49+
],
50+
},
51+
{
52+
number: 2,
53+
company: "All in Dating Inc",
54+
position: "Full Stack Developer Intern",
55+
isRight: true,
56+
duration: "May 2024 - August 2024",
57+
description: [
58+
"Engineered a Flutter dating app with WebSockets, reducing message delivery time by 30% for instant connections",
59+
"Conducted comprehensive API testing using Postman, optimizing SQL database performance to handle 10,000+ concurrent users while ensuring 99.99% uptime and seamless scalability",
60+
"Revamped system design to cut chat refresh costs, improving system speed and reducing resource usage by 50%",
61+
"Implemented an AI chat assistant using LLaMA-1 to enrich user experience with engaging conversation starters",
62+
"Analyzed web options and chose Azure Media Storage for efficient sharing of multimedia content",
63+
],
64+
skills: [
65+
{ name: "Flutter", color: "#0ea5e9" },
66+
{ name: "WebSocket", color: "#8b5cf6" },
67+
{ name: "SQL", color: "#22c55e" },
68+
{ name: "LLaMA", color: "#f97316" },
69+
{ name: "Azure", color: "#06b6d4" },
70+
],
71+
},
72+
{
73+
number: 3,
74+
company: "LTIMindtree",
75+
position: "Cloud Software Engineer",
76+
duration: "June 2022 - July 2023",
77+
description: [
78+
"Led the migration from Oracle SQL to Databricks, reducing infrastructure costs by approximately $200K annually",
79+
"Optimized ETL pipelines and data schemas, reducing processing time by 40% and query execution by 36%, while improving scalability for high-throughput workloads",
80+
"Formulated Git workflows processing 5TB+ of sales data across 100 regions, ensuring 92% pipeline reliability",
81+
"Integrated Snowflake with SAP for real-time ETL workflows, optimizing data ingestion and transformation, cutting processing costs by 20%, and accelerating query performance by 35%",
82+
],
83+
skills: [
84+
{ name: "Databricks", color: "#f97316" },
85+
{ name: "ETL", color: "#8b5cf6" },
86+
{ name: "Git", color: "#22c55e" },
87+
{ name: "Snowflake", color: "#06b6d4" },
88+
{ name: "SAP", color: "#ec4899" },
89+
],
90+
},
91+
];
92+
93+
const Experience = () => {
94+
const [expandedCard, setExpandedCard] = useState<number | null>(null);
95+
96+
const communityActivities = [
97+
{
98+
text: "Part of tech communities like Google Developers Club, IEEE, CSI",
99+
icon: UserGroupIcon,
100+
},
101+
{
102+
text: "Conducted workshops on web development and cybersecurity",
103+
icon: PresentationChartBarIcon,
104+
},
105+
{
106+
text: "Taught underprivileged kids",
107+
icon: AcademicCapIcon,
108+
},
109+
{
110+
text: "Creative freak looking to solve interesting problems",
111+
icon: LightBulbIcon,
112+
},
113+
];
114+
115+
return (
116+
<section id="experience" className="py-20 bg-[#1a1f2b]">
117+
<div className="max-w-6xl mx-auto px-4">
118+
<h2 className="text-6xl font-bold text-center mb-16 text-white">
119+
Experience In A Timeline
120+
</h2>
121+
122+
<div className="text-center mb-8">
123+
<p className="text-gray-300 text-lg">
124+
<HandRaisedIcon className="w-6 h-6 inline-block mr-2 animate-bounce" />
125+
Tap on any card to view detailed experience
126+
</p>
127+
</div>
128+
129+
<div className="timeline-container">
130+
{experiences.map((exp) => (
131+
<motion.div
132+
key={exp.number}
133+
className={`timeline-item ${exp.isRight ? "right" : "left"}`}
134+
initial={{ opacity: 0, x: exp.isRight ? 100 : -100 }}
135+
whileInView={{ opacity: 1, x: 0 }}
136+
viewport={{ once: true }}
137+
transition={{ duration: 0.5 }}
138+
>
139+
<motion.div
140+
className={`timeline-content bg-[#252d3d] relative ${
141+
expandedCard === exp.number ? "expanded" : ""
142+
}`}
143+
onClick={() =>
144+
setExpandedCard(
145+
expandedCard === exp.number ? null : exp.number
146+
)
147+
}
148+
layout
149+
>
150+
<div className="timeline-number text-2xl">{exp.number}</div>
151+
152+
{/* Tap indicator overlay */}
153+
{expandedCard !== exp.number && (
154+
<div className="tap-indicator">Tap for details</div>
155+
)}
156+
157+
<h3 className="text-white text-4xl font-bold mb-2">
158+
{exp.company}
159+
</h3>
160+
<p className="text-gray-300 text-2xl mb-4">{exp.position}</p>
161+
162+
{/* Click indicator */}
163+
{expandedCard !== exp.number && (
164+
<motion.div
165+
className="flex items-center justify-center mt-4 text-gray-300"
166+
initial={{ opacity: 0.7 }}
167+
animate={{
168+
opacity: [0.7, 1, 0.7],
169+
scale: [1, 1.1, 1],
170+
}}
171+
transition={{
172+
repeat: Infinity,
173+
duration: 1.5,
174+
}}
175+
>
176+
<HandRaisedIcon className="w-6 h-6 mr-2 transform rotate-90" />
177+
<span className="text-sm">Click to expand</span>
178+
</motion.div>
179+
)}
180+
181+
<AnimatePresence>
182+
{expandedCard === exp.number && (
183+
<motion.div
184+
initial={{ opacity: 0, height: 0 }}
185+
animate={{ opacity: 1, height: "auto" }}
186+
exit={{ opacity: 0, height: 0 }}
187+
transition={{ duration: 0.3 }}
188+
className="mt-4"
189+
>
190+
<p className="text-xl text-gray-300 mb-4">
191+
{exp.duration}
192+
</p>
193+
<ul className="list-disc list-inside mb-4 text-lg text-gray-300">
194+
{exp.description.map((item, index) => (
195+
<li key={index} className="mb-2">
196+
{item}
197+
</li>
198+
))}
199+
</ul>
200+
<div className="flex flex-wrap gap-2">
201+
{exp.skills.map((skill, index) => (
202+
<span
203+
key={index}
204+
className="px-3 py-1 rounded-full text-white text-sm font-medium"
205+
style={{ backgroundColor: skill.color }}
206+
>
207+
{skill.name}
208+
</span>
209+
))}
210+
</div>
211+
</motion.div>
212+
)}
213+
</AnimatePresence>
214+
</motion.div>
215+
</motion.div>
216+
))}
217+
218+
{/* Community Activities Section */}
219+
<motion.div
220+
className="timeline-end-section"
221+
initial={{ height: 0 }}
222+
whileInView={{ height: "auto" }}
223+
viewport={{ once: true }}
224+
transition={{ duration: 0.8, ease: "easeOut" }}
225+
>
226+
<div className="bg-[#252d3d] rounded-lg p-6 space-y-6">
227+
{communityActivities.map((activity, index) => (
228+
<motion.div
229+
key={index}
230+
className="flex items-center gap-4"
231+
initial={{ opacity: 0, x: -20 }}
232+
whileInView={{ opacity: 1, x: 0 }}
233+
viewport={{ once: true }}
234+
transition={{ delay: index * 0.2 }}
235+
>
236+
<activity.icon className="w-8 h-8 text-purple-400 flex-shrink-0" />
237+
<p className="text-gray-300 text-lg">{activity.text}</p>
238+
</motion.div>
239+
))}
240+
</div>
241+
</motion.div>
242+
243+
<div className="timeline-line" />
244+
</div>
245+
</div>
246+
</section>
247+
);
248+
};
249+
250+
export default Experience;

src/app/components/home/ExperienceTimeline.tsx

+19-19
Original file line numberDiff line numberDiff line change
@@ -94,14 +94,14 @@ const experiences: ExperienceItem[] = [
9494
},
9595
{
9696
number: 5,
97-
company: "AUTODL",
98-
position: "INTERN, BACKEND DEVELOPER",
99-
duration: "Dec 2021 - May 2022",
97+
company: "CODES & COFFEE TECH",
98+
position: "INTERN, MOBILE APP DEVELOPER",
99+
duration: "FEB 2022 - May 2022",
100100
description: [
101-
"Developed RESTful APIs for an ML-based document labeling platform",
102-
"Optimized API performance, reducing response times by 35%",
103-
"Implemented role-based access control (RBAC) for enhanced security",
104-
"Integrated Elasticsearch for fast and efficient document retrieval",
101+
"Led the migration from Oracle SQL to Databricks, reducing infrastructure costs by approximately $200K annually",
102+
"Optimized ETL pipelines and data schemas, reducing processing time by 40% and query execution by 36%, while improving scalability for high-throughput workloads",
103+
"Formulated Git workflows processing 5TB+ of sales data across 100 regions, ensuring 92% pipeline reliability",
104+
"Integrated Snowflake with SAP for real-time ETL workflows, optimizing data ingestion and transformation, cutting processing costs by 20%, and accelerating query performance by 35%",
105105
],
106106
skills: [
107107
{ name: "Python", color: "blue" },
@@ -112,21 +112,21 @@ const experiences: ExperienceItem[] = [
112112
},
113113
{
114114
number: 6,
115-
company: "Reliance Industries Limited",
116-
position: "INTERN, CYBERSECURITY INTERN",
115+
company: "AUTODL",
116+
position: "INTERN, BACKEND DEVELOPER",
117+
duration: "Dec 2021 - May 2022",
117118
isRight: true,
118-
duration: "May 2021 - Jul 2021",
119119
description: [
120-
"Conducted penetration testing to identify vulnerabilities in enterprise networks",
121-
"Developed automated scripts for security audits using Python",
122-
"Assisted in implementing SIEM solutions for threat monitoring",
123-
"Performed forensic analysis to detect potential security breaches",
120+
"Developed RESTful APIs for an ML-based document labeling platform",
121+
"Optimized API performance, reducing response times by 35%",
122+
"Implemented role-based access control (RBAC) for enhanced security",
123+
"Integrated Elasticsearch for fast and efficient document retrieval",
124124
],
125125
skills: [
126-
{ name: "Cybersecurity", color: "black" },
127-
{ name: "Penetration Testing", color: "red" },
128126
{ name: "Python", color: "blue" },
129-
{ name: "SIEM", color: "purple" },
127+
{ name: "Flask", color: "red" },
128+
{ name: "PostgreSQL", color: "orange" },
129+
{ name: "Elasticsearch", color: "green" },
130130
],
131131
},
132132
];
@@ -179,10 +179,10 @@ const Experience = () => {
179179
transition={{ duration: 0.3 }}
180180
className="mt-4"
181181
>
182-
<p className="text-2xl text-gray-600 mb-4">
182+
<p className="text-2xl text-white-600 mb-4">
183183
{exp.duration}
184184
</p>
185-
<ul className="list-disc list-inside mb-4 text-xl text-gray-700">
185+
<ul className="list-disc list-inside mb-4 text-xl text-white-700">
186186
{exp.description.map((item, index) => (
187187
<li key={index} className="mb-2">
188188
{item}

0 commit comments

Comments
 (0)