-
{{ $t('landing.title') }}
+
+
{{ $t('landing.title') }}
{{ $t('landing.subtitle') }}
-
-
+
+
+
diff --git a/frontend/app/pages/parcours.vue b/frontend/app/pages/parcours.vue
new file mode 100644
index 0000000..e967bcc
--- /dev/null
+++ b/frontend/app/pages/parcours.vue
@@ -0,0 +1,16 @@
+
+
+
{{ $t('pages.journey.title') }}
+
{{ $t('pages.journey.description') }}
+
+
+
+
diff --git a/frontend/app/pages/projets/[slug].vue b/frontend/app/pages/projets/[slug].vue
new file mode 100644
index 0000000..7c04924
--- /dev/null
+++ b/frontend/app/pages/projets/[slug].vue
@@ -0,0 +1,19 @@
+
+
+
{{ slug }}
+
{{ $t('pages.projects.description') }}
+
+
+
+
diff --git a/frontend/app/pages/projets/index.vue b/frontend/app/pages/projets/index.vue
new file mode 100644
index 0000000..830b479
--- /dev/null
+++ b/frontend/app/pages/projets/index.vue
@@ -0,0 +1,16 @@
+
+
+
{{ $t('pages.projects.title') }}
+
{{ $t('pages.projects.description') }}
+
+
+
+
diff --git a/frontend/app/pages/resume.vue b/frontend/app/pages/resume.vue
new file mode 100644
index 0000000..da348ae
--- /dev/null
+++ b/frontend/app/pages/resume.vue
@@ -0,0 +1,20 @@
+
+
+
{{ $t('pages.resume.title') }}
+
{{ $t('pages.resume.description') }}
+
+
+
+
diff --git a/frontend/app/pages/temoignages.vue b/frontend/app/pages/temoignages.vue
new file mode 100644
index 0000000..1d0e4dc
--- /dev/null
+++ b/frontend/app/pages/temoignages.vue
@@ -0,0 +1,16 @@
+
+
+
{{ $t('pages.testimonials.title') }}
+
{{ $t('pages.testimonials.description') }}
+
+
+
+
diff --git a/frontend/app/router.options.ts b/frontend/app/router.options.ts
new file mode 100644
index 0000000..7ae0a4f
--- /dev/null
+++ b/frontend/app/router.options.ts
@@ -0,0 +1,27 @@
+import type { RouterConfig } from '@nuxt/schema'
+
+export default
{
+ scrollBehavior(to, _from, savedPosition) {
+ if (savedPosition) {
+ return new Promise((resolve) => {
+ setTimeout(() => {
+ resolve(savedPosition)
+ }, 350)
+ })
+ }
+
+ if (to.hash) {
+ return {
+ el: to.hash,
+ behavior: 'smooth',
+ top: 80,
+ }
+ }
+
+ return new Promise((resolve) => {
+ setTimeout(() => {
+ resolve({ top: 0, behavior: 'smooth' })
+ }, 350)
+ })
+ },
+}
diff --git a/frontend/i18n/en.json b/frontend/i18n/en.json
index dc947a1..2e98dea 100644
--- a/frontend/i18n/en.json
+++ b/frontend/i18n/en.json
@@ -14,7 +14,9 @@
"discover": "Discover",
"close": "Close",
"loading": "Loading...",
- "language": "Language"
+ "language": "Language",
+ "back_home": "Back to home",
+ "back_to_adventure": "Back to the adventure"
},
"landing": {
"title": "Welcome to my universe",
@@ -23,8 +25,8 @@
"cta_express": "Express mode"
},
"error": {
- "404": "Page not found",
- "generic": "An error occurred"
+ "404": "Oops! This page seems to have gotten lost in the code...",
+ "generic": "An unexpected error occurred. The Bug is investigating..."
},
"meta": {
"title": "Skycel - Célian's Portfolio",
@@ -33,5 +35,31 @@
"footer": {
"copyright": "© {year} Célian — Skycel",
"built_with": "Built with Nuxt & Laravel"
+ },
+ "pages": {
+ "projects": {
+ "title": "Projects",
+ "description": "Discover my projects and achievements"
+ },
+ "skills": {
+ "title": "Skills",
+ "description": "My technical and soft skills"
+ },
+ "testimonials": {
+ "title": "Testimonials",
+ "description": "What people say about my work"
+ },
+ "journey": {
+ "title": "Journey",
+ "description": "My professional and personal journey"
+ },
+ "contact": {
+ "title": "Contact",
+ "description": "Get in touch with me"
+ },
+ "resume": {
+ "title": "Quick Resume",
+ "description": "The essentials at a glance"
+ }
}
}
diff --git a/frontend/i18n/fr.json b/frontend/i18n/fr.json
index 633ef9f..8375815 100644
--- a/frontend/i18n/fr.json
+++ b/frontend/i18n/fr.json
@@ -14,7 +14,9 @@
"discover": "Découvrir",
"close": "Fermer",
"loading": "Chargement...",
- "language": "Langue"
+ "language": "Langue",
+ "back_home": "Retour à l'accueil",
+ "back_to_adventure": "Retour à l'aventure"
},
"landing": {
"title": "Bienvenue dans mon univers",
@@ -23,8 +25,8 @@
"cta_express": "Mode express"
},
"error": {
- "404": "Page non trouvée",
- "generic": "Une erreur est survenue"
+ "404": "Oups ! Cette page semble s'être perdue dans les méandres du code...",
+ "generic": "Une erreur inattendue s'est produite. Le Bug enquête..."
},
"meta": {
"title": "Skycel - Portfolio de Célian",
@@ -33,5 +35,31 @@
"footer": {
"copyright": "© {year} Célian — Skycel",
"built_with": "Construit avec Nuxt & Laravel"
+ },
+ "pages": {
+ "projects": {
+ "title": "Projets",
+ "description": "Découvrez mes projets et réalisations"
+ },
+ "skills": {
+ "title": "Compétences",
+ "description": "Mes compétences techniques et humaines"
+ },
+ "testimonials": {
+ "title": "Témoignages",
+ "description": "Ce que l'on dit de mon travail"
+ },
+ "journey": {
+ "title": "Parcours",
+ "description": "Mon parcours professionnel et personnel"
+ },
+ "contact": {
+ "title": "Contact",
+ "description": "Prenez contact avec moi"
+ },
+ "resume": {
+ "title": "Résumé Express",
+ "description": "L'essentiel en un coup d'œil"
+ }
}
}
diff --git a/frontend/nuxt.config.ts b/frontend/nuxt.config.ts
index e0b6060..c6106e6 100644
--- a/frontend/nuxt.config.ts
+++ b/frontend/nuxt.config.ts
@@ -14,7 +14,7 @@ export default defineNuxtConfig({
'@nuxtjs/sitemap',
],
- css: ['~/assets/css/main.css'],
+ css: ['~/assets/css/main.css', '~/assets/css/transitions.css'],
postcss: {
plugins: {
@@ -33,6 +33,7 @@ export default defineNuxtConfig({
lazy: true,
langDir: '../i18n/',
detectBrowserLanguage: false,
+ customRoutes: 'config',
pages: {
'projets/index': { en: '/projects' },
'projets/[slug]': { en: '/projects/[slug]' },
@@ -46,13 +47,22 @@ export default defineNuxtConfig({
},
app: {
+ head: {
+ link: [
+ { rel: 'icon', type: 'image/svg+xml', href: '/favicon.svg' },
+ ],
+ },
pageTransition: { name: 'page', mode: 'out-in' },
+ layoutTransition: { name: 'layout', mode: 'out-in' },
},
runtimeConfig: {
public: {
apiUrl: process.env.NUXT_PUBLIC_API_URL || 'http://localhost:8000/api',
apiKey: process.env.NUXT_PUBLIC_API_KEY || '',
+ siteUrl: process.env.NUXT_PUBLIC_SITE_URL || 'https://skycel.fr',
+ githubUrl: process.env.NUXT_PUBLIC_GITHUB_URL || 'https://git.araneite.dev/skycel',
+ linkedinUrl: process.env.NUXT_PUBLIC_LINKEDIN_URL || '',
},
},
diff --git a/frontend/public/favicon.svg b/frontend/public/favicon.svg
new file mode 100644
index 0000000..bd62e00
--- /dev/null
+++ b/frontend/public/favicon.svg
@@ -0,0 +1,4 @@
+