index.vue 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. <template>
  2. <PageMeta
  3. title="Olivier Massot - Fullstack developer"
  4. description=""
  5. />
  6. <div class="banner">
  7. <h1>
  8. {{ $t('Fullstack developer') }}
  9. </h1>
  10. <h2>
  11. {{ $t('x_years_experience', { years: XP_YEARS }) }}
  12. </h2>
  13. <div class="introduction">
  14. <div>
  15. {{ $t('intro_part_1') }}
  16. </div>
  17. <div>
  18. {{ $t('intro_part_2') }}
  19. </div>
  20. <div>
  21. {{ $t('intro_part_3') }}
  22. </div>
  23. <div v-html="$t('intro_part_4')" />
  24. <div>
  25. {{ $t('intro_part_5') }}
  26. </div>
  27. <div class="logos mt-3">
  28. <BannerLogo
  29. href="https://github.com/olinox14"
  30. img="/images/logos/github_large_dark.png"
  31. :alt="i18n.t('Find me on Github')"
  32. />
  33. <BannerLogo
  34. href="https://stackoverflow.com/users/4279120/olinox14"
  35. img="/images/logos/stackoverflow.svg"
  36. :alt="i18n.t('Find me on Stackoverflow')"
  37. class="so-logo"
  38. />
  39. <BannerLogo
  40. href="https://www.linkedin.com/in/olivier-massot-60b87b181"
  41. img="/images/logos/linkedin.png"
  42. :alt="i18n.t('Find me on LinkedIn')"
  43. />
  44. <BannerLogo
  45. href="https://www.codingame.com/profile/75dcc329745def530c02ddb4485f22235683081"
  46. img="/images/logos/codingame.svg"
  47. :alt="i18n.t('Find me on Codingame')"
  48. />
  49. </div>
  50. </div>
  51. </div>
  52. <div class="badges">
  53. <v-container>
  54. <v-row>
  55. <v-col cols="4">
  56. <div class="badges-section">
  57. <h2>Languages</h2>
  58. <Badge
  59. title="Python"
  60. img="/images/logos/python.svg"
  61. :subtitle="$t('x_years', { years: 10 })"
  62. details="J'ai travaillé sur de très nombreux projets avec Python, depuis la version 2.7 jusqu'à la version 3.12: scripts variés, extensions QGis, projets web, librairies, utilitaires ou applications buraeautiques."
  63. />
  64. <Badge title="PHP" img="/images/logos/php.svg" :subtitle="$t('x_years', { years: 4 })" />
  65. <Badge title="Node.js" img="/images/logos/node-light.svg" :subtitle="$t('x_years', { years: 5 })" />
  66. <Badge title="C#" img="/images/logos/csharp.png" :subtitle="$t('x_years', { years: 2 })" />
  67. </div>
  68. <div class="badges-section">
  69. <h2>Frameworks</h2>
  70. <Badge title="Symfony" img="/images/logos/symfony.svg" :subtitle="$t('x_years', { years: 4 })" />
  71. <Badge title="Vue.js" img="/images/logos/vue.png" :subtitle="$t('x_years', { years: 3 })" />
  72. <Badge title="Nuxt.js" img="/images/logos/nuxt.svg" :subtitle="$t('x_years', { years: 3 })" />
  73. <Badge title="Django" img="/images/logos/django-light.svg" :subtitle="$t('x_years', { years: 3 })" />
  74. <Badge title=".Net" img="/images/logos/dotnet.svg" :subtitle="$t('x_years', { years: 2 })" />
  75. <Badge title="Jquery" img="/images/logos/jquery.png" :subtitle="$t('x_years', { years: 4 })"/>
  76. </div>
  77. </v-col>
  78. <v-col cols="4">
  79. <div class="badges-section">
  80. <h2>DBs and search-engines</h2>
  81. <Badge title="Mysql" img="/images/logos/mysql.png" :subtitle="$t('x_years', { years: 6 })" />
  82. <Badge title="MariaDb" img="/images/logos/mariadb.svg" :subtitle="$t('x_years', { years: 6 })" />
  83. <Badge title="Postgresql" img="/images/logos/postgresql.png" :subtitle="$t('x_years', { years: 4 })"/>
  84. <Badge title="SQL-Server" img="/images/logos/sql-server.svg" :subtitle="$t('x_years', { years: 6 })" />
  85. <Badge title="Sqlite" img="/images/logos/sqlite.png" :subtitle="$t('x_years', { years: 5 })" />
  86. <Badge title="Solr" img="/images/logos/solr.png" :subtitle="$t('x_years', { years: 1 })" />
  87. </div>
  88. <div class="badges-section">
  89. <h2>Devops</h2>
  90. <Badge title="Docker" img="/images/logos/docker.svg" :subtitle="$t('x_years', { years: 5 })" />
  91. <Badge title="Gitlab CI" img="/images/logos/gitlab.svg" :subtitle="$t('x_years', { years: 8 })" />
  92. <Badge title="Github Actions" img="/images/logos/github-light.svg" :subtitle="$t('x_years', { years: 1 })" />
  93. <Badge title="Jenkins" img="/images/logos/jenkins.png" :subtitle="$t('x_years', { years: 4 })" />
  94. </div>
  95. </v-col>
  96. <v-col cols="4">
  97. <div class="badges-section">
  98. <h2>CMS</h2>
  99. <Badge title="Typo3" img="/images/logos/typo3.png" :subtitle="$t('x_years', { years: 4 })" />
  100. <Badge title="Wordpress" img="/images/logos/wordpress.png" :subtitle="$t('x_years', { years: 6 })"/>
  101. </div>
  102. <div class="badges-section">
  103. <h2>Other</h2>
  104. <Badge title="Mercure (SSE)" img="/images/logos/mercure.svg" :subtitle="$t('x_years', { years: 3 })" />
  105. <Badge title="Nextcloud" img="/images/logos/nextcloud.svg" :subtitle="$t('x_years', { years: 6 })" />
  106. </div>
  107. </v-col>
  108. </v-row>
  109. </v-container>
  110. </div>
  111. </template>
  112. <script setup lang="ts">
  113. const i18n = useI18n()
  114. const START_YEAR = 2011
  115. const CURRENT_YEAR = new Date().getFullYear();
  116. const XP_YEARS = CURRENT_YEAR - START_YEAR
  117. </script>
  118. <style scoped lang="scss">
  119. .banner {
  120. display: flex;
  121. flex-direction: column;
  122. justify-content: center;
  123. align-items: center;
  124. text-align: center;
  125. padding: 20px;
  126. h2 {
  127. margin: 18px 0 36px 0;
  128. border-bottom: none;
  129. }
  130. .introduction {
  131. max-width: 800px;
  132. text-align: justify;
  133. padding: 36px 64px;
  134. border: solid 1px rgba(var(--v-theme-on-neutral), 0.4);
  135. border-radius: 16px;
  136. background: rgba(var(--v-theme-primary-alt), 0.1);
  137. > div {
  138. margin-bottom: 16px;
  139. }
  140. :deep(a) {
  141. color: rgb(var(--v-theme-on-neutral));
  142. font-weight: 700;
  143. text-decoration: none;
  144. }
  145. .logos {
  146. display: flex;
  147. flex-direction: row;
  148. .so-logo {
  149. background-color: white;
  150. border-radius: 6px;
  151. }
  152. }
  153. }
  154. }
  155. .badges {
  156. }
  157. .badges-section {
  158. display: flex;
  159. flex-direction: column;
  160. flex-wrap: wrap;
  161. justify-content: center;
  162. .v-card {
  163. margin: 24px;
  164. }
  165. }
  166. </style>