Skip to content

Commit

Permalink
First commit
Browse files Browse the repository at this point in the history
  • Loading branch information
R0mm1 committed Aug 19, 2022
0 parents commit 44c4409
Show file tree
Hide file tree
Showing 40 changed files with 17,130 additions and 0 deletions.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
.nuxt
node_modules
.idea
.output
18 changes: 18 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
FROM node as build

COPY . /app

WORKDIR /app

RUN npm i
RUN npm run build

FROM build

RUN mkdir /app_built
RUN cp -r /app/.output/* /app_built
RUN rm -r /app

WORKDIR /app_built

CMD node server/index.mjs
31 changes: 31 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# My personal site

A small site to talk about me.

## Setup

```bash
npm i
```

## Development Server

Start the development server on http://localhost:3000

```bash
npm run dev
```

## Production

Build the application for production:

```bash
npm run build
```

Locally preview production build:

```bash
npm run preview
```
5 changes: 5 additions & 0 deletions assets/breakpoints.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
@mixin phone-portrait {
@media (max-width: 500px) {
@content;
}
}
6 changes: 6 additions & 0 deletions assets/colors.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
$font: #dcdcdc;
$bg1: #303030;
$bg2: #151515;
$border: #424242;
$border-clear: #d0d0d0;
$gold: #55450d;
67 changes: 67 additions & 0 deletions components/cv/cvLeftMenuItem.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
<template>
<left-menu-item :page="item.page" :indent="indent">
<template v-slot:title>
{{ item.title }}
</template>
<template v-slot:subtitle>
<span class="start-date">
{{ months[item.startDate.getMonth()] }} {{ item.startDate.getFullYear() }}
</span>
<span class="end-date">
<font-awesome-icon class="caret-right" :icon="['fas', 'caret-right']"/>
<template v-if="item.endDate !== null">
{{ months[item.endDate.getMonth()] }} {{ item.endDate.getFullYear() }}
</template>
<template v-else>Aujourd'hui</template>
</span>
</template>
<template v-slot:children>
<cvLeftMenuItemChild v-for="child in item.children" :key="child.title" :indent="indent+1"
:item="child"/>
</template>
</left-menu-item>
</template>

<script setup lang="ts">
import LeftMenuItem from "~/components/share/leftMenu/leftMenuItem.vue";
import {defineAsyncComponent, PropType} from "vue";
import Experience from "~/ts/contracts/cv/Experience";
const cvLeftMenuItemChild = defineAsyncComponent(() => import('./cvLeftMenuItem.vue'))
defineProps({
item: {
type: Object as PropType<Experience>,
required: true
},
indent: {
type: Number,
required: false,
default: 0
}
})
const months = {
0: 'janvier',
1: 'février',
2: 'mars',
3: 'avril',
4: 'mai',
5: 'juin',
6: 'juillet',
7: 'août',
8: 'septembre',
9: 'octobre',
10: 'novembre',
11: 'décembre',
}
</script>

<style scoped lang="scss">
@import "assets/colors.scss";
.caret-right {
margin: 0 3px;
}
</style>

35 changes: 35 additions & 0 deletions components/cv/experienceDetail.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<template>
<div class="experience-detail">
<h1>
<slot name="title"/>
</h1>
<h2>
<slot name="dates"/>
</h2>
<p>
<slot name="intro"/>
</p>
<div>
<slot name="content"/>
</div>
</div>
</template>

<script setup lang="ts">
</script>

<style scoped lang="scss">
@import "assets/breakpoints";
$xpDetailsPaddingX: 15px;
.experience-detail {
padding: 0 $xpDetailsPaddingX;
overflow-y: auto;
@include phone-portrait{
width: calc(100vw - 10px - $xpDetailsPaddingX - $xpDetailsPaddingX - 5px);
margin-left: 10px;
}
}
</style>
151 changes: 151 additions & 0 deletions components/cv/technoBadges.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,151 @@
<template>
<table id="techno-badges">
<tr v-if="technoLanguage.length > 0" class="badges-row">
<th class="badges-label">Langages</th>
<td>
<techno-badge v-for="technoBadge in technoLanguage" :badge="technoBadge"/>
</td>
</tr>
<tr v-if="technoFramework.length > 0" class="badges-row">
<th class="badges-label">Frameworks</th>
<td>
<techno-badge v-for="technoBadge in technoFramework" :badge="technoBadge"/>
</td>
</tr>
<tr v-if="technoTemplating.length > 0" class="badges-row">
<th class="badges-label">Templating</th>
<td>
<techno-badge v-for="technoBadge in technoTemplating" :badge="technoBadge"/>
</td>
</tr>
<tr v-if="technoOs.length > 0" class="badges-row">
<th class="badges-label">Systèmes d'exploitation</th>
<td>
<techno-badge v-for="technoBadge in technoOs" :badge="technoBadge"/>
</td>
</tr>
<tr v-if="technoLibraries.length > 0" class="badges-row">
<th class="badges-label">Librairies</th>
<td>
<techno-badge v-for="technoBadge in technoLibraries" :badge="technoBadge"/>
</td>
</tr>
<tr v-if="technoDb.length > 0" class="badges-row">
<th class="badges-label">Base de données</th>
<td>
<techno-badge v-for="technoBadge in technoDb" :badge="technoBadge"/>
</td>
</tr>
<tr v-if="technoVersioning.length > 0" class="badges-row">
<th class="badges-label">Versioning</th>
<td>
<techno-badge v-for="technoBadge in technoVersioning" :badge="technoBadge"/>
</td>
</tr>
<tr v-if="technoCi.length > 0" class="badges-row">
<th class="badges-label">Conteneurisation, CI/CD...</th>
<td>
<techno-badge v-for="technoBadge in technoCi" :badge="technoBadge"/>
</td>
</tr>
<tr v-if="technoRouting.length > 0" class="badges-row">
<th class="badges-label">Routage</th>
<td>
<techno-badge v-for="technoBadge in technoRouting" :badge="technoBadge"/>
</td>
</tr>
<tr v-if="technoAuthentication.length > 0" class="badges-row">
<th class="badges-label">Authentification</th>
<td>
<techno-badge v-for="technoBadge in technoAuthentication" :badge="technoBadge"/>
</td>
</tr>
</table>
</template>

<script setup lang="ts">
import {PropType} from "vue";
import {
Badge, BadgeAuthentication,
BadgeCi,
BadgeDb,
BadgeFramework,
BadgeLanguage,
BadgeLibraries,
BadgeOs, BadgeRouting,
BadgeTemplating, BadgeVersioning
} from "~/ts/contracts/cv/Badge";
import TechnoBadge from "~/components/share/technoBadge.vue";
defineProps({
technoLanguage: {
type: Array as PropType<BadgeLanguage[]>,
required: false,
default: () => []
},
technoFramework: {
type: Array as PropType<BadgeFramework[]>,
required: false,
default: () => []
},
technoTemplating: {
type: Array as PropType<BadgeTemplating[]>,
required: false,
default: () => []
},
technoOs: {
type: Array as PropType<BadgeOs[]>,
required: false,
default: () => []
},
technoLibraries: {
type: Array as PropType<BadgeLibraries[]>,
required: false,
default: () => []
},
technoDb: {
type: Array as PropType<BadgeDb[]>,
required: false,
default: () => []
},
technoVersioning: {
type: Array as PropType<BadgeVersioning[]>,
required: false,
default: () => []
},
technoCi: {
type: Array as PropType<BadgeCi[]>,
required: false,
default: () => []
},
technoRouting: {
type: Array as PropType<BadgeRouting[]>,
required: false,
default: () => []
},
technoAuthentication: {
type: Array as PropType<BadgeAuthentication[]>,
required: false,
default: () => []
}
})
</script>

<style scoped lang="scss">
@import "assets/breakpoints.scss";
@import "assets/colors.scss";
@include phone-portrait {
.badges-row:not(:last-of-type) {
th, td {
border-bottom: 1px solid rgba(0, 0, 0, 0.3);
}
}
}
.badges-label {
padding-right: 15px;
text-align: left;
font-weight: 500;
}
</style>
27 changes: 27 additions & 0 deletions components/projet/projetLeftMenuItem.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<template>
<left-menu-item :page="item.page" :indent="0">
<template v-slot:title>
{{item.title}}
</template>
<template v-slot:subtitle>
{{item.subtitle}}
</template>
</left-menu-item>
</template>

<script setup lang="ts">
import LeftMenuItem from "~/components/share/leftMenu/leftMenuItem.vue";
import LeftMenuItemObject from '~/ts/contracts/components/leftMenu/LeftMenuItem';
import {PropType} from "vue";
const props = defineProps({
item: {
type: Object as PropType<LeftMenuItemObject>,
required: true
}
})
</script>

<style scoped>
</style>
31 changes: 31 additions & 0 deletions components/share/githubBadge.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<template>
<div class="github-badge">
<font-awesome-icon :icon="['fab', 'github']"/>
<a target="_blank" :href="'https://github.com/' + link">Voir sur Github</a>
</div>
</template>

<script setup lang="ts">
defineProps({
link: {
type: String,
required: true
}
})
</script>

<style scoped lang="scss">
@import "assets/colors.scss";
.github-badge {
padding: 3px;
border: 1px solid $font;
border-radius: 3px;
display: inline-block;
a {
text-decoration: none;
padding-left: 3px;
}
}
</style>
Loading

0 comments on commit 44c4409

Please sign in to comment.