Browse Source

feat: build for prod

main
nicolas.marsal 3 years ago
parent
commit
3d7cc3ff25
No known key found for this signature in database
GPG Key ID: 268AB819B6453541
  1. 9
      Dockerfile
  2. 21
      src/components/common/WordCloud.vue
  3. 6
      src/components/skills/MySkills.vue
  4. 2
      src/components/skills/ProgressBar.vue
  5. 98
      src/data/experiences.ts
  6. 162
      src/data/skills.ts
  7. 1
      tsconfig.json

9
Dockerfile

@ -0,0 +1,9 @@
FROM node:10
RUN npm install -g serve
RUN mkdir -p /data/www
COPY dist/ /data/www/
CMD ["serve", "-s", "/data/www/", "-p", "80", "--no-etag"]

21
src/components/common/WordCloud.vue

@ -3,8 +3,8 @@
:width="width" :width="width"
:height="height" :height="height"
@mousemove="onMousemove" @mousemove="onMousemove"
@mouseover="(e) => (this.hover = true)" @mouseover="onMouseOver"
@mouseout="this.hover = false" @mouseout="onMouseOut"
> >
<g :transform="`translate(${width / 2}, ${height / 2})`"> <g :transform="`translate(${width / 2}, ${height / 2})`">
<text <text
@ -17,7 +17,7 @@
}" }"
:transform="`translate(${word.x}, ${word.y})rotate(${word.rotate})`" :transform="`translate(${word.x}, ${word.y})rotate(${word.rotate})`"
text-anchor="middle" text-anchor="middle"
@click="highlightText(word.text)" @click="word.text && highlightText(word.text)"
class="word" class="word"
> >
{{ word.text }} {{ word.text }}
@ -34,13 +34,14 @@
<script lang="ts"> <script lang="ts">
import cloud from "d3-cloud"; import cloud from "d3-cloud";
import * as skills from "@/data/skills"; import skills from "@/data/skills";
import { defineComponent } from "vue"; import { defineComponent } from "vue";
import type { Skill } from "@/data/types";
export default defineComponent({ export default defineComponent({
props: { props: {
width: Number, width: { type: Number, required: true },
height: Number, height: { type: Number, required: true },
}, },
data() { data() {
return { return {
@ -67,6 +68,12 @@ export default defineComponent({
this.mouseX = e.clientX; this.mouseX = e.clientX;
this.mouseY = e.clientY; this.mouseY = e.clientY;
}, },
onMouseOver() {
this.hover = true;
},
onMouseOut() {
this.hover = false;
},
highlightText(text: string) { highlightText(text: string) {
console.log(text); console.log(text);
}, },
@ -87,7 +94,7 @@ export default defineComponent({
fixed, fixed,
}: { }: {
size: number; size: number;
fixed: boolean; fixed?: boolean;
}) => { }) => {
return fixed return fixed
? size ? size

6
src/components/skills/MySkills.vue

@ -7,15 +7,15 @@ import ProgressBar from "@/components/skills/ProgressBar.vue";
<RightSection :title="$t('section.skills')"> <RightSection :title="$t('section.skills')">
<div class="skill"> <div class="skill">
<div class="skill-name">Test</div> <div class="skill-name">Test</div>
<ProgressBar style="width: 70%" percent="60" /> <ProgressBar style="width: 70%" :percent="60" />
</div> </div>
<div class="skill"> <div class="skill">
<div class="skill-name">Java</div> <div class="skill-name">Java</div>
<ProgressBar style="width: 70%" percent="70" /> <ProgressBar style="width: 70%" :percent="70" />
</div> </div>
<div class="skill"> <div class="skill">
<div class="skill-name">Docker</div> <div class="skill-name">Docker</div>
<ProgressBar style="width: 70%" percent="80" /> <ProgressBar style="width: 70%" :percent="80" />
</div> </div>
</RightSection> </RightSection>
</template> </template>

2
src/components/skills/ProgressBar.vue

@ -11,7 +11,7 @@ import { defineComponent } from "vue";
export default defineComponent({ export default defineComponent({
name: "ProgressBar", name: "ProgressBar",
props: { props: {
percent: Number, percent: { type: Number, required: true },
}, },
}); });
</script> </script>

98
src/data/experiences.ts

@ -1,39 +1,7 @@
import type { Experience } from "@/data/types"; import type { Experience } from "@/data/types";
import { import type { Skill } from "@/data/types";
Agility, import mySkills from "@/data/skills";
Angular,
Ansible,
Bash,
Blend,
Codecept,
CSHARP,
DevOps,
Docker,
DotNET,
ExtJS,
Git,
Groovy,
Gwt,
Helm,
HtmlCss,
Java,
Jee,
Jenkins,
JUnit,
Kubernetes,
Linux,
Pencil,
React,
ReactNative,
Scrum,
Skaffold,
SpringBoot,
Svn,
Typescript,
UIAutomation,
UX,
WPF,
} from "@/data/skills";
const experience = (): Experience[] => { const experience = (): Experience[] => {
return [ return [
{ {
@ -45,25 +13,29 @@ const experience = (): Experience[] => {
{ {
description: "Développement d'une application B2B pour restaurateurs", description: "Développement d'une application B2B pour restaurateurs",
skills: [ skills: [
SpringBoot, mySkills.SpringBoot,
React, mySkills.React,
Java, mySkills.Kubernetes,
Typescript, mySkills.Docker,
Kubernetes, mySkills.Agility,
Docker, mySkills.DevOps,
Agility,
DevOps,
], ],
}, },
{ {
description: description:
"Développement d'une application mobile à destination des serveurs pour le suivi des paiements", "Développement d'une application mobile à destination des serveurs pour le suivi des paiements",
skills: [ReactNative, SpringBoot, Kubernetes, Docker, Agility], skills: [
mySkills.ReactNative,
mySkills.SpringBoot,
mySkills.Kubernetes,
mySkills.Docker,
mySkills.Agility,
],
}, },
{ {
description: description:
"Mise en place de tests E2E performants, fiables et facile à écrire", "Mise en place de tests E2E performants, fiables et facile à écrire",
skills: [Codecept, Typescript, Agility], skills: [mySkills.Codecept, mySkills.Typescript, mySkills.Agility],
}, },
], ],
}, },
@ -77,24 +49,24 @@ const experience = (): Experience[] => {
description: description:
"Développement d'une application de déploiement d'un ERP, avec la gestion d'une stack dev entièrement sur cluster", "Développement d'une application de déploiement d'un ERP, avec la gestion d'une stack dev entièrement sur cluster",
skills: [ skills: [
SpringBoot, mySkills.SpringBoot,
Angular, mySkills.Angular,
Kubernetes, mySkills.Kubernetes,
Helm, mySkills.Helm,
Skaffold, mySkills.Skaffold,
Scrum, mySkills.Scrum,
DevOps, mySkills.DevOps,
], ],
}, },
{ {
description: description:
"Développement d'une application de gestion de compatibilités de versions entre les modules d'un ERP", "Développement d'une application de gestion de compatibilités de versions entre les modules d'un ERP",
skills: [SpringBoot, Angular, Scrum], skills: [mySkills.SpringBoot, mySkills.Angular, mySkills.Scrum],
}, },
{ {
description: description:
"Support opérationnel et conception d'outils de livraison en production", "Support opérationnel et conception d'outils de livraison en production",
skills: [Bash, Ansible, Linux], skills: [mySkills.Bash, mySkills.Ansible, mySkills.Linux],
}, },
], ],
}, },
@ -107,17 +79,17 @@ const experience = (): Experience[] => {
{ {
description: description:
"Acteur et animateur de la cellule Industrialisation : standardisation et mise en place d'une chaîne CI", "Acteur et animateur de la cellule Industrialisation : standardisation et mise en place d'une chaîne CI",
skills: [Agility, DevOps, Jenkins], skills: [mySkills.Agility, mySkills.DevOps, mySkills.Jenkins],
}, },
{ {
description: description:
"Responsable projet : création d'un outil de déploiement d'applications et mise en place de tests sous Docker", "Responsable projet : création d'un outil de déploiement d'applications et mise en place de tests sous Docker",
skills: [Groovy, JUnit, Docker], skills: [mySkills.Groovy, mySkills.JUnit, mySkills.Docker],
}, },
{ {
description: description:
"Concepteur et développeur UX pour la plateforme de paiement", "Concepteur et développeur UX pour la plateforme de paiement",
skills: [Jee, HtmlCss, ExtJS, UX], skills: [mySkills.Jee, mySkills.HtmlCss, mySkills.ExtJS, mySkills.UX],
}, },
], ],
}, },
@ -130,17 +102,17 @@ const experience = (): Experience[] => {
{ {
description: description:
"Responsable technique du projet @CERES (plateforme de LMS) avec pour mission principale la modernisation du projet", "Responsable technique du projet @CERES (plateforme de LMS) avec pour mission principale la modernisation du projet",
skills: [Jee, ExtJS], skills: [mySkills.Jee, mySkills.ExtJS],
}, },
{ {
description: description:
"Mise à niveau de la plateforme en JEE et de l'UX en GWT", "Mise à niveau de la plateforme en JEE et de l'UX en GWT",
skills: [Jee, Gwt], skills: [mySkills.Jee, mySkills.Gwt],
}, },
{ {
description: description:
"Mise en place d'une chaîne de CI, de tests automatiques et d'une gestion de configuration", "Mise en place d'une chaîne de CI, de tests automatiques et d'une gestion de configuration",
skills: [Jenkins, Svn], skills: [mySkills.Jenkins, mySkills.Svn],
}, },
], ],
}, },
@ -153,17 +125,17 @@ const experience = (): Experience[] => {
{ {
description: description:
"UX designer sur un projet pour Dassault Aviation avec de fortes contraintes d'ergonomie et de performances", "UX designer sur un projet pour Dassault Aviation avec de fortes contraintes d'ergonomie et de performances",
skills: [Pencil, Blend, UX], skills: [mySkills.Pencil, mySkills.Blend, mySkills.UX],
}, },
{ {
description: description:
"Développement d'un framework graphique pour permettre de répondre aux contraites d'ergonomie de Dassault Aviation", "Développement d'un framework graphique pour permettre de répondre aux contraites d'ergonomie de Dassault Aviation",
skills: [DotNET, WPF, UX, CSHARP], skills: [mySkills.DotNET, mySkills.WPF, mySkills.UX, mySkills.CSHARP],
}, },
{ {
description: description:
"Création d'une application de tests UX automatiques avec une conception basée sur le découplage du scénario, du modèle représentant l'IHM et des données", "Création d'une application de tests UX automatiques avec une conception basée sur le découplage du scénario, du modèle représentant l'IHM et des données",
skills: [UIAutomation, CSHARP], skills: [mySkills.UIAutomation, mySkills.CSHARP],
}, },
], ],
}, },

