From 0a6a12cacbb8b2d1af71c8eb0cbdd320642cd59b Mon Sep 17 00:00:00 2001 From: Johannes Date: Wed, 12 Apr 2023 14:34:19 +0200 Subject: [PATCH] SEO Health + descriptions --- .../formbricks-com/components/docs/Layout.tsx | 23 ++++++++------- .../components/shared/Footer.tsx | 17 +---------- apps/formbricks-com/next.config.mjs | 28 +++++++++---------- .../snoopforms-becomes-formbricks/index.mdx | 4 +-- .../pages/docs/api/api-key-setup/index.mdx | 17 ++++++----- .../pages/docs/api/create-response/index.mdx | 1 + .../pages/docs/api/overview/index.mdx | 2 ++ .../pages/docs/api/update-response/index.mdx | 1 + .../attributes/custom-attributes/index.mdx | 2 ++ .../docs/attributes/identify-users/index.mdx | 2 ++ .../pages/docs/attributes/why/index.mdx | 2 ++ .../pages/docs/events/code/index.mdx | 2 ++ .../pages/docs/events/no-code/index.mdx | 10 ++++--- .../pages/docs/events/why/index.mdx | 2 ++ .../docs/getting-started/nextjs/index.mdx | 1 + .../docs/getting-started/quickstart/index.mdx | 2 ++ .../docs/getting-started/vuejs/index.mdx | 2 ++ .../docs/introduction/how-it-works/index.mdx | 2 ++ .../introduction/what-is-formbricks/index.mdx | 2 ++ .../introduction/why-is-it-better/index.mdx | 2 ++ .../docs/self-hosting/deployment/index.mdx | 2 ++ apps/formbricks-com/pages/vs-formspree.mdx | 2 +- 22 files changed, 74 insertions(+), 54 deletions(-) diff --git a/apps/formbricks-com/components/docs/Layout.tsx b/apps/formbricks-com/components/docs/Layout.tsx index 8612686c35..829dd28ac8 100644 --- a/apps/formbricks-com/components/docs/Layout.tsx +++ b/apps/formbricks-com/components/docs/Layout.tsx @@ -1,8 +1,4 @@ -import { useCallback, useEffect, useState } from "react"; -import Link from "next/link"; -import { useRouter } from "next/router"; -import clsx from "clsx"; -import { FooterLogo, Logomark } from "@/components/shared/Logo"; +import { FooterLogo } from "@/components/shared/Logo"; import { MobileNavigation } from "@/components/shared/MobileNavigation"; import { Navigation } from "@/components/shared/Navigation"; import { Prose } from "@/components/shared/Prose"; @@ -10,6 +6,10 @@ import { Search } from "@/components/shared/Search"; import { ThemeSelector } from "@/components/shared/ThemeSelector"; import navigation from "@/lib/docsNavigation"; import { Button } from "@formbricks/ui"; +import clsx from "clsx"; +import Link from "next/link"; +import { useRouter } from "next/router"; +import { useEffect, useState } from "react"; import MetaInformation from "../shared/MetaInformation"; function GitHubIcon(props: any) { @@ -78,6 +78,7 @@ interface LayoutProps { children: React.ReactNode; meta: { title: string; + description?: string; }; } @@ -93,21 +94,23 @@ export function Layout({ children, meta }: LayoutProps) { return ( <>
-
-
+
+
-
+
{(meta.title || section) && (
diff --git a/apps/formbricks-com/components/shared/Footer.tsx b/apps/formbricks-com/components/shared/Footer.tsx index 45fbafa301..8dd73d9821 100644 --- a/apps/formbricks-com/components/shared/Footer.tsx +++ b/apps/formbricks-com/components/shared/Footer.tsx @@ -3,21 +3,6 @@ import clsx from "clsx"; import { FooterLogo } from "./Logo"; const navigation = { - /* creation: [ - { name: "React Form Builder", href: "/react-form-library", status: true }, - { name: "No-Code Builder", href: "/visual-builder", status: false }, - { name: "Templates", href: "#", status: false }, - ], - pipelines: [ - { name: "Core API", href: "/core-api", status: true }, - { name: "Webhooks", href: "/webhooks", status: true }, - { name: "Email", href: "/email", status: true }, - { name: "Integrations", href: "#", status: false }, - ], - insights: [ - { name: "Formbricks HQ", href: "/formbricks-hq", status: true }, - { name: "Reports", href: "#", status: false }, - ], */ other: [ { name: "Community", href: "/community", status: true }, { name: "Blog", href: "/blog", status: true }, @@ -58,7 +43,7 @@ export default function Footer() { -
+
Formbricks diff --git a/apps/formbricks-com/next.config.mjs b/apps/formbricks-com/next.config.mjs index c684d77544..70403a9607 100644 --- a/apps/formbricks-com/next.config.mjs +++ b/apps/formbricks-com/next.config.mjs @@ -12,57 +12,57 @@ const nextConfig = { { source: "/discord", destination: "https://discord.gg/3YFcABF2Ts", - permanent: false, + permanent: true, }, { source: "/roadmap", destination: "https://github.com/orgs/formbricks/projects/1", - permanent: false, + permanent: true, }, { source: "/github", destination: "https://github.com/formbricks/formbricks", - permanent: false, + permanent: true, }, { source: "/privacy", destination: "/privacy-policy", - permanent: false, + permanent: true, }, { source: "/form-hq", - destination: "/formbricks-hq", - permanent: false, + destination: "/", + permanent: true, }, { source: "/docs", destination: "/docs/introduction/what-is-formbricks", - permanent: false, + permanent: true, }, { source: "/docs/formbricks-hq/self-hosting", destination: "/docs", - permanent: false, + permanent: true, }, { source: "/docs/react-form-library/getting-started", destination: "/docs", - permanent: false, + permanent: true, }, { source: "/docs/react-form-library/work-with-components", destination: "/docs", - permanent: false, + permanent: true, }, { source: "/docs/react-form-library/introduction", destination: "/docs", - permanent: false, + permanent: true, }, { source: "/docs/formbricks-hq/schema", destination: "/docs", - permanent: false, + permanent: true, }, { source: "/demo", @@ -72,12 +72,12 @@ const nextConfig = { { source: "/pmf", destination: "/", - permanent: false, + permanent: true, }, { source: "/signup", destination: "/auth/signup", - permanent: false, + permanent: true, }, ]; }, diff --git a/apps/formbricks-com/pages/blog/snoopforms-becomes-formbricks/index.mdx b/apps/formbricks-com/pages/blog/snoopforms-becomes-formbricks/index.mdx index 60960bcd80..0e1e567a9f 100644 --- a/apps/formbricks-com/pages/blog/snoopforms-becomes-formbricks/index.mdx +++ b/apps/formbricks-com/pages/blog/snoopforms-becomes-formbricks/index.mdx @@ -94,8 +94,8 @@ The first step is building the React Form Builder into a full-fledged product. W Alongside the React Form Builder we'll redesign our Core API. You'll be able to: -- Send any form to our API endpoint to view and manage submissions on [formbricks.com](/formbricks-hq) -- Forward your data however you like: [Email](/email), [webhooks](/webhooks), 3rd party integrations +- Send any form to our API endpoint to view and manage submissions on [formbricks.com](https://app.formbricks.com) +- Forward your data however you like: Email, Webhooks, 3rd party integrations Please [join our Discord](https://discord.com/invite/3YFcABF2Ts) to provide feedback on what's important to you! diff --git a/apps/formbricks-com/pages/docs/api/api-key-setup/index.mdx b/apps/formbricks-com/pages/docs/api/api-key-setup/index.mdx index 8eec728256..18f6e74d4f 100644 --- a/apps/formbricks-com/pages/docs/api/api-key-setup/index.mdx +++ b/apps/formbricks-com/pages/docs/api/api-key-setup/index.mdx @@ -5,6 +5,8 @@ import { Callout } from "@/components/shared/Callout"; export const meta = { title: "API Key Setup", + description: + "Generate, store, and delete personal API keys for secure Formbricks access. Ensure safekeeping to prevent unauthorized account control.", }; ## Auth: Personal API key @@ -13,10 +15,10 @@ The API requests are authorized with a personal API key. This API key gives you ### How to generate an API key -1. Go to your profile at [app.formbricks.com](https://app.formbricks.com/app/me/settings). -2. Select “Add key”. -3. Label it (this is just for you). -4. Copy the key. You won’t be able to see it again. +1. Go to your settings on [app.formbricks.com](https://app.formbricks.com/app/me/settings). +2. Go to page “API keys”. +3. Create a key for the development or production environment. +4. Copy the key immediately. You won’t be able to see it again. Anyone who has your API key has full control over your account. For security reasons, you cannot view the @@ -25,8 +27,9 @@ The API requests are authorized with a personal API key. This API key gives you ### Delete a personal API key -1. Go to your profile at [app.formbricks.com](https://app.formbricks.com/app/me/settings). -2. Find the key you wish to revoke and select “Delete”. -3. Your API key will stop working immediately. +1. Go to settings on [app.formbricks.com](https://app.formbricks.com/app/me/settings). +2. Go to page “API keys”. +3. Find the key you wish to revoke and select “Delete”. +4. Your API key will stop working immediately. export default ({ children }) => {children}; diff --git a/apps/formbricks-com/pages/docs/api/create-response/index.mdx b/apps/formbricks-com/pages/docs/api/create-response/index.mdx index 592a611ebd..63baf18567 100644 --- a/apps/formbricks-com/pages/docs/api/create-response/index.mdx +++ b/apps/formbricks-com/pages/docs/api/create-response/index.mdx @@ -4,6 +4,7 @@ import { APILayout } from "@/components/shared/APILayout.tsx"; export const meta = { title: "API: Create response", + description: "Learn how to create a new response to a survey via API.", }; {children}; diff --git a/apps/formbricks-com/pages/docs/events/why/index.mdx b/apps/formbricks-com/pages/docs/events/why/index.mdx index b2343909ee..99895419d6 100644 --- a/apps/formbricks-com/pages/docs/events/why/index.mdx +++ b/apps/formbricks-com/pages/docs/events/why/index.mdx @@ -2,6 +2,8 @@ import { Layout } from "@/components/docs/Layout"; export const meta = { title: "What are events and why are they useful?", + description: + "Events in Formbricks enable targeted survey displays during specific user journey moments. Enhance user segmentation by tracking events for granular surveying.", }; You want to understand what your users think and feel during specific moments in the user journey. To be able to ask at exactly the right point in time, you need events. diff --git a/apps/formbricks-com/pages/docs/getting-started/nextjs/index.mdx b/apps/formbricks-com/pages/docs/getting-started/nextjs/index.mdx index 46e5769477..feab5c661c 100644 --- a/apps/formbricks-com/pages/docs/getting-started/nextjs/index.mdx +++ b/apps/formbricks-com/pages/docs/getting-started/nextjs/index.mdx @@ -2,6 +2,7 @@ import { Layout } from "@/components/docs/Layout"; export const meta = { title: "Setting up Formbricks SDK with Next.js", + description: "Integrate Formbricks SDK into your Next.js app for seamless in-product micro-surveys. Follow our step-by-step guide to enhance user feedback and product experience.", }; This guide will walk you through the process of integrating the Formbricks SDK into a Next.js application. As the Formbricks SDK only works on the client side, it's essential to ensure proper integration to avoid any issues. diff --git a/apps/formbricks-com/pages/docs/getting-started/quickstart/index.mdx b/apps/formbricks-com/pages/docs/getting-started/quickstart/index.mdx index d50f2aa1d2..79ad57cba9 100644 --- a/apps/formbricks-com/pages/docs/getting-started/quickstart/index.mdx +++ b/apps/formbricks-com/pages/docs/getting-started/quickstart/index.mdx @@ -2,6 +2,8 @@ import { Layout } from "@/components/docs/Layout"; export const meta = { title: "Quickstart", + description: + "Get started with Formbricks: Choose self-hosted or cloud, create an account, and follow our quickstart guide to set up in-product micro-surveys with ease.", }; Welcome to Formbricks! In this quickstart guide, we'll walk you through the initial steps to get up and running with our in-product micro-surveys. Choose between self-hosted and cloud options, create an account, and set up the JavaScript widget. Let's dive in! diff --git a/apps/formbricks-com/pages/docs/getting-started/vuejs/index.mdx b/apps/formbricks-com/pages/docs/getting-started/vuejs/index.mdx index 7d95477368..73d7130b24 100644 --- a/apps/formbricks-com/pages/docs/getting-started/vuejs/index.mdx +++ b/apps/formbricks-com/pages/docs/getting-started/vuejs/index.mdx @@ -2,6 +2,8 @@ import { Layout } from "@/components/docs/Layout"; export const meta = { title: "Setting up Formbricks SDK with Vue.js", + description: + "Easily integrate Formbricks SDK into your Vue.js app with our guide. Enhance user feedback and improve product experience with customizable in-product micro-surveys.", }; In this guide, we will go through the steps to set up the Formbricks SDK in a Vue.js application. This will allow you to create and customize in-product micro-surveys to gather valuable feedback from your users and improve your product experience. diff --git a/apps/formbricks-com/pages/docs/introduction/how-it-works/index.mdx b/apps/formbricks-com/pages/docs/introduction/how-it-works/index.mdx index 942fc7834a..a64eb8c20f 100644 --- a/apps/formbricks-com/pages/docs/introduction/how-it-works/index.mdx +++ b/apps/formbricks-com/pages/docs/introduction/how-it-works/index.mdx @@ -3,6 +3,8 @@ import { Fence } from "@/components/shared/Fence"; export const meta = { title: "How Formbricks works", + description: + "Master in-product micro-surveys with Formbricks: user-friendly form builder, precise targeting, seamless integration, and insightful analytics for SaaS products.", }; Formbricks is a powerful platform designed to help you create and manage in-product micro-surveys for SaaS and digital products. Here is an overview: diff --git a/apps/formbricks-com/pages/docs/introduction/what-is-formbricks/index.mdx b/apps/formbricks-com/pages/docs/introduction/what-is-formbricks/index.mdx index 2f79c02737..4db8c7be58 100644 --- a/apps/formbricks-com/pages/docs/introduction/what-is-formbricks/index.mdx +++ b/apps/formbricks-com/pages/docs/introduction/what-is-formbricks/index.mdx @@ -3,6 +3,8 @@ import { Fence } from "@/components/shared/Fence"; export const meta = { title: "What is Formbricks?", + description: + "Supercharge your SaaS with Formbricks: in-product micro-surveys, seamless integration, powerful analytics, and open-source control. Elevate your user experience today!", }; Welcome to Formbricks, your go-to solution for in-product micro-surveys that will supercharge your product experience! 🚀 diff --git a/apps/formbricks-com/pages/docs/introduction/why-is-it-better/index.mdx b/apps/formbricks-com/pages/docs/introduction/why-is-it-better/index.mdx index 7cfc51d4e3..93a6d13295 100644 --- a/apps/formbricks-com/pages/docs/introduction/why-is-it-better/index.mdx +++ b/apps/formbricks-com/pages/docs/introduction/why-is-it-better/index.mdx @@ -3,6 +3,8 @@ import { Fence } from "@/components/shared/Fence"; export const meta = { title: "Why is Formbricks better?", + description: + "The ultimate survey solution for SaaS, offering in-depth micro-surveys, precise targeting, and seamless integrations. Discover the difference today!", }; Formbricks outshines other survey tools by specializing in in-product micro-surveys for SaaS and digital products. With Formbricks, you're better equipped to understand user behavior, improve your product, and make data-driven decisions. Let's see how Formbricks compares to generic survey tools. diff --git a/apps/formbricks-com/pages/docs/self-hosting/deployment/index.mdx b/apps/formbricks-com/pages/docs/self-hosting/deployment/index.mdx index d3a000f5c5..0ee39181a0 100644 --- a/apps/formbricks-com/pages/docs/self-hosting/deployment/index.mdx +++ b/apps/formbricks-com/pages/docs/self-hosting/deployment/index.mdx @@ -4,6 +4,8 @@ import { Callout } from "@/components/shared/Callout"; export const meta = { title: "Deploying Formbricks to production", + description: + "Utilize Docker-Compose for easy deployment on your machine. Clone the repo, configure settings, and build the image to access the app on localhost.", }; diff --git a/apps/formbricks-com/pages/vs-formspree.mdx b/apps/formbricks-com/pages/vs-formspree.mdx index dbc44a94b3..9e6e8f8897 100644 --- a/apps/formbricks-com/pages/vs-formspree.mdx +++ b/apps/formbricks-com/pages/vs-formspree.mdx @@ -25,7 +25,7 @@ A form or survey always consists of two parts: The form facing your respondents ### Backend-as-a-Service for forms and surveys -Our [React Form Builder](/react-form-library) makes it super easy to build custom forms rapidly with. Today, we’ll talk about how the Formbricks [Core API](/core-api) + [Formbricks HQ](/formbricks-hq) completely eliminate the need to setup your own backend to receive, manage and analyze submissions from forms and surveys. +Our [React Form Builder](/react-form-library) makes it super easy to build custom forms rapidly with. Today, we’ll talk about how the [Formbricks Cloud](https://app.formbricks.com). ### How to receive form responses without a backend