vamcrizer commited on
Commit
c72dc24
·
verified ·
1 Parent(s): 216bb97

Upload components/Experience.jsx with huggingface_hub

Browse files
Files changed (1) hide show
  1. components/Experience.jsx +128 -0
components/Experience.jsx ADDED
@@ -0,0 +1,128 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { Briefcase, Calendar, MapPin } from 'lucide-react';
2
+
3
+ export default function Experience() {
4
+ const experiences = [
5
+ {
6
+ title: 'Senior Full Stack Developer',
7
+ company: 'Tech Innovators Inc.',
8
+ location: 'San Francisco, CA',
9
+ period: '2022 - Present',
10
+ type: 'Full-time',
11
+ description: 'Leading a team of 5 developers in building scalable web applications. Architected microservices infrastructure reducing deployment time by 60%.',
12
+ achievements: [
13
+ 'Reduced API response time by 40% through optimization',
14
+ 'Mentored 3 junior developers to senior level',
15
+ 'Implemented CI/CD pipeline saving 20+ hours weekly'
16
+ ]
17
+ },
18
+ {
19
+ title: 'Full Stack Developer',
20
+ company: 'Digital Solutions LLC',
21
+ location: 'New York, NY',
22
+ period: '2020 - 2022',
23
+ type: 'Full-time',
24
+ description: 'Developed and maintained multiple client projects using React and Node.js. Collaborated with design team to implement pixel-perfect UI components.',
25
+ achievements: [
26
+ 'Built 15+ production applications from scratch',
27
+ 'Increased test coverage from 30% to 85%',
28
+ 'Received "Developer of the Year" award in 2021'
29
+ ]
30
+ },
31
+ {
32
+ title: 'Frontend Developer',
33
+ company: 'Creative Agency',
34
+ location: 'Austin, TX',
35
+ period: '2018 - 2020',
36
+ type: 'Full-time',
37
+ description: 'Specialized in creating responsive, accessible web interfaces. Worked with various clients from startups to Fortune 500 companies.',
38
+ achievements: [
39
+ 'Delivered 30+ websites with 100% client satisfaction',
40
+ 'Introduced component library reducing dev time by 30%',
41
+ 'Led accessibility initiative achieving WCAG 2.1 AA compliance'
42
+ ]
43
+ },
44
+ {
45
+ title: 'Junior Web Developer',
46
+ company: 'StartUp Hub',
47
+ location: 'Remote',
48
+ period: '2017 - 2018',
49
+ type: 'Contract',
50
+ description: 'Started my professional journey building landing pages and email templates. Learned modern JavaScript frameworks and best practices.',
51
+ achievements: [
52
+ 'Mastered React and Vue.js in 6 months',
53
+ 'Contributed to open-source projects',
54
+ 'Built personal portfolio with 10k+ visitors'
55
+ ]
56
+ }
57
+ ];
58
+
59
+ return (
60
+ <section id="experience" className="bg-gray-50">
61
+ <div className="section-container">
62
+ <div className="text-center mb-12">
63
+ <h2 className="text-3xl sm:text-4xl font-bold text-gray-900 mb-4">Work Experience</h2>
64
+ <p className="text-lg text-gray-600 max-w-2xl mx-auto">
65
+ My professional journey and career highlights
66
+ </p>
67
+ <div className="w-20 h-1 bg-primary-500 mx-auto rounded-full mt-4"></div>
68
+ </div>
69
+
70
+ <div className="max-w-4xl mx-auto">
71
+ {experiences.map((exp, index) => (
72
+ <div key={index} className="relative pl-8 sm:pl-0">
73
+ {/* Timeline line */}
74
+ {index !== experiences.length - 1 && (
75
+ <div className="absolute left-4 sm:left-1/2 top-12 bottom-0 w-0.5 bg-gray-200 sm:-translate-x-1/2"></div>
76
+ )}
77
+
78
+ <div className={`flex flex-col sm:flex-row gap-6 sm:gap-12 ${index % 2 === 0 ? 'sm:flex-row' : 'sm:flex-row-reverse'}`}>
79
+ {/* Timeline dot */}
80
+ <div className="absolute left-2 sm:left-1/2 w-4 h-4 bg-primary-500 rounded-full border-4 border-white shadow sm:-translate-x-1/2 mt-3"></div>
81
+
82
+ {/* Content */}
83
+ <div className={`sm:w-1/2 ${index % 2 === 0 ? 'sm:text-right sm:pr-12' : 'sm:pl-12'}`}>
84
+ <div className="bg-white rounded-xl p-6 shadow-sm hover:shadow-md transition-shadow">
85
+ <div className={`flex items-center gap-2 mb-2 ${index % 2 === 0 ? 'sm:justify-end' : ''}`}>
86
+ <Briefcase className="w-4 h-4 text-primary-500" />
87
+ <span className="text-sm font-medium text-primary-600">{exp.type}</span>
88
+ </div>
89
+
90
+ <h3 className="text-lg font-bold text-gray-900 mb-1">{exp.title}</h3>
91
+ <p className="text-primary-600 font-medium mb-3">{exp.company}</p>
92
+
93
+ <div className={`flex flex-wrap gap-4 text-sm text-gray-500 mb-4 ${index % 2 === 0 ? 'sm:justify-end' : ''}`}>
94
+ <span className="flex items-center gap-1">
95
+ <Calendar className="w-4 h-4" />
96
+ {exp.period}
97
+ </span>
98
+ <span className="flex items-center gap-1">
99
+ <MapPin className="w-4 h-4" />
100
+ {exp.location}
101
+ </span>
102
+ </div>
103
+
104
+ <p className="text-gray-600 mb-4 text-sm leading-relaxed">
105
+ {exp.description}
106
+ </p>
107
+
108
+ <ul className={`space-y-2 ${index % 2 === 0 ? 'sm:text-right' : ''}`}>
109
+ {exp.achievements.map((achievement, i) => (
110
+ <li key={i} className="text-sm text-gray-600 flex items-start gap-2">
111
+ <span className="w-1.5 h-1.5 bg-primary-400 rounded-full mt-2 flex-shrink-0"></span>
112
+ <span>{achievement}</span>
113
+ </li>
114
+ ))}
115
+ </ul>
116
+ </div>
117
+ </div>
118
+
119
+ {/* Empty space for alternating layout */}
120
+ <div className="hidden sm:block sm:w-1/2"></div>
121
+ </div>
122
+ </div>
123
+ ))}
124
+ </div>
125
+ </div>
126
+ </section>
127
+ );
128
+ }