From 82d310403c4bb09bc2f0a204b6374934a10cf348 Mon Sep 17 00:00:00 2001 From: Armand Philippot Date: Sat, 29 Jan 2022 23:38:13 +0100 Subject: refactor(config): move config from config dir to utils --- src/components/Branding/Branding.tsx | 18 +++++----- src/components/Breadcrumb/Breadcrumb.tsx | 12 +++---- src/components/Comment/Comment.tsx | 10 +++--- src/components/Copyright/Copyright.tsx | 6 ++-- src/components/Layouts/Layout.tsx | 36 ++++++++++---------- src/components/MDX/CodeBlock/CodeBlock.tsx | 4 +-- src/components/PostMeta/PostMeta.tsx | 4 +-- src/components/PostPreview/PostPreview.tsx | 14 ++++---- src/components/ProjectSummary/ProjectSummary.tsx | 6 ++-- src/components/Widgets/RecentPosts/RecentPosts.tsx | 4 +-- src/config/website.ts | 16 --------- src/pages/404.tsx | 4 +-- src/pages/_app.tsx | 4 +-- src/pages/article/[slug].tsx | 28 ++++++++-------- src/pages/blog/index.tsx | 38 +++++++++++----------- src/pages/contact.tsx | 24 +++++++------- src/pages/cv.tsx | 26 +++++++-------- src/pages/index.tsx | 24 +++++++------- src/pages/mentions-legales.tsx | 26 +++++++-------- src/pages/projet/[slug].tsx | 24 +++++++------- src/pages/projets.tsx | 26 +++++++-------- src/pages/recherche/index.tsx | 14 ++++---- src/pages/sujet/[slug].tsx | 28 ++++++++-------- src/pages/thematique/[slug].tsx | 26 +++++++-------- src/utils/config.ts | 16 +++++++++ src/utils/helpers/i18n.ts | 4 +-- src/utils/helpers/rss.ts | 10 +++--- 27 files changed, 225 insertions(+), 227 deletions(-) delete mode 100644 src/config/website.ts create mode 100644 src/utils/config.ts (limited to 'src') diff --git a/src/components/Branding/Branding.tsx b/src/components/Branding/Branding.tsx index efb3a49..adefbca 100644 --- a/src/components/Branding/Branding.tsx +++ b/src/components/Branding/Branding.tsx @@ -1,5 +1,5 @@ import photo from '@assets/images/armand-philippot.jpg'; -import { config } from '@config/website'; +import { settings } from '@utils/config'; import Head from 'next/head'; import Image from 'next/image'; import Link from 'next/link'; @@ -18,12 +18,12 @@ const Branding: BrandingReturn = ({ isHome = false }) => { const schemaJsonLd: WithContext = { '@context': 'https://schema.org', '@type': 'Person', - '@id': `${config.url}/#branding`, - name: config.name, - url: config.url, - jobTitle: config.baseline, + '@id': `${settings.url}/#branding`, + name: settings.name, + url: settings.url, + jobTitle: settings.baseline, image: photo.src, - subjectOf: { '@id': `${config.url}` }, + subjectOf: { '@id': `${settings.url}` }, }; return ( @@ -45,7 +45,7 @@ const Branding: BrandingReturn = ({ isHome = false }) => { description: 'Branding: branding name picture.', }, { - brandingName: config.name, + brandingName: settings.name, } )} layout="responsive" @@ -57,10 +57,10 @@ const Branding: BrandingReturn = ({ isHome = false }) => { - {config.name} + {settings.name} -

{config.baseline}

+

{settings.baseline}

); diff --git a/src/components/Breadcrumb/Breadcrumb.tsx b/src/components/Breadcrumb/Breadcrumb.tsx index 30179be..914a175 100644 --- a/src/components/Breadcrumb/Breadcrumb.tsx +++ b/src/components/Breadcrumb/Breadcrumb.tsx @@ -1,4 +1,4 @@ -import { config } from '@config/website'; +import { settings } from '@utils/config'; import Head from 'next/head'; import Link from 'next/link'; import { useRouter } from 'next/router'; @@ -71,7 +71,7 @@ const Breadcrumb = ({ pageTitle }: { pageTitle: string }) => { defaultMessage: 'Home', description: 'Breadcrumb: Home item', }), - item: config.url, + item: settings.url, }; items.push(homepage); @@ -84,7 +84,7 @@ const Breadcrumb = ({ pageTitle }: { pageTitle: string }) => { defaultMessage: 'Blog', description: 'Breadcrumb: Blog item', }), - item: `${config.url}/blog`, + item: `${settings.url}/blog`, }; items.push(blog); @@ -98,7 +98,7 @@ const Breadcrumb = ({ pageTitle }: { pageTitle: string }) => { defaultMessage: 'Projects', description: 'Breadcrumb: Projects item', }), - item: `${config.url}/projets`, + item: `${settings.url}/projets`, }; items.push(blog); @@ -108,7 +108,7 @@ const Breadcrumb = ({ pageTitle }: { pageTitle: string }) => { '@type': 'ListItem', position: items.length + 1, name: pageTitle, - item: `${config.url}${router.asPath}`, + item: `${settings.url}${router.asPath}`, }; items.push(currentPage); @@ -119,7 +119,7 @@ const Breadcrumb = ({ pageTitle }: { pageTitle: string }) => { const schemaJsonLd: WithContext = { '@context': 'https://schema.org', '@type': 'BreadcrumbList', - '@id': `${config.url}/#breadcrumb`, + '@id': `${settings.url}/#breadcrumb`, itemListElement: getElementsSchema(), }; diff --git a/src/components/Comment/Comment.tsx b/src/components/Comment/Comment.tsx index e95a378..4835f8c 100644 --- a/src/components/Comment/Comment.tsx +++ b/src/components/Comment/Comment.tsx @@ -1,7 +1,7 @@ import { Button } from '@components/Buttons'; import CommentForm from '@components/CommentForm/CommentForm'; -import { config } from '@config/website'; import { Comment as CommentData } from '@ts/types/comments'; +import { settings } from '@utils/config'; import { getFormattedDate } from '@utils/helpers/format'; import Head from 'next/head'; import Image from 'next/image'; @@ -23,7 +23,7 @@ const Comment = ({ }) => { const intl = useIntl(); const router = useRouter(); - const locale = router.locale ? router.locale : config.locales.defaultLocale; + const locale = router.locale ? router.locale : settings.locales.defaultLocale; const [isReply, setIsReply] = useState(false); const firstFieldRef = useRef(null); @@ -146,12 +146,12 @@ const Comment = ({ const schemaJsonLd: WithContext = { '@context': 'https://schema.org', - '@id': `${config.url}/#comment-${comment.commentId}`, + '@id': `${settings.url}/#comment-${comment.commentId}`, '@type': 'Comment', parentItem: isNested - ? { '@id': `${config.url}/#comment-${comment.parentDatabaseId}` } + ? { '@id': `${settings.url}/#comment-${comment.parentDatabaseId}` } : undefined, - about: { '@type': 'Article', '@id': `${config.url}/#article` }, + about: { '@type': 'Article', '@id': `${settings.url}/#article` }, author: { '@type': 'Person', name: comment.author.name, diff --git a/src/components/Copyright/Copyright.tsx b/src/components/Copyright/Copyright.tsx index 9a57f9c..7ea3829 100644 --- a/src/components/Copyright/Copyright.tsx +++ b/src/components/Copyright/Copyright.tsx @@ -1,14 +1,14 @@ import { CopyrightIcon } from '@components/Icons'; -import { config } from '@config/website'; +import { settings } from '@utils/config'; import styles from './Copyright.module.scss'; const Copyright = () => { return (

- {config.name} + {settings.name} - {config.copyright.startYear} - {config.copyright.endYear} + {settings.copyright.startYear} - {settings.copyright.endYear}

); diff --git a/src/components/Layouts/Layout.tsx b/src/components/Layouts/Layout.tsx index b479ef3..d074b68 100644 --- a/src/components/Layouts/Layout.tsx +++ b/src/components/Layouts/Layout.tsx @@ -2,7 +2,7 @@ import Footer from '@components/Footer/Footer'; import Header from '@components/Header/Header'; import Main from '@components/Main/Main'; import Breadcrumb from '@components/Breadcrumb/Breadcrumb'; -import { config } from '@config/website'; +import { settings } from '@utils/config'; import Head from 'next/head'; import { useRouter } from 'next/router'; import { ReactElement, ReactNode, useEffect, useRef } from 'react'; @@ -26,19 +26,19 @@ const Layout = ({ const schemaJsonLd: WithContext = { '@context': 'https://schema.org', - '@id': `${config.url}`, + '@id': `${settings.url}`, '@type': 'WebSite', - name: config.name, - description: config.baseline, - url: config.url, - author: { '@id': `${config.url}/#branding` }, - copyrightYear: Number(config.copyright.startYear), - creator: { '@id': `${config.url}/#branding` }, - editor: { '@id': `${config.url}/#branding` }, - inLanguage: config.locales.defaultLocale, + name: settings.name, + description: settings.baseline, + url: settings.url, + author: { '@id': `${settings.url}/#branding` }, + copyrightYear: Number(settings.copyright.startYear), + creator: { '@id': `${settings.url}/#branding` }, + editor: { '@id': `${settings.url}/#branding` }, + inLanguage: settings.locales.defaultLocale, potentialAction: { '@type': 'SearchAction', - target: `${config.url}/recherche?s={query}`, + target: `${settings.url}/recherche?s={query}`, query: 'required', }, }; @@ -46,14 +46,14 @@ const Layout = ({ return ( <> - + - - + + diff --git a/src/components/MDX/CodeBlock/CodeBlock.tsx b/src/components/MDX/CodeBlock/CodeBlock.tsx index 59386af..8311999 100644 --- a/src/components/MDX/CodeBlock/CodeBlock.tsx +++ b/src/components/MDX/CodeBlock/CodeBlock.tsx @@ -1,4 +1,4 @@ -import { config } from '@config/website'; +import { settings } from '@utils/config'; import { translateCopyButton } from '@utils/helpers/prism'; import { useRouter } from 'next/router'; import Prism from 'prismjs'; @@ -18,7 +18,7 @@ const CodeBlock = ({ ); const intl = useIntl(); const router = useRouter(); - const locale = router.locale ? router.locale : config.locales.defaultLocale; + const locale = router.locale ? router.locale : settings.locales.defaultLocale; useEffect(() => { Prism.highlightAll(); diff --git a/src/components/PostMeta/PostMeta.tsx b/src/components/PostMeta/PostMeta.tsx index 86e4e71..b951c44 100644 --- a/src/components/PostMeta/PostMeta.tsx +++ b/src/components/PostMeta/PostMeta.tsx @@ -1,5 +1,5 @@ -import { config } from '@config/website'; import { ArticleMeta } from '@ts/types/articles'; +import { settings } from '@utils/config'; import { getFormattedDate } from '@utils/helpers/format'; import Link from 'next/link'; import { useRouter } from 'next/router'; @@ -28,7 +28,7 @@ const PostMeta = ({ } = meta; const intl = useIntl(); const router = useRouter(); - const locale = router.locale ? router.locale : config.locales.defaultLocale; + const locale = router.locale ? router.locale : settings.locales.defaultLocale; const isThematic = () => router.asPath.includes('/thematique/'); const isArticle = () => router.asPath.includes('/article/'); diff --git a/src/components/PostPreview/PostPreview.tsx b/src/components/PostPreview/PostPreview.tsx index 72ba638..0be9709 100644 --- a/src/components/PostPreview/PostPreview.tsx +++ b/src/components/PostPreview/PostPreview.tsx @@ -1,9 +1,9 @@ import { ButtonLink } from '@components/Buttons'; import { ArrowIcon } from '@components/Icons'; import PostMeta from '@components/PostMeta/PostMeta'; -import { config } from '@config/website'; import { TitleLevel } from '@ts/types/app'; import { ArticleMeta, ArticlePreview } from '@ts/types/articles'; +import { settings } from '@utils/config'; import Image from 'next/image'; import Head from 'next/head'; import Link from 'next/link'; @@ -49,18 +49,18 @@ const PostPreview = ({ name: title, description: intro, articleBody: intro, - author: { '@id': `${config.url}/#branding` }, + author: { '@id': `${settings.url}/#branding` }, commentCount: commentCount ? commentCount : 0, copyrightYear: publicationDate.getFullYear(), - creator: { '@id': `${config.url}/#branding` }, + creator: { '@id': `${settings.url}/#branding` }, dateCreated: publicationDate.toISOString(), dateModified: updateDate.toISOString(), datePublished: publicationDate.toISOString(), - editor: { '@id': `${config.url}/#branding` }, + editor: { '@id': `${settings.url}/#branding` }, image: featuredImage?.sourceUrl, - inLanguage: config.locales.defaultLocale, - isBasedOn: `${config.url}/article/${slug}`, - isPartOf: { '@id': `${config.url}/blog` }, + inLanguage: settings.locales.defaultLocale, + isBasedOn: `${settings.url}/article/${slug}`, + isPartOf: { '@id': `${settings.url}/blog` }, license: 'https://creativecommons.org/licenses/by-sa/4.0/deed.fr', thumbnailUrl: featuredImage?.sourceUrl, }; diff --git a/src/components/ProjectSummary/ProjectSummary.tsx b/src/components/ProjectSummary/ProjectSummary.tsx index f2d73b6..03c9b87 100644 --- a/src/components/ProjectSummary/ProjectSummary.tsx +++ b/src/components/ProjectSummary/ProjectSummary.tsx @@ -1,11 +1,10 @@ import GithubIcon from '@assets/images/social-media/github.svg'; import GitlabIcon from '@assets/images/social-media/gitlab.svg'; -import { config } from '@config/website'; import { ProjectMeta } from '@ts/types/app'; +import { settings } from '@utils/config'; import { getFormattedDate } from '@utils/helpers/format'; import { slugify } from '@utils/helpers/slugify'; import useGithubApi from '@utils/hooks/useGithubApi'; -import IntlMessageFormat from 'intl-messageformat'; import Image from 'next/image'; import { useRouter } from 'next/router'; import { useIntl } from 'react-intl'; @@ -13,7 +12,6 @@ import styles from './ProjectSummary.module.scss'; const ProjectSummary = ({ id, - title, meta, }: { id: string; @@ -23,7 +21,7 @@ const ProjectSummary = ({ const { hasCover, license, repos, technologies } = meta; const intl = useIntl(); const router = useRouter(); - const locale = router.locale ? router.locale : config.locales.defaultLocale; + const locale = router.locale ? router.locale : settings.locales.defaultLocale; const { data } = useGithubApi(repos?.github ? repos.github : ''); return ( diff --git a/src/components/Widgets/RecentPosts/RecentPosts.tsx b/src/components/Widgets/RecentPosts/RecentPosts.tsx index 08ce7e4..1507edf 100644 --- a/src/components/Widgets/RecentPosts/RecentPosts.tsx +++ b/src/components/Widgets/RecentPosts/RecentPosts.tsx @@ -1,7 +1,7 @@ import Spinner from '@components/Spinner/Spinner'; -import { config } from '@config/website'; import { getPublishedPosts } from '@services/graphql/queries'; import { ArticlePreview } from '@ts/types/articles'; +import { settings } from '@utils/config'; import { getFormattedDate } from '@utils/helpers/format'; import Image from 'next/image'; import Link from 'next/link'; @@ -16,7 +16,7 @@ const RecentPosts = () => { getPublishedPosts({ first: 3 }) ); const router = useRouter(); - const locale = router.locale ? router.locale : config.locales.defaultLocale; + const locale = router.locale ? router.locale : settings.locales.defaultLocale; const getPost = (post: ArticlePreview) => { return ( diff --git a/src/config/website.ts b/src/config/website.ts deleted file mode 100644 index 81c493f..0000000 --- a/src/config/website.ts +++ /dev/null @@ -1,16 +0,0 @@ -export const config = { - name: 'Armand Philippot', - baseline: 'Front-end developer', - copyright: { - startYear: '2012', - endYear: new Date().getFullYear(), - }, - locales: { - defaultLocale: 'fr', - defaultCountry: 'FR', - supported: ['en', 'fr'], - }, - postsPerPage: 10, - twitterId: '@ArmandPhilippot', - url: process.env.NEXT_PUBLIC_FRONTEND_URL, -}; diff --git a/src/pages/404.tsx b/src/pages/404.tsx index 079dead..d5b2e86 100644 --- a/src/pages/404.tsx +++ b/src/pages/404.tsx @@ -1,8 +1,8 @@ import { getLayout } from '@components/Layouts/Layout'; import PostHeader from '@components/PostHeader/PostHeader'; -import { config } from '@config/website'; import styles from '@styles/pages/Page.module.scss'; import { NextPageWithLayout } from '@ts/types/app'; +import { settings } from '@utils/config'; import { getIntlInstance, loadTranslation } from '@utils/helpers/i18n'; import { GetStaticProps, GetStaticPropsContext } from 'next'; import Head from 'next/head'; @@ -17,7 +17,7 @@ const Error404: NextPageWithLayout = () => { defaultMessage: 'Error 404: Page not found - {websiteName}', description: '404Page: SEO - Page title', }, - { websiteName: config.name } + { websiteName: settings.name } ); const pageDescription = intl.formatMessage({ defaultMessage: 'Page not found.', diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index ec97ff7..7c6142c 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -1,5 +1,5 @@ -import { config } from '@config/website'; import { AppPropsWithLayout } from '@ts/types/app'; +import { settings } from '@utils/config'; import { ThemeProvider } from 'next-themes'; import { useRouter } from 'next/router'; import { IntlProvider } from 'react-intl'; @@ -7,7 +7,7 @@ import '../styles/globals.scss'; const MyApp = ({ Component, pageProps }: AppPropsWithLayout) => { const { locale, defaultLocale } = useRouter(); - const appLocale: string = locale || config.locales.defaultLocale; + const appLocale: string = locale || settings.locales.defaultLocale; const getLayout = Component.getLayout ?? ((page) => page); return ( diff --git a/src/pages/article/[slug].tsx b/src/pages/article/[slug].tsx index 8668a66..dc2c76a 100644 --- a/src/pages/article/[slug].tsx +++ b/src/pages/article/[slug].tsx @@ -5,11 +5,11 @@ import PostFooter from '@components/PostFooter/PostFooter'; import PostHeader from '@components/PostHeader/PostHeader'; import Sidebar from '@components/Sidebar/Sidebar'; import { Sharing, ToC } from '@components/Widgets'; -import { config } from '@config/website'; import { getAllPostsSlug, getPostBySlug } from '@services/graphql/queries'; import styles from '@styles/pages/Page.module.scss'; import { NextPageWithLayout } from '@ts/types/app'; import { ArticleMeta, ArticleProps } from '@ts/types/articles'; +import { settings } from '@utils/config'; import { loadTranslation } from '@utils/helpers/i18n'; import { addPrismClasses, translateCopyButton } from '@utils/helpers/prism'; import { GetStaticPaths, GetStaticProps, GetStaticPropsContext } from 'next'; @@ -48,8 +48,8 @@ const SingleArticle: NextPageWithLayout = ({ post }) => { const intl = useIntl(); const router = useRouter(); - const locale = router.locale ? router.locale : config.locales.defaultLocale; - const articleUrl = `${config.url}${router.asPath}`; + const locale = router.locale ? router.locale : settings.locales.defaultLocale; + const articleUrl = `${settings.url}${router.asPath}`; useEffect(() => { addPrismClasses(); @@ -63,21 +63,21 @@ const SingleArticle: NextPageWithLayout = ({ post }) => { const webpageSchema: WebPage = { '@id': `${articleUrl}`, '@type': 'WebPage', - breadcrumb: { '@id': `${config.url}/#breadcrumb` }, + breadcrumb: { '@id': `${settings.url}/#breadcrumb` }, lastReviewed: dates.update, name: seo.title, description: seo.metaDesc, - reviewedBy: { '@id': `${config.url}/#branding` }, + reviewedBy: { '@id': `${settings.url}/#branding` }, url: `${articleUrl}`, isPartOf: { - '@id': `${config.url}`, + '@id': `${settings.url}`, }, }; const blogSchema: Blog = { - '@id': `${config.url}/#blog`, + '@id': `${settings.url}/#blog`, '@type': 'Blog', - blogPost: { '@id': `${config.url}/#article` }, + blogPost: { '@id': `${settings.url}/#article` }, isPartOf: { '@id': `${articleUrl}`, }, @@ -88,24 +88,24 @@ const SingleArticle: NextPageWithLayout = ({ post }) => { const updateDate = new Date(dates.update); const blogPostSchema: BlogPosting = { - '@id': `${config.url}/#article`, + '@id': `${settings.url}/#article`, '@type': 'BlogPosting', name: title, description: intro, articleBody: content, - author: { '@id': `${config.url}/#branding` }, + author: { '@id': `${settings.url}/#branding` }, commentCount: comments.length, copyrightYear: publicationDate.getFullYear(), - creator: { '@id': `${config.url}/#branding` }, + creator: { '@id': `${settings.url}/#branding` }, dateCreated: publicationDate.toISOString(), dateModified: updateDate.toISOString(), datePublished: publicationDate.toISOString(), discussionUrl: `${articleUrl}/#comments`, - editor: { '@id': `${config.url}/#branding` }, + editor: { '@id': `${settings.url}/#branding` }, image: featuredImage?.sourceUrl, - inLanguage: config.locales.defaultLocale, + inLanguage: settings.locales.defaultLocale, isPartOf: { - '@id': `${config.url}/blog`, + '@id': `${settings.url}/blog`, }, license: 'https://creativecommons.org/licenses/by-sa/4.0/deed.fr', mainEntityOfPage: { '@id': `${articleUrl}` }, diff --git a/src/pages/blog/index.tsx b/src/pages/blog/index.tsx index 9a86d9f..c0d99e9 100644 --- a/src/pages/blog/index.tsx +++ b/src/pages/blog/index.tsx @@ -6,11 +6,11 @@ import PostsList from '@components/PostsList/PostsList'; import Sidebar from '@components/Sidebar/Sidebar'; import Spinner from '@components/Spinner/Spinner'; import { ThematicsList, TopicsList } from '@components/Widgets'; -import { config } from '@config/website'; import { getPublishedPosts } from '@services/graphql/queries'; import styles from '@styles/pages/Page.module.scss'; import { NextPageWithLayout } from '@ts/types/app'; import { BlogPageProps, PostsList as PostsListData } from '@ts/types/blog'; +import { settings } from '@utils/config'; import { getIntlInstance, loadTranslation } from '@utils/helpers/i18n'; import { GetStaticProps, GetStaticPropsContext } from 'next'; import Head from 'next/head'; @@ -29,9 +29,9 @@ const Blog: NextPageWithLayout = ({ fallback }) => { if (previousData && !previousData.posts) return null; return pageIndex === 0 - ? { first: config.postsPerPage } + ? { first: settings.postsPerPage } : { - first: config.postsPerPage, + first: settings.postsPerPage, after: previousData.pageInfo.endCursor, }; }; @@ -48,13 +48,13 @@ const Blog: NextPageWithLayout = ({ fallback }) => { }, [data]); const [loadedPostsCount, setLoadedPostsCount] = useState( - config.postsPerPage + settings.postsPerPage ); useEffect(() => { if (data && data.length > 0) { const newCount = - config.postsPerPage + + settings.postsPerPage + data[0].pageInfo.total - data[data.length - 1].pageInfo.total; setLoadedPostsCount(newCount); @@ -91,7 +91,7 @@ const Blog: NextPageWithLayout = ({ fallback }) => { defaultMessage: 'Blog: development, open source - {websiteName}', description: 'BlogPage: SEO - Page title', }, - { websiteName: config.name } + { websiteName: settings.name } ); const pageDescription = intl.formatMessage( { @@ -99,31 +99,31 @@ const Blog: NextPageWithLayout = ({ fallback }) => { "Discover {websiteName}'s writings. He talks about web development, Linux and open source mostly.", description: 'BlogPage: SEO - Meta description', }, - { websiteName: config.name } + { websiteName: settings.name } ); - const pageUrl = `${config.url}${router.asPath}`; + const pageUrl = `${settings.url}${router.asPath}`; const webpageSchema: WebPage = { '@id': `${pageUrl}`, '@type': 'WebPage', - breadcrumb: { '@id': `${config.url}/#breadcrumb` }, + breadcrumb: { '@id': `${settings.url}/#breadcrumb` }, name: pageTitle, description: pageDescription, - inLanguage: config.locales.defaultLocale, - reviewedBy: { '@id': `${config.url}/#branding` }, - url: `${config.url}`, + inLanguage: settings.locales.defaultLocale, + reviewedBy: { '@id': `${settings.url}/#branding` }, + url: `${settings.url}`, isPartOf: { - '@id': `${config.url}`, + '@id': `${settings.url}`, }, }; const blogSchema: BlogSchema = { - '@id': `${config.url}/#blog`, + '@id': `${settings.url}/#blog`, '@type': 'Blog', - author: { '@id': `${config.url}/#branding` }, - creator: { '@id': `${config.url}/#branding` }, - editor: { '@id': `${config.url}/#branding` }, - inLanguage: config.locales.defaultLocale, + author: { '@id': `${settings.url}/#branding` }, + creator: { '@id': `${settings.url}/#branding` }, + editor: { '@id': `${settings.url}/#branding` }, + inLanguage: settings.locales.defaultLocale, license: 'https://creativecommons.org/licenses/by-sa/4.0/deed.fr', mainEntityOfPage: { '@id': `${pageUrl}` }, }; @@ -213,7 +213,7 @@ export const getStaticProps: GetStaticProps = async ( defaultMessage: 'Blog', description: 'BlogPage: breadcrumb item', }); - const data = await getPublishedPosts({ first: config.postsPerPage }); + const data = await getPublishedPosts({ first: settings.postsPerPage }); const { locale } = context; const translation = await loadTranslation(locale); diff --git a/src/pages/contact.tsx b/src/pages/contact.tsx index 489135d..e410afa 100644 --- a/src/pages/contact.tsx +++ b/src/pages/contact.tsx @@ -4,10 +4,10 @@ import { getLayout } from '@components/Layouts/Layout'; import PostHeader from '@components/PostHeader/PostHeader'; import Sidebar from '@components/Sidebar/Sidebar'; import { SocialMedia } from '@components/Widgets'; -import { config } from '@config/website'; import { sendMail } from '@services/graphql/mutations'; import styles from '@styles/pages/Page.module.scss'; import { NextPageWithLayout } from '@ts/types/app'; +import { settings } from '@utils/config'; import { getIntlInstance, loadTranslation } from '@utils/helpers/i18n'; import { GetStaticProps, GetStaticPropsContext } from 'next'; import Head from 'next/head'; @@ -68,7 +68,7 @@ const ContactPage: NextPageWithLayout = () => { defaultMessage: 'Contact form - {websiteName}', description: 'ContactPage: SEO - Page title', }, - { websiteName: config.name } + { websiteName: settings.name } ); const pageDescription = intl.formatMessage( { @@ -76,9 +76,9 @@ const ContactPage: NextPageWithLayout = () => { "Contact {websiteName} through its website. All you need to do it's to fill the contact form.", description: 'ContactPage: SEO - Meta description', }, - { websiteName: config.name } + { websiteName: settings.name } ); - const pageUrl = `${config.url}${router.asPath}`; + const pageUrl = `${settings.url}${router.asPath}`; const title = intl.formatMessage({ defaultMessage: 'Contact', description: 'ContactPage: page title', @@ -91,25 +91,25 @@ const ContactPage: NextPageWithLayout = () => { const webpageSchema: WebPage = { '@id': `${pageUrl}`, '@type': 'WebPage', - breadcrumb: { '@id': `${config.url}/#breadcrumb` }, + breadcrumb: { '@id': `${settings.url}/#breadcrumb` }, name: pageTitle, description: pageDescription, - reviewedBy: { '@id': `${config.url}/#branding` }, + reviewedBy: { '@id': `${settings.url}/#branding` }, url: `${pageUrl}`, isPartOf: { - '@id': `${config.url}`, + '@id': `${settings.url}`, }, }; const contactSchema: ContactPageSchema = { - '@id': `${config.url}/#contact`, + '@id': `${settings.url}/#contact`, '@type': 'ContactPage', name: title, description: intro, - author: { '@id': `${config.url}/#branding` }, - creator: { '@id': `${config.url}/#branding` }, - editor: { '@id': `${config.url}/#branding` }, - inLanguage: config.locales.defaultLocale, + author: { '@id': `${settings.url}/#branding` }, + creator: { '@id': `${settings.url}/#branding` }, + editor: { '@id': `${settings.url}/#branding` }, + inLanguage: settings.locales.defaultLocale, license: 'https://creativecommons.org/licenses/by-sa/4.0/deed.fr', mainEntityOfPage: { '@id': `${pageUrl}` }, }; diff --git a/src/pages/cv.tsx b/src/pages/cv.tsx index c3686de..311d0ce 100644 --- a/src/pages/cv.tsx +++ b/src/pages/cv.tsx @@ -2,11 +2,11 @@ import { getLayout } from '@components/Layouts/Layout'; import PostHeader from '@components/PostHeader/PostHeader'; import Sidebar from '@components/Sidebar/Sidebar'; import { CVPreview, SocialMedia, ToC } from '@components/Widgets'; -import { config } from '@config/website'; import CVContent, { intro, meta, pdf, image } from '@content/pages/cv.mdx'; import styles from '@styles/pages/Page.module.scss'; import { NextPageWithLayout } from '@ts/types/app'; import { ArticleMeta } from '@ts/types/articles'; +import { settings } from '@utils/config'; import { loadTranslation } from '@utils/helpers/i18n'; import { GetStaticProps, GetStaticPropsContext } from 'next'; import Head from 'next/head'; @@ -25,13 +25,13 @@ const CV: NextPageWithLayout = () => { const pageMeta: ArticleMeta = { dates, }; - const pageUrl = `${config.url}${router.asPath}`; + const pageUrl = `${settings.url}${router.asPath}`; const pageTitle = intl.formatMessage( { defaultMessage: 'CV Front-end developer - {websiteName}', description: 'CVPage: SEO - Page title', }, - { websiteName: config.name } + { websiteName: settings.name } ); const pageDescription = intl.formatMessage( { @@ -39,19 +39,19 @@ const CV: NextPageWithLayout = () => { 'Discover the curriculum of {websiteName}, front-end developer located in France: skills, experiences and training.', description: 'CVPage: SEO - Meta description', }, - { websiteName: config.name } + { websiteName: settings.name } ); const webpageSchema: WebPage = { '@id': `${pageUrl}`, '@type': 'WebPage', - breadcrumb: { '@id': `${config.url}/#breadcrumb` }, + breadcrumb: { '@id': `${settings.url}/#breadcrumb` }, name: pageTitle, description: pageDescription, - reviewedBy: { '@id': `${config.url}/#branding` }, + reviewedBy: { '@id': `${settings.url}/#branding` }, url: `${pageUrl}`, isPartOf: { - '@id': `${config.url}`, + '@id': `${settings.url}`, }, }; @@ -59,18 +59,18 @@ const CV: NextPageWithLayout = () => { const updateDate = new Date(dates.update); const cvSchema: AboutPage = { - '@id': `${config.url}/#cv`, + '@id': `${settings.url}/#cv`, '@type': 'AboutPage', name: pageTitle, description: intro, - author: { '@id': `${config.url}/#branding` }, - creator: { '@id': `${config.url}/#branding` }, + author: { '@id': `${settings.url}/#branding` }, + creator: { '@id': `${settings.url}/#branding` }, dateCreated: publicationDate.toISOString(), dateModified: updateDate.toISOString(), datePublished: publicationDate.toISOString(), - editor: { '@id': `${config.url}/#branding` }, + editor: { '@id': `${settings.url}/#branding` }, image, - inLanguage: config.locales.defaultLocale, + inLanguage: settings.locales.defaultLocale, license: 'https://creativecommons.org/licenses/by-sa/4.0/deed.fr', thumbnailUrl: image, mainEntityOfPage: { '@id': `${pageUrl}` }, @@ -86,7 +86,7 @@ const CV: NextPageWithLayout = () => { defaultMessage: "{name}'s CV", description: 'CVPage: page title', }, - { name: config.name } + { name: settings.name } ); return ( diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 41a4603..0fe1a4f 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -2,10 +2,10 @@ import FeedIcon from '@assets/images/icon-feed.svg'; import { ButtonLink } from '@components/Buttons'; import { ContactIcon } from '@components/Icons'; import Layout from '@components/Layouts/Layout'; -import { config } from '@config/website'; import HomePageContent from '@content/pages/homepage.mdx'; import styles from '@styles/pages/Home.module.scss'; import { NextPageWithLayout } from '@ts/types/app'; +import { settings } from '@utils/config'; import { loadTranslation } from '@utils/helpers/i18n'; import { GetStaticProps, GetStaticPropsContext } from 'next'; import Head from 'next/head'; @@ -122,7 +122,7 @@ const Home: NextPageWithLayout = () => { defaultMessage: '{websiteName} | Front-end developer: WordPress/React', description: 'HomePage: SEO - Page title', }, - { websiteName: config.name } + { websiteName: settings.name } ); const pageDescription = intl.formatMessage( { @@ -130,22 +130,22 @@ const Home: NextPageWithLayout = () => { '{websiteName} is a front-end developer located in France. He codes and he writes mostly about web development and open-source.', description: 'HomePage: SEO - Meta description', }, - { websiteName: config.name } + { websiteName: settings.name } ); const webpageSchema: WebPage = { - '@id': `${config.url}/#home`, + '@id': `${settings.url}/#home`, '@type': 'WebPage', - breadcrumb: { '@id': `${config.url}/#breadcrumb` }, + breadcrumb: { '@id': `${settings.url}/#breadcrumb` }, name: pageTitle, description: pageDescription, - author: { '@id': `${config.url}/#branding` }, - creator: { '@id': `${config.url}/#branding` }, - editor: { '@id': `${config.url}/#branding` }, - inLanguage: config.locales.defaultLocale, + author: { '@id': `${settings.url}/#branding` }, + creator: { '@id': `${settings.url}/#branding` }, + editor: { '@id': `${settings.url}/#branding` }, + inLanguage: settings.locales.defaultLocale, license: 'https://creativecommons.org/licenses/by-sa/4.0/deed.fr', - reviewedBy: { '@id': `${config.url}/#branding` }, - url: `${config.url}`, + reviewedBy: { '@id': `${settings.url}/#branding` }, + url: `${settings.url}`, }; const schemaJsonLd: Graph = { @@ -159,7 +159,7 @@ const Home: NextPageWithLayout = () => { {pageTitle} - +