From 08599b09d19cc335bae869e8eec1a5eccb7e2756 Mon Sep 17 00:00:00 2001 From: Arthur Danjou Date: Fri, 2 Apr 2021 21:58:07 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=92=BB=20|=20Working=20so=20hard=20on=20t?= =?UTF-8?q?he=20design=20review?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- @types/index.d.ts | 11 +- @types/types.ts | 25 +- docker-compose.yml | 70 ++ package.json | 30 +- settings/Arch.ts | 8 +- settings/Build.ts | 13 +- settings/BuildModules.ts | 10 +- settings/Plugins.ts | 4 +- settings/Style.ts | 4 +- src/assets/css/style.scss | 2 +- src/components/AboutPreview.vue | 43 + src/components/Ad.vue | 41 + src/components/AdPreview.vue | 46 + src/components/Banner.vue | 29 + src/components/Button.vue | 27 + src/components/Experience.vue | 6 +- src/components/Footer.vue | 4 +- src/components/Formation.vue | 10 +- src/components/Header.vue | 50 +- src/components/HomeLink.vue | 87 -- src/components/PageTitle.vue | 22 +- src/components/Post.vue | 103 +- src/components/PostsPreview.vue | 57 ++ src/components/Project.vue | 74 ++ src/components/ProjectsPreview.vue | 53 + src/components/Skill.vue | 29 +- src/components/StrategyPart.vue | 38 + src/components/StrategyPreview.vue | 49 + src/components/TagPreview.vue | 28 + src/content/articles/en/how-i-start.md | 2 +- .../articles/en/new-version-new-website.md | 2 +- src/content/articles/fr/how-i-start.md | 2 +- .../articles/fr/new-version-new-website.md | 3 +- src/content/{works.json => projects.json} | 8 +- src/layouts/default.vue | 4 +- src/layouts/dev.vue | 13 - src/locales/en-EN.ts | 6 +- src/locales/fr-FR.ts | 4 +- src/pages/about.vue | 78 +- src/pages/blog/_slug.vue | 141 +-- src/pages/blog/index.vue | 270 +---- src/pages/dev.vue | 14 - src/pages/index.vue | 106 +- src/pages/uses.vue | 76 +- src/plugins/i18n.ts | 7 + windi.config.js | 1 - yarn.lock | 935 ++---------------- 47 files changed, 1036 insertions(+), 1609 deletions(-) create mode 100644 docker-compose.yml create mode 100644 src/components/AboutPreview.vue create mode 100644 src/components/Ad.vue create mode 100644 src/components/AdPreview.vue create mode 100644 src/components/Banner.vue create mode 100644 src/components/Button.vue delete mode 100644 src/components/HomeLink.vue create mode 100644 src/components/PostsPreview.vue create mode 100644 src/components/Project.vue create mode 100644 src/components/ProjectsPreview.vue create mode 100644 src/components/StrategyPart.vue create mode 100644 src/components/StrategyPreview.vue create mode 100644 src/components/TagPreview.vue rename src/content/{works.json => projects.json} (90%) delete mode 100644 src/layouts/dev.vue delete mode 100644 src/pages/dev.vue create mode 100644 src/plugins/i18n.ts diff --git a/@types/index.d.ts b/@types/index.d.ts index aa09bc0..4c75853 100644 --- a/@types/index.d.ts +++ b/@types/index.d.ts @@ -1,28 +1,33 @@ import { NuxtAxiosInstance } from '@nuxtjs/axios' import VueI18n, {IVueI18n} from "vue-i18n"; import {ColorModeInstance} from "@nuxtjs/color-mode/types/color-mode"; +import {NuxtApp} from "@nuxt/types/app"; declare module 'vue/types/vue' { interface Vue { $axios: NuxtAxiosInstance, + i18n: VueI18n & IVueI18n } } declare module '@nuxt/types' { interface NuxtAppOptions { $axios: NuxtAxiosInstance, + i18n: VueI18n & IVueI18n } interface Context { $axios: NuxtAxiosInstance, - $i18n: VueI18n & IVueI18n - $colorMode: ColorModeInstance + i18n: VueI18n & IVueI18n + $colorMode: ColorModeInstance, + $app: NuxtApp } } declare module 'vuex/types/index' { interface Store { - $axios: NuxtAxiosInstance + $axios: NuxtAxiosInstance, + i18n: VueI18n & IVueI18n } } diff --git a/@types/types.ts b/@types/types.ts index 16dcc5a..be016f6 100644 --- a/@types/types.ts +++ b/@types/types.ts @@ -36,5 +36,28 @@ interface Formation { end_date: string } +interface Tag { + slug: string +} -export { FormData, InfoData, Skill, Experience, Formation } +interface Post { + slug: string, + title: string, + description: string, + reading_time: number, + tags: Array, + cover: string, + date: string +} + +interface Project { + slug: string, + title: string, + description: string, + url: string, + cover: string, + color: string, + skills: Array +} + +export { FormData, InfoData, Skill, Experience, Formation, Post, Tag, Project } diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..85d9a31 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,70 @@ +version: "3" + +networks: + proxy: + name: proxy + external: true + internal: + name: internal + external: false + +services: + artsite: + image: artsite:latest + container_name: artsite + labels: + - traefik.http.routers.artsite.rule=Host(`arthurdanjou.fr`) + - traefik.http.routers.artsite.tls=true + - traefik.http.routers.artsite.tls.certresolver=lets-encrypt + - traefik.docker.network=proxy + - traefik.port=443 + ports: + - 3333:3333 + networks: + - internal + - proxy + depends_on: + - artapi + artapi: + image: artapi:latest + container_name: artapi + labels: + - traefik.http.routers.artapi.rule=Host(`api.arthurdanjou.fr`) + - traefik.http.routers.artapi.tls=true + - traefik.http.routers.artapi.tls.certresolver=lets-encrypt + - traefik.docker.network=proxy + - traefik.port=443 + ports: + - 5555:5555 + networks: + - internal + - proxy + depends_on: + - mariadb + - redis + mariadb: + image: mariadb:10.5.8-focal + container_name: mariadb + environment: + MYSQL_ROOT_PASSWORD: + ports: + - 3306:3306 + networks: + - internal + - proxy + labels: + - traefik.tcp.routers.sql.entrypoints=sql + - traefik.tcp.routers.sql.rule=HostSNI(`sql.arthurdanjou.fr`) + - traefik.docker.network=proxy + volumes: + - "/root/mariadb/data:/var/lib/mysql" + redis: + image: redis:6.0.10 + container_name: redis + command: redis-server + ports: + - 6379:6379 + networks: + - internal + volumes: + - "/root/redis/data:/data" \ No newline at end of file diff --git a/package.json b/package.json index 46a27e2..8d38e20 100644 --- a/package.json +++ b/package.json @@ -9,24 +9,24 @@ "generate": "nuxt generate" }, "dependencies": { - "@nuxt/content": "^1.11.1", - "@nuxtjs/axios": "^5.12.5", - "@nuxtjs/composition-api": "^0.22.2", - "core-js": "^3.9.1", - "nuxt": "2.15.3", - "nuxt-i18n": "6.21.1", - "prism-themes": "1.6.0", - "sass": "1.32.8" + "@nuxt/content": "^1.14.0", + "@nuxtjs/axios": "^5.13.1", + "@nuxtjs/composition-api": "^0.22.4", + "core-js": "^3.10.0", + "nuxt": "^2.15.3", + "nuxt-i18n": "^6.22.3", + "prism-themes": "^1.6.0", + "sass": "^1.32.8" }, "devDependencies": { - "@nuxt/types": "^2.14.12", - "@nuxt/typescript-build": "^2.0.4", - "@nuxtjs/color-mode": "2.0.5", - "node-sass": "^5.0.0", + "@nuxt/types": "^2.15.3", + "@nuxt/typescript-build": "^2.1.0", + "@nuxtjs/color-mode": "^2.0.5", + "fibers": "^5.0.0", "nuxt-vite": "^0.0.36", - "nuxt-windicss": "^0.4.6", - "sass-loader": "10.1.1", - "vite-plugin-windicss": "^0.11.2", + "nuxt-windicss": "^0.5.3", + "sass-loader": "^10.1.1", + "vite-plugin-windicss": "^0.11.3", "vue-windicss-preprocess": "^2.2.0" } } diff --git a/settings/Arch.ts b/settings/Arch.ts index 80f90e4..a189bf2 100644 --- a/settings/Arch.ts +++ b/settings/Arch.ts @@ -13,10 +13,6 @@ const build = { extractCss: true, } -const generate = { - interval: 2000, -} - const pageTransition = { name: 'page', mode: 'out-in', @@ -32,4 +28,6 @@ const components = true const buildDir = 'build' -export default { srcDir, dir, generate, build, pageTransition, target, server, buildDir, components } +const ssr = true + +export default { srcDir, dir, build, pageTransition, target, server, buildDir, components, ssr } diff --git a/settings/Build.ts b/settings/Build.ts index fa83456..5cd756f 100644 --- a/settings/Build.ts +++ b/settings/Build.ts @@ -1,15 +1,4 @@ // Build Configuration: https://go.nuxtjs.dev/config-build export default { - extend(config: any) { - config.module.rules.push({ - test: /\.vue$/, - loader: 'vue-windicss-preprocess', - options: { - compile: true, // false: interpretation mode; true: compilation mode - globalPreflight: true, // set preflight style is global or scoped - globalUtility: true, // set utility style is global or scoped - prefix: 'windi-' // set compilation mode style prefix - } - }) - } + } diff --git a/settings/BuildModules.ts b/settings/BuildModules.ts index d58eb01..2c5911a 100644 --- a/settings/BuildModules.ts +++ b/settings/BuildModules.ts @@ -21,7 +21,7 @@ const windicss = { ], include: [] }, - transformCSS: 'post', + transformCSS: 'pre', preflight: { alias: { // add nuxt aliases @@ -32,10 +32,16 @@ const windicss = { } } +const vite = { + vue: { + jsx: false + } +} + export default [ '@nuxt/typescript-build', '@nuxtjs/composition-api', ['nuxt-windicss', windicss], - 'nuxt-vite', + //['nuxt-vite', vite], ['@nuxtjs/color-mode', color_mode], ] as NuxtOptionsModule[] diff --git a/settings/Plugins.ts b/settings/Plugins.ts index 1b27156..5bd91da 100644 --- a/settings/Plugins.ts +++ b/settings/Plugins.ts @@ -1,2 +1,4 @@ // Plugins to run before rendering page: https://go.nuxtjs.dev/config-plugins -export default [] +export default [ + { src: '~/plugins/i18n.ts' } +] diff --git a/settings/Style.ts b/settings/Style.ts index ff84f4d..b2041dc 100644 --- a/settings/Style.ts +++ b/settings/Style.ts @@ -1,2 +1,4 @@ // Global CSS: https://go.nuxtjs.dev/config-css -export default [] +export default [ + '@/assets/css/style.scss' +] diff --git a/src/assets/css/style.scss b/src/assets/css/style.scss index 8a33fa3..054023d 100644 --- a/src/assets/css/style.scss +++ b/src/assets/css/style.scss @@ -10,7 +10,7 @@ img, svg { } body { - @apply dark:bg-dark-900 + @apply dark:bg-black dark:text-white } * { diff --git a/src/components/AboutPreview.vue b/src/components/AboutPreview.vue new file mode 100644 index 0000000..61cbccd --- /dev/null +++ b/src/components/AboutPreview.vue @@ -0,0 +1,43 @@ + + + + + diff --git a/src/components/Ad.vue b/src/components/Ad.vue new file mode 100644 index 0000000..0a84d9e --- /dev/null +++ b/src/components/Ad.vue @@ -0,0 +1,41 @@ + + + + + diff --git a/src/components/AdPreview.vue b/src/components/AdPreview.vue new file mode 100644 index 0000000..9192e65 --- /dev/null +++ b/src/components/AdPreview.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/src/components/Banner.vue b/src/components/Banner.vue new file mode 100644 index 0000000..482d47a --- /dev/null +++ b/src/components/Banner.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/src/components/Button.vue b/src/components/Button.vue new file mode 100644 index 0000000..939c41f --- /dev/null +++ b/src/components/Button.vue @@ -0,0 +1,27 @@ + + + + + diff --git a/src/components/Experience.vue b/src/components/Experience.vue index 36f71f2..2ec7bf7 100644 --- a/src/components/Experience.vue +++ b/src/components/Experience.vue @@ -51,14 +51,14 @@ export default { } }, setup(props: ExperienceProps) { - const {$i18n} = useContext() + const {i18n} = useContext() const getBeginDate = computed(() => { const dateFormat = props.begin.split('-') - return $i18n.t('month.' + dateFormat[0]) + " " + dateFormat[1] + return i18n.t('month.' + dateFormat[0]) + " " + dateFormat[1] }) const getEndDate = computed(() => { const dateFormat = props.end.split('-') - return props.end === 'Today' ? $i18n.t('date.today') : $i18n.t('month.' + dateFormat[0]) + " " + dateFormat[1] + return props.end === 'Today' ? i18n.t('date.today') : i18n.t('month.' + dateFormat[0]) + " " + dateFormat[1] }) const isSameDate = () => { diff --git a/src/components/Footer.vue b/src/components/Footer.vue index 30e14fb..4f11645 100644 --- a/src/components/Footer.vue +++ b/src/components/Footer.vue @@ -1,5 +1,5 @@