diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml deleted file mode 100644 index 9a591b6..0000000 --- a/.github/workflows/node.js.yml +++ /dev/null @@ -1,37 +0,0 @@ -# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node -# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions - -name: Node.js CI - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - deploy_build_run: - runs-on: ubuntu-latest - strategy: - matrix: - node-version: [14.x] - - steps: - - uses: actions/checkout@v1 - - name: Use Node.js ${{ matrix.node_version }} - uses: actions/setup-node@v1 - with: - node-version: ${{ matrix.node_version }} - - name: Deploy with SSH - uses: appleboy/ssh-action@v0.1.4 - with: - host: ${{ secrets.SSH_HOST }} - port: ${{ secrets.SSH_PORT }} - username: ${{ secrets.SSH_USER }} - password: ${{ secrets.SSH_PASSPHRASE }} - script: | - cd ${{ secrets.PATH }} - git pull - yarn install - yarn build - pm2 start diff --git a/.gitignore b/.gitignore index d25746b..47ff9aa 100644 --- a/.gitignore +++ b/.gitignore @@ -41,9 +41,6 @@ jspm_packages/ # TypeScript v1 declaration files typings/ -# TypeScript cache -*.tsbuildinfo - # Optional npm cache directory .npm @@ -71,6 +68,9 @@ typings/ # nuxt.js build output .nuxt +# Nuxt generate +dist + # vuepress build output .vuepress/dist @@ -88,10 +88,5 @@ sw.* # Vim swap files *.swp -/build/ -/dist/ - -# Local Netlify folder -.netlify -/pages/blog/preview/ +build diff --git a/@types/index.d.ts b/@types/index.d.ts new file mode 100644 index 0000000..05d978a --- /dev/null +++ b/@types/index.d.ts @@ -0,0 +1,35 @@ +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"; +import {NuxtStorage} from "@nuxtjs/universal-storage"; + +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, + $app: NuxtApp, + $storage: NuxtStorage + } +} + +declare module 'vuex/types/index' { + interface Store { + $axios: NuxtAxiosInstance, + i18n: VueI18n & IVueI18n + } +} diff --git a/@types/types.ts b/@types/types.ts new file mode 100644 index 0000000..b0f643f --- /dev/null +++ b/@types/types.ts @@ -0,0 +1,65 @@ +interface Form { + email: string, + name: string, + content: string, + subject: string +} + +interface InfoData { + age: number + hiring: { + status: string, + color: string + } +} + +interface Skill { + title: string, + color: string, + cover: string, + slug: string +} + +interface Experience { + slug: string, + title: string, + company: string, + location: string, + begin_date: string, + end_date: string +} + +interface Formation { + slug: string, + title: string, + description: string, + location: string, + begin_date: string, + end_date: string +} + +interface Tag { + slug: string +} + +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 { Form, InfoData, Skill, Experience, Formation, Post, Tag, Project } diff --git a/vue-shim.d.ts b/@types/vue-shim.d.ts similarity index 100% rename from vue-shim.d.ts rename to @types/vue-shim.d.ts diff --git a/LICENSE b/LICENSE index ae0d5e1..e8c1050 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright 2020 Β© Arthur Danjou +Copyright 2021 Β© Arthur Danjou Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 60c5c51..4d42c48 100644 --- a/README.md +++ b/README.md @@ -25,8 +25,8 @@ Hosted version : [arthurdanjou.fr](https://arthurdanjou.fr) ## Author πŸ‘€ ➑ Arthur Danjou : Developer - - Twitter : [@ArthurDanj](https://twitter.com/ArthurDanj) - - GitHub : [@ArthurDanjou](https://github.com/ArthurDanjou) +- Twitter : [@ArthurDanj](https://twitter.com/ArthurDanj) +- GitHub : [@ArthurDanjou](https://github.com/ArthurDanjou) ## License πŸ“‘ Copyright Β© 2020 - [@ArthurDanj](https://arthurdanjou.fr) \ diff --git a/assets/css/style.scss b/assets/css/style.scss deleted file mode 100644 index 685318b..0000000 --- a/assets/css/style.scss +++ /dev/null @@ -1,20 +0,0 @@ -.icon { - transform: translate(3px, -3px); - z-index: 1; -} - -img, svg { - position: static; -} - -body { - @apply dark:bg-dark-900 -} - -* { - @apply select-none outline-none; -} - -.nuxt-content-editor { - @apply dark:bg-dark-800 border dark:border-white border-black border-solid; -} diff --git a/assets/css/tailwind.css b/assets/css/tailwind.css deleted file mode 100644 index 38191fb..0000000 --- a/assets/css/tailwind.css +++ /dev/null @@ -1,6 +0,0 @@ -@import url('https://fonts.googleapis.com/css2?family=Raleway&display=swap'); -@import "./style.scss"; - -@tailwind base; -@tailwind components; -@tailwind utilities; diff --git a/assets/img/computer.png b/assets/img/computer.png deleted file mode 100644 index 493aaf7..0000000 Binary files a/assets/img/computer.png and /dev/null differ diff --git a/assets/img/socials/adonisjs.svg b/assets/img/socials/adonisjs.svg deleted file mode 100644 index 161a5ba..0000000 --- a/assets/img/socials/adonisjs.svg +++ /dev/null @@ -1 +0,0 @@ -AdonisJS icon diff --git a/assets/img/socials/github.svg b/assets/img/socials/github.svg deleted file mode 100644 index d820113..0000000 --- a/assets/img/socials/github.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - diff --git a/components/Experience.vue b/components/Experience.vue deleted file mode 100644 index bc5f5ec..0000000 --- a/components/Experience.vue +++ /dev/null @@ -1,56 +0,0 @@ - - - - - diff --git a/components/Formation.vue b/components/Formation.vue deleted file mode 100644 index 2b9a05f..0000000 --- a/components/Formation.vue +++ /dev/null @@ -1,53 +0,0 @@ - - - - - diff --git a/components/Header.vue b/components/Header.vue deleted file mode 100644 index 05cd877..0000000 --- a/components/Header.vue +++ /dev/null @@ -1,175 +0,0 @@ - - - - - diff --git a/components/HomeLink.vue b/components/HomeLink.vue deleted file mode 100644 index 468e8af..0000000 --- a/components/HomeLink.vue +++ /dev/null @@ -1,70 +0,0 @@ - - - - - diff --git a/components/PageTitle.vue b/components/PageTitle.vue deleted file mode 100644 index 9677565..0000000 --- a/components/PageTitle.vue +++ /dev/null @@ -1,43 +0,0 @@ - - - - - diff --git a/components/Post.vue b/components/Post.vue deleted file mode 100644 index 5e03cae..0000000 --- a/components/Post.vue +++ /dev/null @@ -1,88 +0,0 @@ - - - - - diff --git a/components/Work.vue b/components/Work.vue deleted file mode 100644 index cc337f8..0000000 --- a/components/Work.vue +++ /dev/null @@ -1,97 +0,0 @@ - - - - - diff --git a/components/WorkSkill.vue b/components/WorkSkill.vue deleted file mode 100644 index f223811..0000000 --- a/components/WorkSkill.vue +++ /dev/null @@ -1,91 +0,0 @@ - - - - - diff --git a/config/Axios.ts b/config/Axios.ts deleted file mode 100644 index 7f91a9f..0000000 --- a/config/Axios.ts +++ /dev/null @@ -1,4 +0,0 @@ -export default { - credentials: true, - baseURL: 'https://api.arthurdanjou.fr/' -} diff --git a/config/ColorMode.ts b/config/ColorMode.ts deleted file mode 100644 index ff4b94e..0000000 --- a/config/ColorMode.ts +++ /dev/null @@ -1,6 +0,0 @@ -export default { - preference: 'system', - fallback: 'light', - classPrefix: '', - classSuffix: '', -} diff --git a/config/Content.ts b/config/Content.ts deleted file mode 100644 index f11ff9f..0000000 --- a/config/Content.ts +++ /dev/null @@ -1,16 +0,0 @@ -export default { - apiPrefix: 'api', - nestedProperties: ['categories.slug'], - markdown: { - prism: { - theme: 'prism-themes/themes/prism-darcula.css' - }, - remarkPlugins: [ - 'remark-squeeze-paragraphs', - 'remark-slug', - 'remark-autolink-headings', - 'remark-external-links', - 'remark-footnotes', - ], - } -} diff --git a/config/Head.ts b/config/Head.ts deleted file mode 100644 index 6853a53..0000000 --- a/config/Head.ts +++ /dev/null @@ -1,18 +0,0 @@ -export default { - meta: [ - { charset: 'utf-8' }, - { name: 'viewport', content: 'width=device-width, initial-scale=1' }, - { hid: 'description', name: 'description', content: 'ArtSite is my personal website build using NuxtJs to create a single point of contact' }, - - { hid: 'og:type', name: 'og:type', content: 'website' }, - { hid: 'og:url', name: 'og:url', content: 'https://arthurdanjou.fr' }, - { hid: 'og:title', name: 'og:title', content: 'Arthur Danjou | FullStack Web & Software Developer' }, - { hid: 'og:site_name', name: 'og:site_name', content: 'Arthur Danjou | FullStack Web & Software Developer' }, - { hid: 'og:locale', name: 'og:locale', content: 'fr' }, - { hid: 'og:locale', name: 'og:locale', content: 'en' }, - { hid: 'og:image', name: 'og:image', content: '/images/image.jpg' }, - ], - link: [ - { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' } - ] -} diff --git a/config/Redirect.ts b/config/Redirect.ts deleted file mode 100644 index 00bfc4e..0000000 --- a/config/Redirect.ts +++ /dev/null @@ -1,8 +0,0 @@ -export default [ - { from: '/source', to: 'https://github.com/arthurdanjou/artsite' }, - { from: '/twitter', to: 'https://twitter.com/arthurdanj' }, - { from: '/github', to: 'https://github.com/arthurdanjou/' }, - { from: '/shelf', to: '/blog' }, - { from: '/posts', to: '/blog' }, - { from: '/resume', to: '/cv' }, -] diff --git a/config/Robots.ts b/config/Robots.ts deleted file mode 100644 index 379628d..0000000 --- a/config/Robots.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default { - UserAgent: '*', - Sitemap: 'https://arthurdanjou.fr/sitemap.xml', - Allow: '*' -} diff --git a/config/SiteMap.ts b/config/SiteMap.ts deleted file mode 100644 index 9dd5780..0000000 --- a/config/SiteMap.ts +++ /dev/null @@ -1,7 +0,0 @@ -export default { - path: '/sitemap.xml', - hostname: 'https://arthurdanjou.fr', - cacheTime: 720000, - gzip: true, - generate: false, -} diff --git a/config/Tailwind.ts b/config/Tailwind.ts deleted file mode 100644 index 1f5d218..0000000 --- a/config/Tailwind.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default { - cssPath: './assets/css/tailwind.css', - configPath: 'tailwind.config.js', - exposeConfig: true -} diff --git a/config/Translation.ts b/config/Translation.ts deleted file mode 100644 index 54714e8..0000000 --- a/config/Translation.ts +++ /dev/null @@ -1,24 +0,0 @@ -export default { - locales: [ - { - code: 'en', - name: 'English', - iso: 'en-Us', - file: 'en-US.ts', - }, - { - code: 'fr', - iso: 'fr-FR', - file: 'fr-FR.ts', - name: 'FranΓ§ais' - }, - ], - strategy: 'no_prefix', - defaultLocale: 'en', - langDir: 'locales/', - lazy: true, - seo: true, - vueI18n: { - fallbackLocale: 'en', - }, -} diff --git a/config/index.ts b/config/index.ts deleted file mode 100644 index 838508a..0000000 --- a/config/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -import Axios from './Axios' -import Head from './Head' -import ColorMode from './ColorMode' -import Tailwind from './Tailwind' -import Translation from './Translation' -import Content from './Content' -import Robots from './Robots' -import SiteMap from "./SiteMap"; -import Redirect from "./Redirect"; - -export { Axios, Head, ColorMode, Tailwind, Translation, Content, Robots, SiteMap, Redirect } diff --git a/content/works.json b/content/works.json deleted file mode 100644 index 8adcc35..0000000 --- a/content/works.json +++ /dev/null @@ -1,67 +0,0 @@ -[ - { - "slug": "erisium", - "title": "Erisium", - "description": "works.erisium", - "url": "https://erisium.com", - "cover": "erisium", - "color": "fuchsia", - "skills": [ - "java", - "git", - "redis", - "mariadb" - ] - }, - { - "slug": "artsite", - "title": "ArtSite", - "description": "works.artsite", - "url": "https://arthurdanjou.fr", - "cover": "artsite", - "color": "trueGray", - "skills": [ - "typescript", - "nuxtjs", - "vuejs", - "git", - "tailwindcss", - "sass", - "html", - "css", - "nodejs" - ] - }, - { - "slug": "artapi", - "title": "ArtApi", - "description": "works.artapi", - "url": "https://api.arthurdanjou.fr", - "cover": "artapi", - "color": "trueGray", - "skills": [ - "typescript", - "adonisjs", - "git", - "docker", - "nodejs", - "redis", - "mariadb" - ] - }, - { - "slug": "artclick", - "title": "ArtClick", - "description": "works.artclick", - "url": "https://artdanj.to", - "cover": "artclick", - "color": "trueGray", - "skills": [ - "adonisjs", - "git", - "redis", - "mariadb", - "typescript" - ] - } -] diff --git a/docker-compose.yml b/docker-compose.yml index f64ab85..6bcd72f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -19,7 +19,7 @@ services: - traefik.docker.network=proxy - traefik.port=443 ports: - - 3333:3333 + - 3333:3333 networks: - internal - proxy @@ -53,27 +53,18 @@ services: - internal - proxy labels: + - traefik.tcp.routers.sql.entrypoints=sql - traefik.tcp.routers.sql.rule=HostSNI(`sql.arthurdanjou.fr`) - - traefik.tcp.routers.sql.tls=true - - traefik.tcp.routers.sql.tls.certresolver=lets-encrypt - traefik.docker.network=proxy - - traefik.port=3306 volumes: - "/root/mariadb/data:/var/lib/mysql" redis: - image: redis:6.0.10 + image: redis:latest container_name: redis - command: redis-server --requirepass ${REDIS_PASSWORD} + command: redis-server ports: - 6379:6379 networks: - internal - - proxy - labels: - - traefik.tcp.routers.redis.rule=HostSNI(`redis.arthurdanjou.fr`) - - traefik.tcp.routers.redis.tls=true - - traefik.tcp.routers.redis.tls.certresolver=lets-encrypt - - traefik.docker.network=proxy - - traefik.port=6379 volumes: - "/root/redis/data:/data" diff --git a/layouts/default.vue b/layouts/default.vue deleted file mode 100644 index ab72648..0000000 --- a/layouts/default.vue +++ /dev/null @@ -1,18 +0,0 @@ - - - - - diff --git a/nuxt.config.js b/nuxt.config.js deleted file mode 100644 index 436ac5a..0000000 --- a/nuxt.config.js +++ /dev/null @@ -1,57 +0,0 @@ -import { Axios, Head, ColorMode, Tailwind, Translation, Content, Robots, SiteMap, Redirect } from './config' - -export default { - head: Head, - - target: 'server', - - server: { - host: '0.0.0.0', - port: 3333 - }, - - css: [ - ], - - plugins: [ - ], - - components: true, - - buildModules: [ - ['@nuxtjs/tailwindcss', Tailwind], - ['@nuxtjs/color-mode', ColorMode], - 'nuxt-postcss8' - ], - - modules: [ - ['@nuxtjs/axios', Axios], - ['nuxt-i18n', Translation], - ['@nuxt/content', Content], - ['@nuxtjs/robots', Robots], - ['@nuxtjs/sitemap', SiteMap], - ['@nuxtjs/redirect-module', Redirect] - ], - - buildDir: 'build', - - build: { - postcss: { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, - } - }, - - pageTransition: { - name: 'page', - mode: 'out-in', - }, - - loadingIndicator: { - name: 'circle', - color: '#3B8070', - background: 'white' - } -} diff --git a/nuxt.config.ts b/nuxt.config.ts new file mode 100644 index 0000000..21b66b9 --- /dev/null +++ b/nuxt.config.ts @@ -0,0 +1,19 @@ +import {defineNuxtConfig} from "@nuxtjs/composition-api"; +import {NuxtConfig} from "@nuxt/types"; +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' + +export default defineNuxtConfig({ + head, + modules, + ...arch, + build, + plugins, + css, + buildModules +} as NuxtConfig) diff --git a/package.json b/package.json index d6edfef..a674921 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "artsite", + "name": "nuxt-ts-app", "version": "1.0.0", "private": true, "scripts": { @@ -10,24 +10,28 @@ }, "dependencies": { "@nuxt/content": "^1.14.0", - "@nuxtjs/axios": "5.13.1", - "@nuxtjs/redirect-module": "0.3.1", + "@nuxtjs/axios": "^5.13.1", + "@nuxtjs/composition-api": "^0.22.4", + "@nuxtjs/redirect-module": "^0.3.1", "@nuxtjs/robots": "^2.5.0", "@nuxtjs/sitemap": "^2.4.0", - "@tailwindcss/typography": "0.4.0", - "nuxt": "2.15.3", - "nuxt-i18n": "6.22.0", - "prism-themes": "1.6.0", - "sass": "1.32.8", - "sass-loader": "11.0.1" + "@nuxtjs/universal-storage": "^0.5.7", + "core-js": "^3.10.0", + "nuxt": "^2.15.3", + "nuxt-i18n": "^6.22.3", + "prism-themes": "^1.6.0", + "sass": "^1.32.8", + "windicss": "^2.5.11" }, "devDependencies": { - "@nuxtjs/color-mode": "2.0.5", - "@nuxtjs/tailwindcss": "4.0.1", - "autoprefixer": "^10.2.5", - "css-loader": "5.2.0", - "nuxt-postcss8": "^1.1.2", - "postcss": "^8.2.6", - "tailwindcss": "^2.0.4" + "@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.5.3", + "sass-loader": "^10.1.1", + "vite-plugin-windicss": "^0.11.3", + "vue-windicss-preprocess": "^2.2.0" } } diff --git a/pages/about.vue b/pages/about.vue deleted file mode 100644 index b96ce46..0000000 --- a/pages/about.vue +++ /dev/null @@ -1,272 +0,0 @@ - - - - - diff --git a/pages/blog/index.vue b/pages/blog/index.vue deleted file mode 100644 index 12e7f01..0000000 --- a/pages/blog/index.vue +++ /dev/null @@ -1,276 +0,0 @@ - - - - - diff --git a/pages/contact.vue b/pages/contact.vue deleted file mode 100644 index d972ebd..0000000 --- a/pages/contact.vue +++ /dev/null @@ -1,210 +0,0 @@ - - - - - diff --git a/pages/index.vue b/pages/index.vue deleted file mode 100644 index b132f79..0000000 --- a/pages/index.vue +++ /dev/null @@ -1,117 +0,0 @@ - - - - - diff --git a/pages/work/_slug.vue b/pages/work/_slug.vue deleted file mode 100644 index 9db3063..0000000 --- a/pages/work/_slug.vue +++ /dev/null @@ -1,150 +0,0 @@ - - - - - diff --git a/pages/work/index.vue b/pages/work/index.vue deleted file mode 100644 index 5b8c8c5..0000000 --- a/pages/work/index.vue +++ /dev/null @@ -1,51 +0,0 @@ - - - - - diff --git a/settings/Arch.ts b/settings/Arch.ts new file mode 100644 index 0000000..a189bf2 --- /dev/null +++ b/settings/Arch.ts @@ -0,0 +1,33 @@ +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 +} + +const components = true + +const buildDir = 'build' + +const ssr = true + +export default { srcDir, dir, build, pageTransition, target, server, buildDir, components, ssr } diff --git a/settings/Build.ts b/settings/Build.ts new file mode 100644 index 0000000..5cd756f --- /dev/null +++ b/settings/Build.ts @@ -0,0 +1,4 @@ +// Build Configuration: https://go.nuxtjs.dev/config-build +export default { + +} diff --git a/settings/BuildModules.ts b/settings/BuildModules.ts new file mode 100644 index 0000000..2c5911a --- /dev/null +++ b/settings/BuildModules.ts @@ -0,0 +1,47 @@ +// 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', + } + } +} + +const vite = { + vue: { + jsx: false + } +} + +export default [ + '@nuxt/typescript-build', + '@nuxtjs/composition-api', + ['nuxt-windicss', windicss], + //['nuxt-vite', vite], + ['@nuxtjs/color-mode', color_mode], +] as NuxtOptionsModule[] diff --git a/settings/Head.ts b/settings/Head.ts new file mode 100644 index 0000000..2195f00 --- /dev/null +++ b/settings/Head.ts @@ -0,0 +1,41 @@ +// Global page headers: https://go.nuxtjs.dev/config-head +import {NuxtOptionsHead} from "@nuxt/types/config/head"; + +const params = { + title: 'artsite', + color: '#00a0ff', + image: '/images/image.jpg', + url: 'https://arthurdanjou.fr', + favicon: { + type: 'image/jpg', + href: '/favicon.png', + }, + description: + 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. ', +} + +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 }], +} as NuxtOptionsHead diff --git a/settings/Modules.ts b/settings/Modules.ts new file mode 100644 index 0000000..39f08e6 --- /dev/null +++ b/settings/Modules.ts @@ -0,0 +1,91 @@ +import {NuxtOptionsModule} from "@nuxt/types/config/module"; + +const axios = { + credentials: true, + baseURL: 'https://api.arthurdanjou.fr' +} + +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 = { + apiPrefix: 'api', + 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: 'artsite', + 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/artsite' }, + { from: '/twitter', to: 'https://twitter.com/arthurdanj' }, + { from: '/github', to: 'https://github.com/arthurdanjou/' }, + { from: '/shelf', to: '/blog' }, + { from: '/posts', to: '/blog' }, + { from: '/resume', to: '/cv' } +] + +export default [ + ['@nuxtjs/axios', axios], + ['nuxt-i18n', i18n], + ['@nuxt/content', content], + ['@nuxtjs/universal-storage', storage], + ['@nuxtjs/robots', robots], + ['@nuxtjs/sitemap', sitemap], + ['@nuxtjs/redirect-module', redirect] + +] as NuxtOptionsModule[] diff --git a/settings/Plugins.ts b/settings/Plugins.ts new file mode 100644 index 0000000..5bd91da --- /dev/null +++ b/settings/Plugins.ts @@ -0,0 +1,4 @@ +// Plugins to run before rendering page: https://go.nuxtjs.dev/config-plugins +export default [ + { src: '~/plugins/i18n.ts' } +] diff --git a/settings/Style.ts b/settings/Style.ts new file mode 100644 index 0000000..b2041dc --- /dev/null +++ b/settings/Style.ts @@ -0,0 +1,4 @@ +// Global CSS: https://go.nuxtjs.dev/config-css +export default [ + '@/assets/css/style.scss' +] diff --git a/src/assets/css/style.scss b/src/assets/css/style.scss new file mode 100644 index 0000000..b695fce --- /dev/null +++ b/src/assets/css/style.scss @@ -0,0 +1,67 @@ +@import url('https://fonts.googleapis.com/css2?family=Raleway&display=swap'); + +.icon { + transform: translate(3px, -3px); + z-index: 1; +} + +img, svg { + position: static; +} + +body { + @apply dark:bg-black dark:text-white +} + +* { + @apply select-none outline-none; + font-family: 'Raleway', sans-serif; +} + +.nuxt-content-editor { + @apply dark:(bg-dark-800 text-white) border dark:border-white border-black border-solid; +} + +//TODO remove with windicss/typography +.nuxt-content-container { + p { + @apply text-gray-700 dark:text-gray-400 + } + + h1, h2, h3, h4, h5, h6 { + @apply font-bold text-black dark:text-white mt-8 mb-4 + } + + ul { + @apply list-inside list-disc my-4 text-gray-700 dark:text-gray-400 + } + + p, li { + @apply text-lg + } + + h1 { + @apply text-4xl + } + + h2 { + @apply text-3xl + } + + h3 { + @apply text-2xl + } + + h4 { + @apply text-xl + } + + h5 { + @apply text-lg + } + + h6 { + @apply text-sm + } + +} diff --git a/assets/img/Logo.jpg b/src/assets/images/Logo.jpg similarity index 100% rename from assets/img/Logo.jpg rename to src/assets/images/Logo.jpg diff --git a/src/assets/images/logo-header.png b/src/assets/images/logo-header.png new file mode 100644 index 0000000..0f2ef24 Binary files /dev/null and b/src/assets/images/logo-header.png differ diff --git a/src/assets/images/memojies/Dev.png b/src/assets/images/memojies/Dev.png new file mode 100644 index 0000000..3e52385 Binary files /dev/null and b/src/assets/images/memojies/Dev.png differ diff --git a/src/assets/images/memojies/Fiesta.png b/src/assets/images/memojies/Fiesta.png new file mode 100644 index 0000000..fe8acec Binary files /dev/null and b/src/assets/images/memojies/Fiesta.png differ diff --git a/src/assets/images/memojies/Hey.png b/src/assets/images/memojies/Hey.png new file mode 100644 index 0000000..6d12347 Binary files /dev/null and b/src/assets/images/memojies/Hey.png differ diff --git a/assets/img/posts/post-1.png b/src/assets/images/posts/post-1.png similarity index 100% rename from assets/img/posts/post-1.png rename to src/assets/images/posts/post-1.png diff --git a/assets/img/posts/post-2.png b/src/assets/images/posts/post-2.png similarity index 100% rename from assets/img/posts/post-2.png rename to src/assets/images/posts/post-2.png diff --git a/assets/img/works/artapi.png b/src/assets/images/projects/artapi.png similarity index 100% rename from assets/img/works/artapi.png rename to src/assets/images/projects/artapi.png diff --git a/assets/img/works/artclick.png b/src/assets/images/projects/artclick.png similarity index 100% rename from assets/img/works/artclick.png rename to src/assets/images/projects/artclick.png diff --git a/assets/img/works/artsite.png b/src/assets/images/projects/artsite.png similarity index 100% rename from assets/img/works/artsite.png rename to src/assets/images/projects/artsite.png diff --git a/assets/img/works/erisium.png b/src/assets/images/projects/erisium.png similarity index 100% rename from assets/img/works/erisium.png rename to src/assets/images/projects/erisium.png diff --git a/assets/img/skills/AdonisJs.png b/src/assets/images/skills/AdonisJs.png similarity index 100% rename from assets/img/skills/AdonisJs.png rename to src/assets/images/skills/AdonisJs.png diff --git a/assets/img/skills/Css.png b/src/assets/images/skills/Css.png similarity index 100% rename from assets/img/skills/Css.png rename to src/assets/images/skills/Css.png diff --git a/assets/img/skills/Docker.png b/src/assets/images/skills/Docker.png similarity index 100% rename from assets/img/skills/Docker.png rename to src/assets/images/skills/Docker.png diff --git a/assets/img/skills/ElectronJs.png b/src/assets/images/skills/ElectronJs.png similarity index 100% rename from assets/img/skills/ElectronJs.png rename to src/assets/images/skills/ElectronJs.png diff --git a/assets/img/skills/Git.png b/src/assets/images/skills/Git.png similarity index 100% rename from assets/img/skills/Git.png rename to src/assets/images/skills/Git.png diff --git a/assets/img/skills/GoLang.png b/src/assets/images/skills/GoLang.png similarity index 100% rename from assets/img/skills/GoLang.png rename to src/assets/images/skills/GoLang.png diff --git a/assets/img/skills/Html.png b/src/assets/images/skills/Html.png similarity index 100% rename from assets/img/skills/Html.png rename to src/assets/images/skills/Html.png diff --git a/assets/img/skills/Java.png b/src/assets/images/skills/Java.png similarity index 100% rename from assets/img/skills/Java.png rename to src/assets/images/skills/Java.png diff --git a/assets/img/skills/JavaScript.png b/src/assets/images/skills/JavaScript.png similarity index 100% rename from assets/img/skills/JavaScript.png rename to src/assets/images/skills/JavaScript.png diff --git a/assets/img/skills/MariaDB.png b/src/assets/images/skills/MariaDB.png similarity index 100% rename from assets/img/skills/MariaDB.png rename to src/assets/images/skills/MariaDB.png diff --git a/assets/img/skills/NodeJs.png b/src/assets/images/skills/NodeJs.png similarity index 100% rename from assets/img/skills/NodeJs.png rename to src/assets/images/skills/NodeJs.png diff --git a/assets/img/skills/NuxtJs.png b/src/assets/images/skills/NuxtJs.png similarity index 100% rename from assets/img/skills/NuxtJs.png rename to src/assets/images/skills/NuxtJs.png diff --git a/assets/img/skills/Python.png b/src/assets/images/skills/Python.png similarity index 100% rename from assets/img/skills/Python.png rename to src/assets/images/skills/Python.png diff --git a/assets/img/skills/RabbitMQ.png b/src/assets/images/skills/RabbitMQ.png similarity index 100% rename from assets/img/skills/RabbitMQ.png rename to src/assets/images/skills/RabbitMQ.png diff --git a/assets/img/skills/Redis.png b/src/assets/images/skills/Redis.png similarity index 100% rename from assets/img/skills/Redis.png rename to src/assets/images/skills/Redis.png diff --git a/assets/img/skills/Sass.png b/src/assets/images/skills/Sass.png similarity index 100% rename from assets/img/skills/Sass.png rename to src/assets/images/skills/Sass.png diff --git a/assets/img/skills/TailwindCss.png b/src/assets/images/skills/TailwindCss.png similarity index 100% rename from assets/img/skills/TailwindCss.png rename to src/assets/images/skills/TailwindCss.png diff --git a/assets/img/skills/TypeScript.png b/src/assets/images/skills/TypeScript.png similarity index 100% rename from assets/img/skills/TypeScript.png rename to src/assets/images/skills/TypeScript.png diff --git a/assets/img/skills/VueJs.png b/src/assets/images/skills/VueJs.png similarity index 100% rename from assets/img/skills/VueJs.png rename to src/assets/images/skills/VueJs.png diff --git a/src/assets/images/socials/github-black.svg b/src/assets/images/socials/github-black.svg new file mode 100644 index 0000000..57d980b --- /dev/null +++ b/src/assets/images/socials/github-black.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/socials/github-white.svg b/src/assets/images/socials/github-white.svg new file mode 100644 index 0000000..68f5ba1 --- /dev/null +++ b/src/assets/images/socials/github-white.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/img/socials/nuxtjs.svg b/src/assets/images/socials/nuxtjs.svg similarity index 100% rename from assets/img/socials/nuxtjs.svg rename to src/assets/images/socials/nuxtjs.svg diff --git a/assets/img/socials/twitch.svg b/src/assets/images/socials/twitch.svg similarity index 100% rename from assets/img/socials/twitch.svg rename to src/assets/images/socials/twitch.svg diff --git a/assets/img/socials/twitter.svg b/src/assets/images/socials/twitter.svg similarity index 100% rename from assets/img/socials/twitter.svg rename to src/assets/images/socials/twitter.svg diff --git a/src/components/AboutHome.vue b/src/components/AboutHome.vue new file mode 100644 index 0000000..9c455ac --- /dev/null +++ b/src/components/AboutHome.vue @@ -0,0 +1,43 @@ + + + + + diff --git a/src/components/Ad.vue b/src/components/Ad.vue new file mode 100644 index 0000000..979f8a4 --- /dev/null +++ b/src/components/Ad.vue @@ -0,0 +1,43 @@ + + + + + diff --git a/src/components/AdHome.vue b/src/components/AdHome.vue new file mode 100644 index 0000000..33268f2 --- /dev/null +++ b/src/components/AdHome.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/src/components/Banner.vue b/src/components/Banner.vue new file mode 100644 index 0000000..b6f6839 --- /dev/null +++ b/src/components/Banner.vue @@ -0,0 +1,30 @@ + + + + + diff --git a/src/components/Button.vue b/src/components/Button.vue new file mode 100644 index 0000000..b41860a --- /dev/null +++ b/src/components/Button.vue @@ -0,0 +1,26 @@ + + + + + diff --git a/src/components/ContactForm.vue b/src/components/ContactForm.vue new file mode 100644 index 0000000..eca06d2 --- /dev/null +++ b/src/components/ContactForm.vue @@ -0,0 +1,91 @@ +