diff --git a/src/components/Cv/Cv.jsx b/src/components/Cv/Cv.jsx
new file mode 100644
index 0000000..de279fa
--- /dev/null
+++ b/src/components/Cv/Cv.jsx
@@ -0,0 +1,81 @@
+import React from 'react'
+
+import style from './Cv.module.css'
+
+function Cv ({
+ competencies,
+ education,
+ certifications,
+ languages,
+ experience
+}) {
+ return (
+
+
+
Core competencies
+
+ {competencies.sort().map((c, i) => (
+ - {c}
+ ))}
+
+
+
Certifications
+
+ {certifications.sort().map((c, i) => (
+ - {c}
+ ))}
+
+
+
Languages
+
+ {languages.sort().map((c, i) => (
+ -
+ {c.name} - {c.proficiency}
+
+ ))}
+
+
+
Education history
+
{education}
+
+
+
Professional experience
+
+ {experience.map((exp, i) => (
+
+ {exp.desc}
+
+ ))}
+
+
+ )
+}
+
+export default Cv
+
+function CVWorkExperience ({ position, employer, start, end, children }) {
+ return (
+
+
+
+ {position}
+
+ {employer}
+
+
+ -
+
+
+
+
+ )
+}
diff --git a/src/components/Cv/Cv.module.css b/src/components/Cv/Cv.module.css
new file mode 100644
index 0000000..aa23271
--- /dev/null
+++ b/src/components/Cv/Cv.module.css
@@ -0,0 +1,25 @@
+.cv {
+ display: flex;
+ flex-direction: row;
+ gap: 25px;
+}
+
+.cv > div:first-child {
+ flex: 1;
+}
+
+.cv > div:last-child {
+ flex: 2;
+}
+
+.cv .work-experience >div:first-child {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+}
+
+@media (max-width: 768px) {
+ .cv {
+ flex-direction: column;
+ }
+}
\ No newline at end of file