Merge pull request #113 from Matheusdoe-dev/dev

feat: Seo improvement
This commit was merged in pull request #113.
This commit is contained in:
Kurt Hutten
2020-11-19 07:07:30 +11:00
committed by GitHub
28 changed files with 136 additions and 3 deletions

View File

@@ -31,6 +31,7 @@
"react": "^16.13.1",
"react-dom": "^16.13.1",
"react-dropzone": "^11.2.1",
"react-helmet": "^6.1.0",
"react-image-crop": "^8.6.6",
"rich-markdown-editor": "^11.0.2",
"styled-components": "^5.2.0",

View File

@@ -0,0 +1,23 @@
import { Helmet } from 'react-helmet'
const Seo = ({ title, description, lang }) => {
return (
<>
<Helmet
htmlAttributes={{
lang,
}}
title={title}
titleTemplate={`Cadhub - ${title}`}
>
<meta property="og:locale" content={lang} />
<meta property="og:title" content={title} />
<meta property="og:description" content={description} />
<meta name="description" content={description} />
<title>Cadhub - {title}</title>
</Helmet>
</>
)
}
export default Seo

View File

@@ -3,8 +3,10 @@
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>CadHub</title> <!-- to be replaced by react helmet -->
<meta name="keywords" content="cadhub, app, application, web application, cad, code, code-cad, cad-modeling, community, website, cascade studio, openscad" />
<meta property="og:type" content="website" />
<meta name="robots" content="index, follow" />
<title><%= htmlWebpackPlugin.options.title %></title>
<script>
// Install Cascade Studio as a Progressive Web App for Offline Access
// This needs to be put before ANY HTTP Requests are made, so it can cache them.

View File