162
src/data/skills.ts

@ -1,87 +1,89 @@
import type { Skill } from "@/data/types"; import type { Skill } from "@/data/types";
export const DevOps: Skill = { name: "DevOps", score: 0 }; const DevOps: Skill = { name: "DevOps", score: 0 };
export const Docker: Skill = { name: "Docker", score: 0, parent: [DevOps] }; const Docker: Skill = { name: "Docker", score: 0, parent: [DevOps] };
export const Kubernetes: Skill = { const Kubernetes: Skill = { name: "Kubernetes", score: 28, parent: [DevOps] };
name: "Kubernetes", const Skaffold: Skill = { name: "Skaffold", score: 24, parent: [Kubernetes] };
score: 28, const Ansible: Skill = { name: "Ansible", score: 17, parent: [DevOps] };
parent: [DevOps], const Helm: Skill = { name: "Helm", score: 14, parent: [Kubernetes] };
}; const UX: Skill = { name: "UX", score: 15 };
export const Skaffold: Skill = { const CI_CD: Skill = { name: "CI/CD", score: 16 };
name: "Skaffold", const Maven: Skill = { name: "Maven", score: 3 };
score: 24, const Npm: Skill = { name: "Npm", score: 4 };
parent: [Kubernetes], const Jenkins: Skill = { name: "Jenkins", score: 12, parent: [CI_CD, DevOps] };
}; const Linux: Skill = { name: "Linux", score: 23 };
export const Ansible: Skill = { name: "Ansible", score: 17, parent: [DevOps] }; const Git: Skill = { name: "Git", score: 12 };
export const Helm: Skill = { name: "Helm", score: 14, parent: [Kubernetes] }; const Svn: Skill = { name: "SVN", score: 1 };
const Java: Skill = { name: "Java", score: 6 };
export const UX: Skill = { name: "UX", score: 15 }; const SpringBoot: Skill = { name: "SpringBoot", score: 0, parent: [Java] };
const Jee: Skill = { name: "JEE", score: 26, parent: [Java] };
export const CI_CD: Skill = { name: "CI/CD", score: 16 }; const Gwt: Skill = { name: "GWT", score: 4, parent: [Java, UX] };
export const Maven: Skill = { name: "Maven", score: 3 }; const Typescript: Skill = { name: "Typescript", score: 25 };
export const Npm: Skill = { name: "Npm", score: 4 }; const Codecept: Skill = { name: "CodeceptJS", score: 25 };
export const Jenkins: Skill = { const Javascript: Skill = { name: "Javascript", score: 19 };
name: "Jenkins", const Angular: Skill = { name: "Angular", score: 17, parent: [Typescript, UX] };
score: 12, const React: Skill = { name: "React", score: 17, parent: [Typescript, UX] };
parent: [CI_CD, DevOps], const ReactNative: Skill = {
};
export const Linux: Skill = { name: "Linux", score: 23 };
export const Git: Skill = { name: "Git", score: 12 };
export const Svn: Skill = { name: "SVN", score: 1 };
export const Java: Skill = { name: "Java", score: 6 };
export const SpringBoot: Skill = {
name: "SpringBoot",
score: 0,
parent: [Java],
};
export const Jee: Skill = { name: "JEE", score: 26, parent: [Java] };
export const Gwt: Skill = { name: "GWT", score: 4, parent: [Java, UX] };
export const Typescript: Skill = { name: "Typescript", score: 25 };
export const Codecept: Skill = { name: "CodeceptJS", score: 25 };
export const Javascript: Skill = { name: "Javascript", score: 19 };
export const Angular: Skill = {
name: "Angular",
score: 17,
parent: [Typescript, UX],
};
export const React: Skill = {
name: "React",
score: 17,
parent: [Typescript, UX],
};
export const ReactNative: Skill = {
name: "React", name: "React",
score: 17, score: 17,
parent: [Typescript, UX], parent: [Typescript, UX],
}; };
export const ExtJS: Skill = { const ExtJS: Skill = { name: "ExtJS", score: 14, parent: [Javascript, UX] };
name: "ExtJS", const Bash: Skill = { name: "Bash", score: 0 };
score: 14, const HtmlCss: Skill = { name: "HtmlCss", score: 0 };
parent: [Javascript, UX], const Kotlin: Skill = { name: "Kotlin", score: 28 };
}; const Groovy: Skill = { name: "Groovy", score: 0 };
export const Bash: Skill = { name: "Bash", score: 0 }; const DotNET: Skill = { name: ".NET", score: 0 };
export const HtmlCss: Skill = { name: "HtmlCss", score: 0 }; const CSHARP: Skill = { name: "C#", score: 0, parent: [DotNET] };
export const Kotlin: Skill = { name: "Kotlin", score: 28 }; const WPF: Skill = { name: "WPF", score: 0, parent: [DotNET, UX] };
export const Groovy: Skill = { name: "Groovy", score: 0 }; const Blend: Skill = { name: "Blend", score: 0, parent: [DotNET, UX] };
const Pencil: Skill = { name: "Blend", score: 0, parent: [UX] };
export const DotNET: Skill = { name: ".NET", score: 0 }; const Agility: Skill = { name: "Agility", score: 0 };
export const CSHARP: Skill = { name: "C#", score: 0, parent: [DotNET] }; const Scrum: Skill = { name: "Scrum", score: 0, parent: [Agility] };
export const WPF: Skill = { name: "WPF", score: 0, parent: [DotNET, UX] }; const Tests: Skill = { name: "Tests", score: 0 };
export const Blend: Skill = { name: "Blend", score: 0, parent: [DotNET, UX] }; const UIAutomation: Skill = { name: "UIAutomation", score: 0, parent: [Tests] };
export const Pencil: Skill = { name: "Blend", score: 0, parent: [UX] }; const JUnit: Skill = { name: "JUnit", score: 0, parent: [Tests, Java] };
const Communication: Skill = { name: "Communication", score: 0 };
export const Agility: Skill = { name: "Agility", score: 0 };
export const Scrum: Skill = { name: "Scrum", score: 0, parent: [Agility] };
export const Tests: Skill = { name: "Tests", score: 0 };
export const UIAutomation: Skill = {
name: "UIAutomation",
score: 0,
parent: [Tests],
};
export const JUnit: Skill = { name: "JUnit", score: 0, parent: [Tests, Java] };
export const Communication: Skill = { name: "Communication", score: 0 }; export default {
DevOps,
Docker,
Kubernetes,
Skaffold,
Ansible,
Helm,
UX,
CI_CD,
Maven,
Npm,
Jenkins,
Linux,
Git,
Svn,
Java,
SpringBoot,
Jee,
Gwt,
Typescript,
Codecept,
Javascript,
Angular,
React,
ReactNative,
ExtJS,
Bash,
HtmlCss,
Kotlin,
Groovy,
DotNET,
CSHARP,
WPF,
Blend,
Pencil,
Agility,
Scrum,
Tests,
UIAutomation,
JUnit,
Communication,
} as { [key: string]: Skill };

1
tsconfig.json

@ -2,6 +2,7 @@
"extends": "@vue/tsconfig/tsconfig.web.json", "extends": "@vue/tsconfig/tsconfig.web.json",
"include": ["env.d.ts", "src/**/*", "src/**/*.vue"], "include": ["env.d.ts", "src/**/*", "src/**/*.vue"],
"compilerOptions": { "compilerOptions": {
"allowJs": true,
"baseUrl": ".", "baseUrl": ".",
"paths": { "paths": {
"@/*": ["./src/*"] "@/*": ["./src/*"]

Loading…
Cancel
Save