Skip to content

Commit 25be8aa

Browse files
committed
Experiences
1 parent 2ecbdab commit 25be8aa

File tree

10 files changed

+196
-101
lines changed

10 files changed

+196
-101
lines changed

app/components/experiences.js

Lines changed: 0 additions & 89 deletions
This file was deleted.
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
'use client';
2+
3+
import useTranslate from '@/hooks/useTranslate';
4+
import { useState } from 'react';
5+
6+
const Resume = ({ text, textLarge }) => {
7+
const { translate } = useTranslate();
8+
const [open, setOpen] = useState(false);
9+
10+
return (
11+
<div className="prose prose-neutral dark:prose-invert">
12+
{!open ? (
13+
<p className="experience-content animate-fade-in-up">{text}</p>
14+
) : (
15+
<div
16+
className="experience-content animate-fade-in-up"
17+
dangerouslySetInnerHTML={{ __html: textLarge }}
18+
></div>
19+
)}
20+
<div className="flex w-full justify-end">
21+
<button
22+
className="border-neutral-100 dark:border-neutral-800 border text-sm px-2 py-1 rounded-lg hover:ring-2 ring-neutral-200 dark:ring-gray-300 transition-all"
23+
onClick={() => setOpen(!open)}
24+
>
25+
{translate('readmore')}
26+
</button>
27+
</div>
28+
</div>
29+
);
30+
};
31+
32+
export default Resume;
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
'use client';
2+
3+
import useTranslate from '@/hooks/useTranslate';
4+
import Resume from './_children/resume';
5+
6+
const Experiences = () => {
7+
const { translate } = useTranslate();
8+
const data = translate('experiences');
9+
10+
return (
11+
<section id="experience">
12+
<div className="title font-bold text-2xl text-black dark:text-white my-5">
13+
{translate('experience')}
14+
</div>
15+
<div className="flex flex-col gap-4 border-l border-neutral-100 dark:border-neutral-800">
16+
{data &&
17+
data.map((experience, index) => {
18+
return (
19+
<div className="flex flex-row gap-4" key={index}>
20+
<div className="relative px-2">
21+
<span className="block absolute -left-2 top-0 w-4 h-4 bg-gray-200 dark:bg-neutral-800 rounded-full"></span>
22+
</div>
23+
<div className="flex flex-col gap-2">
24+
<div className="font-semibold text-black dark:text-white">
25+
{experience.title}
26+
</div>
27+
<div className="text-neutral-700 dark:text-neutral-400 text-sm flex flex-row gap-3">
28+
<span>{experience.company}</span>
29+
<span>{experience.employmentStatus}</span>
30+
</div>
31+
<span className="text-neutral-700 dark:text-neutral-400 text-sm">
32+
{experience.date}
33+
</span>
34+
<Resume
35+
text={experience.resume}
36+
textLarge={experience.description}
37+
/>
38+
</div>
39+
</div>
40+
);
41+
})}
42+
</div>
43+
</section>
44+
);
45+
};
46+
47+
export default Experiences;

app/components/header/_children/menu.js

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,44 @@
11
'use client';
22

33
import useTranslate from '@/hooks/useTranslate';
4+
import { useMenuStore } from '@/store/menu';
45
import Link from 'next/link';
6+
import { useCallback } from 'react';
57