@@ -1,9 +1,12 @@
import MainLayout from 'src/layouts/MainLayout'
import CommentCell from 'src/components/CommentCell'
import Seo from 'src/components/Seo/Seo'
const CommentPage = ({ id }) => {
return (
<MainLayout>
<Seo title="Comment" description="Comment page" lang="en-US" />
<CommentCell id={id} />
</MainLayout>
)

View File

@@ -1,9 +1,12 @@
import MainLayout from 'src/layouts/MainLayout'
import CommentsCell from 'src/components/CommentsCell'
import Seo from 'src/components/Seo/Seo'
const CommentsPage = () => {
return (
<MainLayout>
<Seo title="Comments" description="Comments page" lang="en-US" />
<CommentsCell />
</MainLayout>
)

View File

@@ -1,9 +1,12 @@
import MainLayout from 'src/layouts/MainLayout'
import EditCommentCell from 'src/components/EditCommentCell'
import Seo from 'src/components/Seo/Seo'
const EditCommentPage = ({ id }) => {
return (
<MainLayout>
<Seo title="Edit comment" description="Edit comment page" lang="en-US" />
<EditCommentCell id={id} />
</MainLayout>
)

View File

@@ -2,11 +2,14 @@ import { useAuth } from '@redwoodjs/auth'
import MainLayout from 'src/layouts/MainLayout'
import Part2Cell from 'src/components/Part2Cell'
import Seo from 'src/components/Seo/Seo'
const EditPart2Page = ({ userName, partTitle }) => {
const { currentUser } = useAuth()
return (
<MainLayout>
<Seo title={partTitle} description="Edit part page" lang="en-US" />
<Part2Cell
userName={userName}
partTitle={partTitle}

View File

@@ -1,9 +1,12 @@
import MainLayout from 'src/layouts/MainLayout'
import EditPartCell from 'src/components/EditPartCell'
import Seo from 'src/components/Seo/Seo'
const EditPartPage = ({ id }) => {
return (
<MainLayout>
<Seo title="Edit part" description="Edit part page" lang="en-US" />
<EditPartCell id={id} />
</MainLayout>
)

View File

@@ -1,9 +1,16 @@
import MainLayout from 'src/layouts/MainLayout'
import EditPartReactionCell from 'src/components/EditPartReactionCell'
import Seo from 'src/components/Seo/Seo'
const EditPartReactionPage = ({ id }) => {
return (
<MainLayout>
<Seo
title="Edit part reaction"
description="Edit part reaction page"
lang="en-US"
/>
<EditPartReactionCell id={id} />
</MainLayout>
)

View File

@@ -1,9 +1,12 @@
import MainLayout from 'src/layouts/MainLayout'
import EditUser2Cell from 'src/components/EditUser2Cell'
import Seo from 'src/components/Seo/Seo'
const UserPage = ({ userName }) => {
return (
<MainLayout>
<Seo title={userName} description="Add new part page" lang="en-US" />
<EditUser2Cell userName={userName} />
</MainLayout>
)

View File

@@ -1,9 +1,12 @@
import MainLayout from 'src/layouts/MainLayout'
import EditUserCell from 'src/components/EditUserCell'
import Seo from 'src/components/Seo/Seo'
const EditUserPage = ({ id }) => {
return (
<MainLayout>
<Seo title="Edit user" description="Edit user page" lang="en-US" />
<EditUserCell id={id} />
</MainLayout>
)

View File

@@ -6,9 +6,12 @@
// avoid the possibility that it will cause its own error. If it does, Redwood will
// still render a generic error page, but your users will prefer something a bit more
// thoughtful. =)
import Seo from 'src/components/Seo/Seo'
export default () => (
<main>
<Seo title="Fatal error" description="Fatal error" lang="en-US" />
<style
dangerouslySetInnerHTML={{
__html: `

View File

@@ -1,9 +1,12 @@
import MainLayout from 'src/layouts/MainLayout'
import IdePartCell from 'src/components/IdePartCell'
import Seo from 'src/components/Seo/Seo'
const IdePartPage = ({ userName, partTitle }) => {
return (
<MainLayout>
<Seo title={partTitle} description={partTitle} lang="en-US" />
<IdePartCell userName={userName} partTitle={partTitle} />
</MainLayout>
)

View File

@@ -1,9 +1,16 @@
import MainLayout from 'src/layouts/MainLayout'
import NewComment from 'src/components/NewComment'
import Seo from 'src/components/Seo/Seo'
const NewCommentPage = () => {
return (
<MainLayout>
<Seo
title="New comment page"
description="New comment page"
lang="en-US"
/>
<NewComment />
</MainLayout>
)

View File

@@ -4,6 +4,7 @@ import { navigate, routes } from '@redwoodjs/router'
import MainLayout from 'src/layouts/MainLayout'
import Part2Cell from 'src/components/Part2Cell'
import Seo from 'src/components/Seo/Seo'
const NewPart2Page = ({ userName }) => {
const { isAuthenticated, currentUser } = useAuth()
@@ -12,6 +13,8 @@ const NewPart2Page = ({ userName }) => {
}, [currentUser])
return (
<MainLayout>
<Seo title="New part" description="Add new part page" lang="en-US" />
<Part2Cell
userName={userName}
currentUserId={currentUser?.sub}

View File

@@ -1,9 +1,12 @@
import MainLayout from 'src/layouts/MainLayout'
import NewPart from 'src/components/NewPart'
import Seo from 'src/components/Seo/Seo'
const NewPartPage = () => {
return (
<MainLayout>
<Seo title="New Part" description="New part page" lang="en-US" />
<NewPart />
</MainLayout>
)

View File

@@ -1,9 +1,16 @@
import MainLayout from 'src/layouts/MainLayout'
import NewPartReaction from 'src/components/NewPartReaction'
import Seo from 'src/components/Seo/Seo'
const NewPartReactionPage = () => {
return (
<MainLayout>
<Seo
title="New part reaction"
description="New part reaction page"
lang="en-US"
/>
<NewPartReaction />
</MainLayout>
)

View File

@@ -1,9 +1,12 @@
import MainLayout from 'src/layouts/MainLayout'
import NewUser from 'src/components/NewUser'
import Seo from 'src/components/Seo/Seo'
const NewUserPage = () => {
return (
<MainLayout>
<Seo title="New user" description="New user page" lang="en-US" />
<NewUser />
</MainLayout>
)

View File

@@ -1,7 +1,10 @@
import MainLayout from 'src/layouts/MainLayout'
import Seo from 'src/components/Seo/Seo'
export default () => (
<MainLayout>
<Seo title="Page not found" description="404 page not found" lang="en-US" />
<style
dangerouslySetInnerHTML={{
__html: `

View File

@@ -2,11 +2,14 @@ import { useAuth } from '@redwoodjs/auth'
import MainLayout from 'src/layouts/MainLayout'
import Part2Cell from 'src/components/Part2Cell'
import Seo from 'src/components/Seo/Seo'
const Part2Page = ({ userName, partTitle }) => {
const { currentUser } = useAuth()
return (
<MainLayout>
<Seo title={partTitle} description={partTitle} lang="en-US" />
<Part2Cell
userName={userName}
partTitle={partTitle}

View File

@@ -1,9 +1,12 @@
import MainLayout from 'src/layouts/MainLayout'
import PartCell from 'src/components/PartCell'
import Seo from 'src/components/Seo/Seo'
const PartPage = ({ id }) => {
return (
<MainLayout>
<Seo title="Part" description="Part page" lang="en-US" />
<PartCell id={id} />
</MainLayout>
)

View File

@@ -1,9 +1,16 @@
import MainLayout from 'src/layouts/MainLayout'
import PartReactionCell from 'src/components/PartReactionCell'
import Seo from 'src/components/Seo/Seo'
const PartReactionPage = ({ id }) => {
return (
<MainLayout>
<Seo
title="Part reaction"
description="Part reaction page"
lang="en-US"
/>
<PartReactionCell id={id} />
</MainLayout>
)

View File

@@ -1,9 +1,16 @@
import MainLayout from 'src/layouts/MainLayout'
import PartReactionsCell from 'src/components/PartReactionsCell'
import Seo from 'src/components/Seo/Seo'
const PartReactionsPage = () => {
return (
<MainLayout>
<Seo
title="Part reactions"
description="Part reactions page"
lang="en-US"
/>
<PartReactionsCell />
</MainLayout>
)

View File

@@ -1,9 +1,12 @@
import MainLayout from 'src/layouts/MainLayout'
import PartsCell from 'src/components/PartsCell'
import Seo from 'src/components/Seo/Seo'
const PartsPage = () => {
return (
<MainLayout>
<Seo title="Parts page" description="Cadhub parts page" lang="en-US" />
<PartsCell />
</MainLayout>
)

View File

@@ -1,9 +1,12 @@
import MainLayout from 'src/layouts/MainLayout'
import User2Cell from 'src/components/User2Cell'
import Seo from 'src/components/Seo/Seo'
const UserPage = ({ userName }) => {
return (
<MainLayout>
<Seo title={userName} description="User page" lang="en-US" />
<User2Cell userName={userName} />
</MainLayout>
)

View File

@@ -1,9 +1,12 @@
import MainLayout from 'src/layouts/MainLayout'
import UserCell from 'src/components/UserCell'
import Seo from 'src/components/Seo/Seo'
const UserPage = ({ id }) => {
return (
<MainLayout>
<Seo title="User" description="User page" lang="en-US" />
<UserCell id={id} />
</MainLayout>
)

View File

@@ -1,9 +1,12 @@
import MainLayout from 'src/layouts/MainLayout'
import UsersCell from 'src/components/UsersCell'
import Seo from 'src/components/Seo/Seo'
const UsersPage = () => {
return (
<MainLayout>
<Seo title="Users" description="Users page" lang="en-US" />
<UsersCell />
</MainLayout>
)

View File

@@ -13155,7 +13155,7 @@ react-error-overlay@^6.0.1, react-error-overlay@^6.0.3:
resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.7.tgz#1dcfb459ab671d53f660a991513cb2f0a0553108"
integrity sha512-TAv1KJFh3RhqxNvhzxj6LeT5NWklP6rDr2a0jaTfsZ5wSZWHOGeqQyejUp3xxLfPt2UpyJEcVQB/zyPcmonNFA==
react-fast-compare@^3.0.1:
react-fast-compare@^3.0.1, react-fast-compare@^3.1.1:
version "3.2.0"
resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb"
integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==
@@ -13183,6 +13183,16 @@ react-helmet-async@^1.0.2:
react-fast-compare "^3.0.1"
shallowequal "^1.1.0"
react-helmet@^6.1.0:
version "6.1.0"
resolved "https://registry.yarnpkg.com/react-helmet/-/react-helmet-6.1.0.tgz#a750d5165cb13cf213e44747502652e794468726"
integrity sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==
dependencies:
object-assign "^4.1.1"
prop-types "^15.7.2"
react-fast-compare "^3.1.1"
react-side-effect "^2.1.0"
react-hook-form@^6.5.3:
version "6.7.1"
resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-6.7.1.tgz#58f1ce3ba6b0f3cb05b665a4cc268d0623ea9e1a"
@@ -13247,6 +13257,11 @@ react-portal@^4.2.1:
dependencies:
prop-types "^15.5.8"
react-side-effect@^2.1.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/react-side-effect/-/react-side-effect-2.1.1.tgz#66c5701c3e7560ab4822a4ee2742dee215d72eb3"
integrity sha512-2FoTQzRNTncBVtnzxFOk2mCpcfxQpenBMbk5kSVBg5UcPqV9fRbgY2zhb7GTWWOlpFmAxhClBDlIq8Rsubz1yQ==
react-sizeme@^2.6.7:
version "2.6.12"
resolved "https://registry.yarnpkg.com/react-sizeme/-/react-sizeme-2.6.12.tgz#ed207be5476f4a85bf364e92042520499455453e"