diff --git a/nuxt.config.ts b/nuxt.config.ts
index 4d103bb..3522cdf 100755
--- a/nuxt.config.ts
+++ b/nuxt.config.ts
@@ -1,22 +1,125 @@
-import head from './settings/Head'
-import buildModules from './settings/BuildModules'
-import modules from './settings/Modules'
-import build from './settings/Build'
-import arch from './settings/Arch'
-import plugins from './settings/Plugins'
-import css from './settings/Style'
-import configs from './settings/RuntimeConfig'
-import {NuxtConfig} from "@nuxt/types";
+import WindicssConfig from "./settings/WindicssConfig";
+import ColorModeConfig from "./settings/ColorModeConfig";
+import HeadConfig from "./settings/HeadConfig";
+import SentryConfig from "./settings/SentryConfig";
+import AxiosConfig from "./settings/AxiosConfig";
+import I18nConfig from "./settings/I18nConfig";
+import StorageConfig from "./settings/StorageConfig";
+import RobotsConfig from "./settings/RobotsConfig";
+import EnvConfig from "./settings/EnvConfig";
+import RedirectConfig from "./settings/RedirectConfig";
+import SiteMapConfig from "./settings/SiteMapConfig";
+import {defineNuxtConfig} from "nuxt3";
-const config = {
- head,
- modules,
- ...arch,
- build,
- plugins,
- css,
- buildModules,
- ...configs,
-} as NuxtConfig
+export default defineNuxtConfig({
+ target: 'server',
+ ssr: true,
-export default config
+ server: {
+ host: '0.0.0.0',
+ port: 3333
+ },
+
+ proxy: {
+ '/api': {
+ target: 'https://athena.arthurdanjou.fr',
+ pathRewrite: { "^/api": "" }
+ }
+ },
+
+ router: {
+ middleware: [
+ 'maintenance'
+ ]
+ },
+
+ srcDir: 'src',
+ dir: {
+ assets: 'assets',
+ layouts: 'layouts',
+ middleware: 'middlewares',
+ pages: 'pages',
+ static: 'static',
+ store: 'store',
+ },
+
+ components: [
+ 'components',
+ 'components/icons'
+ ],
+
+ build: {
+ extractCSS: true,
+ babel: {
+ plugins: [
+ ['@babel/plugin-proposal-private-methods', { loose: true }]
+ ],
+ }
+ },
+
+ pageTransition: {
+ name: 'page',
+ mode: 'out-in',
+ },
+
+ buildModules: [
+ ['nuxt-windicss', WindicssConfig],
+ // ['@nuxtjs/color-mode', ColorModeConfig],
+ ],
+
+ modules: [
+ // ['@nuxtjs/axios', AxiosConfig],
+ // ['@nuxtjs/i18n', I18nConfig],
+ // ['@nuxt/content', content],
+ // ['@nuxtjs/universal-storage', StorageConfig],
+ // ['@nuxtjs/robots', RobotsConfig],
+ // ['@nuxtjs/sitemap', SiteMapConfig],
+ // ['@nuxtjs/redirect-module', RedirectConfig],
+ // ['@nuxtjs/dotenv', EnvConfig],
+ // ['@nuxtjs/sentry', SentryConfig]
+ ],
+
+ head: {
+ meta: [
+ { charset: 'utf-8' },
+ { lang: 'fr-FR' },
+ { name: 'viewport', content: 'width=device-width, initial-scale=1' },
+ { hid: 'description', name: 'description', content: HeadConfig.description },
+
+ /**
+ * Open graph
+ * See : https://ogp.me/
+ */
+ { hid: 'og:type', name: 'og:type', content: 'website' },
+ { hid: 'og:url', name: 'og:url', content: HeadConfig.url },
+ { hid: 'og:title', name: 'og:title', content: HeadConfig.title },
+ { hid: 'og:site_name', name: 'og:site_name', content: HeadConfig.title },
+ { hid: 'og:locale', name: 'og:locale', content: 'fr' },
+ { hid: 'og:image', name: 'og:image', content: HeadConfig.image },
+
+ { name: 'msapplication-TileColor', content: HeadConfig.color },
+ { name: 'theme-color', content: HeadConfig.color },
+ ],
+ link: [
+ { rel: 'icon', type: HeadConfig.favicon.type, href: HeadConfig.favicon.href },
+ { rel: 'preconnect', href: 'https://fonts.googleapis.com' },
+ { rel: 'preconnect', href: 'https://fonts.googleapis.com', crossOrigin: 'true' },
+ { rel: 'stylesheet', href: 'https://fonts.googleapis.com/css2?family=Raleway:wght@500&family=Roboto:wght@900&display=swap' }
+ ],
+ },
+
+ plugins: [
+ {
+ src: '~/plugins/i18n.ts'
+ }
+ ],
+
+ publicRuntimeConfig: {
+
+ },
+
+ privateRuntimeConfig: {
+ API_TOKEN: process.env.API_TOKEN,
+ SENTRY_DSN: process.env.SENTRY_DSN
+ }
+})
diff --git a/package.json b/package.json
index 2656ec7..c3d77f1 100644
--- a/package.json
+++ b/package.json
@@ -3,15 +3,13 @@
"version": "1.0.0",
"private": true,
"scripts": {
- "dev": "nuxt",
- "build": "nuxt build",
- "start": "nuxt start",
+ "dev": "nuxi dev",
+ "build": "nuxi build",
+ "start": "node .nuxt/server/index.mjs",
"analyse": "windicss-analysis"
},
"dependencies": {
- "@nuxt/content": "^1.15.0",
"@nuxtjs/axios": "^5.13.6",
- "@nuxtjs/composition-api": "^0.29.3",
"@nuxtjs/dotenv": "^1.4.1",
"@nuxtjs/i18n": "^7.1.0",
"@nuxtjs/proxy": "^2.1.0",
@@ -23,13 +21,12 @@
"axios": "^0.24.0",
"blobity": "^0.1.7",
"core-js": "^3.19.1",
- "nuxt": "^2.15.8",
+ "nuxt3": "latest",
"prism-themes": "^1.9.0",
"sass": "^1.43.4"
},
"devDependencies": {
"@nuxt/types": "^2.15.8",
- "@nuxt/typescript-build": "^2.1.0",
"@nuxtjs/color-mode": "^2.1.1",
"markdown-it-prism": "^2.2.1",
"nuxt-windicss": "^2.0.11",
diff --git a/settings/Arch.ts b/settings/Arch.ts
deleted file mode 100755
index e60cba3..0000000
--- a/settings/Arch.ts
+++ /dev/null
@@ -1,48 +0,0 @@
-const srcDir = 'src'
-
-const dir = {
- assets: 'assets',
- layouts: 'layouts',
- middleware: 'middlewares',
- pages: 'pages',
- static: 'static',
- store: 'store',
-}
-
-const build = {
- extractCss: true,
-}
-
-const pageTransition = {
- name: 'page',
- mode: 'out-in',
-}
-
-const target = 'server'
-
-const server = {
- port: 3333,
- host: '0.0.0.0'
-}
-
-const components = [
- 'components',
- 'components/icons'
-]
-
-const buildDir = '.nuxt'
-
-const ssr = true
-
-const proxy = {
- '/api': {
- target: 'https://athena.arthurdanjou.fr',
- pathRewrite: { "^/api": "" }
- }
-}
-
-const router = {
- middleware: 'maintenance'
-}
-
-export default { router, srcDir, dir, build, pageTransition, target, server, buildDir, components, ssr, proxy }
diff --git a/settings/AxiosConfig.ts b/settings/AxiosConfig.ts
new file mode 100644
index 0000000..39d5958
--- /dev/null
+++ b/settings/AxiosConfig.ts
@@ -0,0 +1,5 @@
+export default {
+ proxy: true,
+ credentials: true,
+ proxyHeaders: true
+}
diff --git a/settings/Build.ts b/settings/Build.ts
deleted file mode 100755
index f712d21..0000000
--- a/settings/Build.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-// Build Configuration: https://go.nuxtjs.dev/config-build
-export default {
- babel: {
- plugins: [
- ['@babel/plugin-proposal-private-methods', { loose: true }]
- ],
- },
- postcss: {
- preset: {
- features: {
- "focus-within-pseudo-class": false
- }
- }
- }
-}
diff --git a/settings/BuildModules.ts b/settings/BuildModules.ts
deleted file mode 100755
index 1c17d58..0000000
--- a/settings/BuildModules.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-// Modules for dev and build (recommended): https://go.nuxtjs.dev/config-modules
-import {NuxtOptionsModule} from "@nuxt/types/config/module";
-
-const color_mode = {
- preference: 'system',
- fallback: 'light',
- classPrefix: '',
- classSuffix: '',
-}
-
-const windicss = {
- scan: {
- dirs: [ './' ],
- exclude: [
- 'node_modules',
- '.git',
- '.nuxt/**/*',
- 'build/**/*',
- '*.template.html',
- 'app.html'
- ],
- include: []
- },
- transformCSS: 'pre',
- preflight: {
- alias: {
- // add nuxt aliases
- 'nuxt-link': 'a',
- // @nuxt/image module
- 'nuxt-img': 'img',
- }
- }
-}
-
-export default [
- '@nuxt/typescript-build',
- '@nuxtjs/composition-api/module',
- ['nuxt-windicss', windicss],
- ['@nuxtjs/color-mode', color_mode],
-] as NuxtOptionsModule[]
diff --git a/settings/ColorModeConfig.ts b/settings/ColorModeConfig.ts
new file mode 100644
index 0000000..ff4b94e
--- /dev/null
+++ b/settings/ColorModeConfig.ts
@@ -0,0 +1,6 @@
+export default {
+ preference: 'system',
+ fallback: 'light',
+ classPrefix: '',
+ classSuffix: '',
+}
diff --git a/settings/EnvConfig.ts b/settings/EnvConfig.ts
new file mode 100644
index 0000000..6f7e05f
--- /dev/null
+++ b/settings/EnvConfig.ts
@@ -0,0 +1,3 @@
+export default {
+ path: process.cwd()
+}
diff --git a/settings/Head.ts b/settings/Head.ts
deleted file mode 100755
index c23d6c3..0000000
--- a/settings/Head.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-// Global page headers: https://go.nuxtjs.dev/config-head
-import {NuxtOptionsHead} from "@nuxt/types/config/head";
-
-const params = {
- title: 'arthurdanjou.fr - Web & Software Developer',
- color: '#00a0ff',
- image: '/images/memojies/Hey.png',
- url: 'https://arthurdanjou.fr',
- favicon: {
- type: 'image/jpg',
- href: '/favicon.png',
- },
- description:
- 'Web & Software Developer from Paris, France.',
-}
-
-export default {
- htmlAttrs: { lang: 'fr-FR' },
- title: params.title,
- meta: [
- { charset: 'utf-8' },
- { lang: 'fr-FR' },
- { name: 'viewport', content: 'width=device-width, initial-scale=1' },
- { hid: 'description', name: 'description', content: params.description },
-
- /**
- * Open graph
- * See : https://ogp.me/
- */
- { hid: 'og:type', name: 'og:type', content: 'website' },
- { hid: 'og:url', name: 'og:url', content: params.url },
- { hid: 'og:title', name: 'og:title', content: params.title },
- { hid: 'og:site_name', name: 'og:site_name', content: params.title },
- { hid: 'og:locale', name: 'og:locale', content: 'fr' },
- { hid: 'og:image', name: 'og:image', content: params.image },
-
- { name: 'msapplication-TileColor', content: params.color },
- { name: 'theme-color', content: params.color },
- ],
- link: [
- { rel: 'icon', type: params.favicon.type, href: params.favicon.href },
- { rel: 'preconnect', href: 'https://fonts.googleapis.com' },
- { rel: 'preconnect', href: 'https://fonts.googleapis.com', crossOrigin: 'true' },
- { rel: 'stylesheet', href: 'https://fonts.googleapis.com/css2?family=Raleway:wght@500&family=Roboto:wght@900&display=swap' }
- ],
-} as NuxtOptionsHead
diff --git a/settings/HeadConfig.ts b/settings/HeadConfig.ts
new file mode 100644
index 0000000..d00c88f
--- /dev/null
+++ b/settings/HeadConfig.ts
@@ -0,0 +1,11 @@
+export default {
+ title: 'arthurdanjou.fr - Web & Software Developer',
+ color: '#00a0ff',
+ image: '/images/memojies/Hey.png',
+ url: 'https://arthurdanjou.fr',
+ favicon: {
+ type: 'image/jpg',
+ href: '/favicon.png',
+ },
+ description: 'Web & Software Developer from Paris, France.',
+}
diff --git a/settings/I18nConfig.ts b/settings/I18nConfig.ts
new file mode 100644
index 0000000..f3beae1
--- /dev/null
+++ b/settings/I18nConfig.ts
@@ -0,0 +1,24 @@
+export default {
+ locales: [
+ {
+ code: 'en',
+ name: 'English',
+ iso: 'en-EN',
+ file: 'en-EN.ts',
+ },
+ {
+ code: 'fr',
+ name: 'Français',
+ iso: 'fr-FR',
+ file: 'fr-FR.ts'
+ },
+ ],
+ strategy: 'no_prefix',
+ defaultLocale: 'en',
+ langDir: 'locales/',
+ lazy: true,
+ seo: true,
+ vueI18n: {
+ fallbackLocale: 'en',
+ },
+}
diff --git a/settings/Modules.ts b/settings/Modules.ts
deleted file mode 100755
index ec2e668..0000000
--- a/settings/Modules.ts
+++ /dev/null
@@ -1,98 +0,0 @@
-import {NuxtOptionsModule} from "@nuxt/types/config/module";
-
-const axios = {
- proxy: true,
- credentials: true,
- proxyHeaders: true
-}
-
-const i18n = {
- locales: [
- {
- code: 'en',
- name: 'English',
- iso: 'en-EN',
- file: 'en-EN.ts',
- },
- {
- code: 'fr',
- name: 'Français',
- iso: 'fr-FR',
- file: 'fr-FR.ts'
- },
- ],
- strategy: 'no_prefix',
- defaultLocale: 'en',
- langDir: 'locales/',
- lazy: true,
- seo: true,
- vueI18n: {
- fallbackLocale: 'en',
- },
-}
-
-const content = {
- nestedProperties: ['skills.slug'],
- markdown: {
- prism: {
- theme: 'prism-themes/themes/prism-darcula.css'
- },
- remarkPlugins: [
- 'remark-squeeze-paragraphs',
- 'remark-slug',
- 'remark-autolink-headings',
- 'remark-external-links',
- 'remark-footnotes',
- ],
- }
-}
-
-const storage = {
- cookie: {
- prefix: 'arthurdanjou.fr/',
- options: {
- path: '/'
- }
- },
-}
-
-const sitemap = {
- path: '/sitemap.xml',
- hostname: 'https://arthurdanjou.fr',
- cacheTime: 720000,
- gzip: true,
- generate: false,
-}
-
-const robots = {
- UserAgent: '*',
- Sitemap: 'https://arthurdanjou.fr/sitemap.xml',
- Allow: '*'
-}
-
-const redirect = [
- { from: '/source', to: 'https://github.com/arthurdanjou/ares' },
- { from: '/shelf', to: '/blog' },
- { from: '/posts', to: '/blog' },
- { from: '/resume', to: '/cv' }
-]
-
-const env = {
- path: process.cwd()
-}
-
-const sentry = {
- dsn: process.env.SENTRY_DSN
-}
-
-export default [
- ['@nuxtjs/axios', axios],
- ['@nuxtjs/i18n', i18n],
- ['@nuxt/content', content],
- ['@nuxtjs/universal-storage', storage],
- ['@nuxtjs/robots', robots],
- ['@nuxtjs/sitemap', sitemap],
- ['@nuxtjs/redirect-module', redirect],
- ['@nuxtjs/dotenv', env],
- ['@nuxtjs/sentry', sentry]
-] as NuxtOptionsModule[]
diff --git a/settings/Plugins.ts b/settings/Plugins.ts
deleted file mode 100755
index 5f9f369..0000000
--- a/settings/Plugins.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-// Plugins to run before rendering page: https://go.nuxtjs.dev/config-plugins
-export default [
- {
- src: '~/plugins/i18n.ts'
- }
-]
diff --git a/settings/RedirectConfig.ts b/settings/RedirectConfig.ts
new file mode 100644
index 0000000..605f70d
--- /dev/null
+++ b/settings/RedirectConfig.ts
@@ -0,0 +1,6 @@
+export default [
+ { from: '/source', to: 'https://github.com/arthurdanjou/ares' },
+ { from: '/shelf', to: '/blog' },
+ { from: '/posts', to: '/blog' },
+ { from: '/resume', to: '/cv' }
+]
diff --git a/settings/RobotsConfig.ts b/settings/RobotsConfig.ts
new file mode 100644
index 0000000..379628d
--- /dev/null
+++ b/settings/RobotsConfig.ts
@@ -0,0 +1,5 @@
+export default {
+ UserAgent: '*',
+ Sitemap: 'https://arthurdanjou.fr/sitemap.xml',
+ Allow: '*'
+}
diff --git a/settings/RuntimeConfig.ts b/settings/RuntimeConfig.ts
deleted file mode 100755
index 37dd007..0000000
--- a/settings/RuntimeConfig.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-const publicRuntimeConfig = {
-}
-
-const privateRuntimeConfig = {
- API_TOKEN: process.env.API_TOKEN,
- SENTRY_DSN: process.env.SENTRY_DSN
-}
-
-export default { publicRuntimeConfig, privateRuntimeConfig}
diff --git a/settings/SentryConfig.ts b/settings/SentryConfig.ts
new file mode 100644
index 0000000..5385a08
--- /dev/null
+++ b/settings/SentryConfig.ts
@@ -0,0 +1,3 @@
+export default {
+ dsn: process.env.SENTRY_DSN
+}
diff --git a/settings/SiteMapConfig.ts b/settings/SiteMapConfig.ts
new file mode 100644
index 0000000..9dd5780
--- /dev/null
+++ b/settings/SiteMapConfig.ts
@@ -0,0 +1,7 @@
+export default {
+ path: '/sitemap.xml',
+ hostname: 'https://arthurdanjou.fr',
+ cacheTime: 720000,
+ gzip: true,
+ generate: false,
+}
diff --git a/settings/StorageConfig.ts b/settings/StorageConfig.ts
new file mode 100644
index 0000000..9344b36
--- /dev/null
+++ b/settings/StorageConfig.ts
@@ -0,0 +1,8 @@
+export default {
+ cookie: {
+ prefix: 'arthurdanjou.fr/',
+ options: {
+ path: '/'
+ }
+ },
+}
diff --git a/settings/Style.ts b/settings/Style.ts
deleted file mode 100755
index b2041dc..0000000
--- a/settings/Style.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-// Global CSS: https://go.nuxtjs.dev/config-css
-export default [
- '@/assets/css/style.scss'
-]
diff --git a/settings/WindicssConfig.ts b/settings/WindicssConfig.ts
new file mode 100644
index 0000000..b45bbbc
--- /dev/null
+++ b/settings/WindicssConfig.ts
@@ -0,0 +1,23 @@
+export default {
+ scan: {
+ dirs: [ './' ],
+ exclude: [
+ 'node_modules',
+ '.git',
+ '.nuxt/**/*',
+ 'build/**/*',
+ '*.template.html',
+ 'app.html'
+ ],
+ include: []
+ },
+ transformCSS: 'pre',
+ preflight: {
+ alias: {
+ // add nuxt aliases
+ 'nuxt-link': 'a',
+ // @nuxt/image module
+ 'nuxt-img': 'img',
+ }
+ }
+}
diff --git a/src/app.vue b/src/app.vue
new file mode 100644
index 0000000..5d3f019
--- /dev/null
+++ b/src/app.vue
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
diff --git a/src/components/AboutHome.vue b/src/components/AboutHome.vue
index e95571e..1f4327d 100644
--- a/src/components/AboutHome.vue
+++ b/src/components/AboutHome.vue
@@ -19,31 +19,21 @@
-
diff --git a/src/components/Ad.vue b/src/components/Ad.vue
index 95d064d..8f1fe13 100755
--- a/src/components/Ad.vue
+++ b/src/components/Ad.vue
@@ -4,36 +4,23 @@
-
diff --git a/src/components/Announce.vue b/src/components/Announce.vue
index 1f5f5f0..38bc7ca 100644
--- a/src/components/Announce.vue
+++ b/src/components/Announce.vue
@@ -16,48 +16,37 @@
-