-
Notifications
You must be signed in to change notification settings - Fork 0
/
WorkExperience.vue
148 lines (142 loc) · 4.51 KB
/
WorkExperience.vue
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
<script setup lang="ts">
interface Experience {
date: string
title: string
company: string
features: string[]
}
function isUrl(text: string) {
const urlPattern = new RegExp(
'^(https?:\\/\\/)?' // protocol
+ '((([a-zA-Z\\d]([a-zA-Z\\d-]*[a-zA-Z\\d])*)\\.)+[a-zA-Z]{2,}|' // domain name
+ '((\\d{1,3}\\.){3}\\d{1,3}))' // OR IP (v4) address
+ '(\\:\\d+)?(\\/[-a-zA-Z\\d%@_.~+&:]*)*' // port and path
+ '(\\?[;&a-zA-Z\\d%@_.,~+&:=-]*)?' // query string
+ '(\\#[-a-zA-Z\\d_]*)?$',
'i',
)
return urlPattern.test(text)
}
const experiences = ref<Experience[]>([
{
date: 'Aug 2023 – Present',
title: 'Full Stack Software Engineer',
company: 'Ard Labs',
features: [
'Responsible for building complex systems to generate reports',
'Contributing to CI/CD pipelines',
'Building Dashboard Builder',
'Building Form Builder',
'Building Google Docs-like editor using Tiptap',
],
},
{
date: 'Jan 2023 – Aug 2023',
title: 'Intermediate Software Engineer',
company: 'MakanE',
features: [
'Full stack engineer in the core features team, added features for the core application (dashboard and stores) using Django and Vue.js',
'Revamped subscription service',
'Handled integration with Salesforce and automated onboarding process',
'Implemented recurring payments using token transactions and AWS DynamoDB',
],
},
{
date: 'Jan 2022 – Jan 2023',
title: 'Software Engineer',
company: 'MakanE',
features: [
'Full stack engineer in the core features team, added features for the core application (dashboard and stores) using Django and Vue.js',
'Revamped customer data section',
'Built feature toggling system',
'Implemented different patterns like Pub/Sub and Strategy pattern',
'Integrated with AWS services S3, SQS and built serverless services',
'Conducted tech talk sessions',
'Performed code reviews and Git management',
],
},
{
date: 'Sep 2021 – Present',
title: 'Full Stack Developer (Volunteer)',
company: 'shaiclub.com',
features: [
'Dockerized the application',
'Localized the database',
'Implemented repository pattern in Nuxt.js for API management and decoupling',
],
},
{
date: 'June 2021 – Aug 2021',
title: 'Electrical Engineer Trainee',
company: 'Orange',
features: [
'University training program',
],
},
{
date: 'Aug 2021 – Oct 2021',
title: 'AWS Machine Learning Scholarship | Phase 1',
company: 'Udacity',
features: [
'Built machine learning model to predict humidity time series',
'GitHub Repository: https://github.com/EngOsamaHaikal/Time-series-forecasting-Task1/',
],
},
{
date: 'Mar 2021 – Dec 2021',
title: 'Web Developer',
company: 'Freelance',
features: [
'Developed and designed personal web application using Django and Bootstrap: http://osamahaikal.pythonanywhere.com/',
'Developed and designed E-marketing web application: http://www.qutamimarketing.com',
'Developed and designed soccer website: http://www.firas-shilbaya.com',
'Designed company template: https://engosamahaikal.github.io/previewtemplate/',
],
},
{
date: 'Mar 2018 – April 2021',
title: 'Volunteer',
company: 'e4uhu.com',
features: [
'Built e4uhu.com and served as team leader in the web development team',
],
},
])
</script>
<template>
<div class="relative border-l-2 border-[#192034]">
<div
v-for="(experience, index) in experiences"
:key="index"
class="flex flex-col mb-15 mx-2 ms-6"
>
<div class="absolute size-4 bg-black rounded-full -left-2 border-2 border-[#192034]" />
<p class="text-sm text-[#ccc]">
{{ experience.date }}
</p>
<div class="mt1 flex flex-col gap2">
<h3 class="text-white text-lg font-bold">
{{ experience.title }} @ {{ experience.company }}
</h3>
<ul class="list-disc list-inside text-#ccc mt-2 space-y-xs">
<li
v-for="(item, idx) in experience.features"
:key="idx"
>
<span v-if="isUrl(item)">
<a
:href="item"
class="text-blue-500 underline"
target="_blank"
rel="noopener noreferrer"
>{{ item }}</a>
</span>
<span v-else>{{ item }}</span>
</li>
</ul>
</div>
</div>
</div>
</template>
<style scoped>
</style>