68
const Menu = ({ className = 'flex-col md:flex-row' }) => {
9+
const { active, setActive } = useMenuStore();
710
const { translate } = useTranslate();
811

12+
const activeClass = useCallback(
13+
(value) => {
14+
return value === active
15+
? 'font-semibold text-neutral-800 dark:text-white'
16+
: 'font-normal transition-all text-neutral-600 dark:text-neutral-500 hover:text-neutral-800 dark:hover:text-neutral-200';
17+
},
18+
[active]
19+
);
20+
921
return (
1022
<ul className={`flex gap-4 ${className}`}>
11-
<li className="font-semibold text-neutral-800 dark:text-white">
12-
<Link href="#about">{translate('about')}</Link>
23+
<li className={activeClass('about')}>
24+
<Link href="#about" onClick={() => setActive('about')}>
25+
{translate('about')}
26+
</Link>
1327
</li>
14-
<li className="font-normal text-neutral-600 dark:text-neutral-500">
15-
<Link href="#experience">{translate('experience')}</Link>
28+
<li className={activeClass('experience')}>
29+
<Link href="#experience" onClick={() => setActive('experience')}>
30+
{translate('experience')}
31+
</Link>
1632
</li>
17-
<li className="font-normal text-neutral-600 dark:text-neutral-500">
18-
<Link href="#proyects">{translate('proyects')}</Link>
33+
<li className={activeClass('proyects')}>
34+
<Link href="#proyects" onClick={() => setActive('proyects')}>
35+
{translate('proyects')}
36+
</Link>
1937
</li>
20-
<li className="font-normal text-neutral-600 dark:text-neutral-500">
21-
<Link href="#skills">{translate('skills')}</Link>
38+
<li className={activeClass('skills')}>
39+
<Link href="#skills" onClick={() => setActive('skills')}>
40+
{translate('skills')}
41+
</Link>
2242
</li>
2343
</ul>
2444
);

app/globals.css

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,9 @@
55
html {
66
scroll-behavior: smooth;
77
}
8+
9+
.experience-content ul {
10+
list-style: none;
11+
margin: 0;
12+
padding-left: 0;
13+
}

data/languages/en.json

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,40 @@
88
"aboutme": [
99
"I am a passionate software developer specializing in advanced technologies such as Git, React, Node, Typescript, Tailwind, and PHP. With extensive experience in creating robust and efficient web applications, I am known for my focus on code quality.",
1010
"If you're looking to take your projects to the next level and benefit from my experience and enthusiasm, I'm here to help."
11+
],
12+
"readmore": "Read more",
13+
"experiences": [
14+
{
15+
"title": "Senior FullStack Developer",
16+
"company": "El Universo",
17+
"employmentStatus": "Full-time",
18+
"date": "Sep 2021 - Present",
19+
"resume": "Developed React components for ARC PUBLISHing, configured servers with Nginx, and migrated sites to Digital Ocean. Managed DFP integration with Piano and developed APIs with Express and Typescript.",
20+
"description": "<ul>\n<li>Developed React components with ARC PUBLISHING for eluniverso.com</li>\n<li>Created microsites with Next.js and tailwindcss</li>\n<li>Adapted components with tailwindcss to enhance the user experience</li>\n<li>Implemented SCRUM methodology for task deployment</li>\n<li>Configured and maintained servers using Nginx</li>\n<li>Migrated websites to Digital Ocean for improved scalability and efficiency</li>\n<li>Integrated DoubleClick for Publishers (DFP) with Piano and maintained advertising modules</li>\n<li>Developed APIs with Express, Typescript, Jest, Husky, and Prettier</li>\n<li>Implemented Directus Headless CMS to optimize company business processes</li>\n</ul>"
21+
},
22+
{
23+
"title": "Senior FullStack Developer",
24+
"company": "Ecuavisa",
25+
"employmentStatus": "Full-time",
26+
"date": "Oct 2020 - Sep 2021",
27+
"resume": "Led the migration of www.ecuavisa.com's CMS from Drupal to Protectmedia's IterCMS, ensuring uninterrupted site functionality. Developed custom modules, integrated Mediastream, and optimized site performance and SEO. Managed users and servers to maintain uninterrupted operation.",
28+
"description": "<ul>\n<li>Led the migration of www.ecuavisa.com's CMS from Drupal to Protectmedia's IterCMS, ensuring uninterrupted site functionality</li>\n<li>Provided efficient technical support to editorial staff, ensuring timely issue resolution</li>\n<li>Developed custom modules to enhance Ecuavisa's website functionality and meet business needs</li>\n<li>Integrated the Mediastream video platform for an improved user experience</li>\n<li>Designed and developed microsites within the CMS to promote specific events and marketing campaigns</li>\n<li>Managed user access and data security within the CMS</li>\n<li>Optimized website speed and improved Google ranking through effective SEO strategies</li>\n<li>Corrected AMP template code to enhance mobile loading speed</li>\n<li>Administered servers to deploy various APIs and custom modules, ensuring uninterrupted website operation</li>\n</ul>"
29+
},
30+
{
31+
"title": "Project Leader",
32+
"company": "SV Technology",
33+
"employmentStatus": "Full-time",
34+
"date": "Mar 2020 - Sep 2020",
35+
"resume": "Developed electronic invoicing systems with Laravel (PHP) and Vue.js, integrated with SAP Business One for efficient business accounting management. Also built a payroll system with the same technologies for streamlined employee payments. Conducted database migrations across MySQL, SQLServer, and PostgreSQL to ensure data integrity, oversaw software implementations and quality testing, provided software support to users, and developed custom modules to enhance company efficiency and productivity.",
36+
"description": "<ul>\n<li>Developed electronic invoicing systems with Laravel (PHP) and Vue.js, integrated with SAP Business One for efficient business accounting management</li>\n<li>Developed a payroll system using Laravel (PHP) and Vue.js to simplify employee payment calculations and processing</li>\n<li>Conducted database migrations across various systems, including MySQL, SQLServer, and PostgreSQL, to ensure data integrity and security throughout the process</li>\n<li>Oversaw software implementation and testing to ensure the quality and proper functioning of the final product</li>\n<li>Provided software support to users, offering solutions and technical assistance in case of system issues or errors</li>\n<li>Developed custom modules to improve company processes and streamline workflow across different departments, optimizing overall efficiency and productivity</li>\n</ul>"
37+
},
38+
{
39+
"title": "FullStack Developer",
40+
"company": "Orodelti",
41+
"employmentStatus": "Full-time",
42+
"date": "Sep 2018 - Mar 2020",
43+
"resume": "Developed enterprise platforms using PHP, Vue.js, Node.js, JQuery, HTML5, Bootstrap 4, Laravel, and .Net. Additionally, created Android applications, conducted data analysis, and generated reports for informed business decisions. Managed database migrations across PostgreSQL, SQLServer, and MYSQL, ensuring optimal functionality.",
44+
"description": "<ul>\n<li>Developed enterprise platforms using PHP, Vue.js, Node.js, JQuery, HTML5, Bootstrap 4, Laravel, and .Net</li>\n<li>Created Android mobile applications</li>\n<li>Conducted data analysis and generated reports for informed business decisions</li>\n<li>Managed database migrations across systems such as PostgreSQL, SQLServer, and MYSQL, ensuring proper functionality and query optimization</li>\n</ul>"
45+
}
1146
]
1247
}

0 commit comments

Comments
 (0)