From 8a5217b39cecbc40d424507ce554de917f441ecd Mon Sep 17 00:00:00 2001 From: Johannes Date: Sat, 22 Jul 2023 13:26:33 +0200 Subject: [PATCH 1/4] OSS Api --- apps/formbricks-com/pages/oss-friends.tsx | 107 ++-------------------- 1 file changed, 9 insertions(+), 98 deletions(-) diff --git a/apps/formbricks-com/pages/oss-friends.tsx b/apps/formbricks-com/pages/oss-friends.tsx index fb1521b075..5e3d284d6a 100644 --- a/apps/formbricks-com/pages/oss-friends.tsx +++ b/apps/formbricks-com/pages/oss-friends.tsx @@ -1,106 +1,17 @@ import Layout from "@/components/shared/Layout"; import HeroTitle from "@/components/shared/HeroTitle"; import { Button } from "@formbricks/ui"; - -export const OSSFriends = [ - { - name: "BoxyHQ", - description: - "BoxyHQ’s suite of APIs for security and privacy helps engineering teams build and ship compliant cloud applications faster.", - href: "https://boxyhq.com", - }, - { - name: "Cal.com", - description: - "Cal.com is a scheduling tool that helps you schedule meetings without the back-and-forth emails.", - href: "https://cal.com", - }, - { - name: "Crowd.dev", - description: - "Centralize community, product, and customer data to understand which companies are engaging with your open source project.", - href: "https://www.crowd.dev", - }, - { - name: "Documenso", - description: - "The Open-Source DocuSign Alternative. We aim to earn your trust by enabling you to self-host the platform and examine its inner workings.", - href: "https://documenso.com", - }, - { - name: "Erxes", - description: - "The Open-Source HubSpot Alternative. A single XOS enables to create unique and life-changing experiences ​​that work for all types of business.", - href: "https://erxes.io", - }, - { - name: "Formbricks", - description: - "Survey granular user segments at any point in the user journey. Gather up to 6x more insights with targeted micro-surveys. All open-source.", - href: "https://formbricks.com", - }, - { - name: "GitWonk", - description: - "GitWonk is an open-source technical documentation tool, designed and built focusing on the developer experience.", - href: "https://gitwonk.com", - }, - { - name: "Hanko", - description: - "Open-source authentication and user management for the passkey era. Integrated in minutes, for web and mobile apps.", - href: "https://www.hanko.io", - }, - { - name: "HTMX", - description: - "HTMX is a dependency-free JavaScript library that allows you to access AJAX, CSS Transitions, WebSockets, and Server Sent Events directly in HTML.", - href: "https://htmx.org", - }, - { - name: "Infisical", - description: - "Open source, end-to-end encrypted platform that lets you securely manage secrets and configs across your team, devices, and infrastructure.", - href: "https://infisical.com", - }, - { - name: "Novu", - description: - "The open-source notification infrastructure for developers. Simple components and APIs for managing all communication channels in one place.", - href: "https://novu.co", - }, - { - name: "OpenBB", - description: - "Democratizing investment research through an open source financial ecosystem. The OpenBB Terminal allows everyone to perform investment research, from everywhere.", - href: "https://openbb.co", - }, - { - name: "Sniffnet", - description: - "Sniffnet is a network monitoring tool to help you easily keep track of your Internet traffic.", - href: "https://www.sniffnet.net", - }, - { - name: "Typebot", - description: - "Typebot gives you powerful blocks to create unique chat experiences. Embed them anywhere on your apps and start collecting results like magic.", - href: "https://typebot.io", - }, - { - name: "Webiny", - description: - "Open-source enterprise-grade serverless CMS. Own your data. Scale effortlessly. Customize everything.", - href: "https://www.webiny.com", - }, - { - name: "Webstudio", - description: "Webstudio is an open source alternative to Webflow", - href: "https://webstudio.is", - }, -]; +import { useEffect, useState } from "react"; export default function OSSFriendsPage() { + const [OSSFriends, setOSSFriends] = useState([]); + + useEffect(() => { + fetch("https://formbricks.com/api/oss-friends") + .then((response) => response.json()) + .then((data) => setOSSFriends(data)); + }, []); + return ( From 2f8257ae62890308aeff80042a66739b1815053b Mon Sep 17 00:00:00 2001 From: Johannes Date: Sat, 22 Jul 2023 13:41:15 +0200 Subject: [PATCH 2/4] added new members --- .../pages/api/oss-friends/index.ts | 122 +++++++++++++++++- 1 file changed, 120 insertions(+), 2 deletions(-) diff --git a/apps/formbricks-com/pages/api/oss-friends/index.ts b/apps/formbricks-com/pages/api/oss-friends/index.ts index 581b701295..3ac8808fc9 100644 --- a/apps/formbricks-com/pages/api/oss-friends/index.ts +++ b/apps/formbricks-com/pages/api/oss-friends/index.ts @@ -1,10 +1,128 @@ -import { OSSFriends } from "@/pages/oss-friends"; import type { NextApiRequest, NextApiResponse } from "next"; export default async function handle(req: NextApiRequest, res: NextApiResponse) { // GET if (req.method === "GET") { - return res.status(200).json({ data: OSSFriends }); + return res.status(200).json({ + data: [ + { + name: "Appsmith", + description: "Build build custom software on top of your data.", + href: "https://www.appsmith.com", + }, + { + name: "BoxyHQ", + description: + "BoxyHQ’s suite of APIs for security and privacy helps engineering teams build and ship compliant cloud applications faster.", + href: "https://boxyhq.com", + }, + { + name: "Cal.com", + description: + "Cal.com is a scheduling tool that helps you schedule meetings without the back-and-forth emails.", + href: "https://cal.com", + }, + { + name: "Crowd.dev", + description: + "Centralize community, product, and customer data to understand which companies are engaging with your open source project.", + href: "https://www.crowd.dev", + }, + { + name: "Documenso", + description: + "The Open-Source DocuSign Alternative. We aim to earn your trust by enabling you to self-host the platform and examine its inner workings.", + href: "https://documenso.com", + }, + { + name: "Erxes", + description: + "The Open-Source HubSpot Alternative. A single XOS enables to create unique and life-changing experiences ​​that work for all types of business.", + href: "https://erxes.io", + }, + { + name: "Formbricks", + description: + "Survey granular user segments at any point in the user journey. Gather up to 6x more insights with targeted micro-surveys. All open-source.", + href: "https://formbricks.com", + }, + { + name: "GitWonk", + description: + "GitWonk is an open-source technical documentation tool, designed and built focusing on the developer experience.", + href: "https://gitwonk.com", + }, + { + name: "Hanko", + description: + "Open-source authentication and user management for the passkey era. Integrated in minutes, for web and mobile apps.", + href: "https://www.hanko.io", + }, + { + name: "HTMX", + description: + "HTMX is a dependency-free JavaScript library that allows you to access AJAX, CSS Transitions, WebSockets, and Server Sent Events directly in HTML.", + href: "https://htmx.org", + }, + { + name: "Infisical", + description: + "Open source, end-to-end encrypted platform that lets you securely manage secrets and configs across your team, devices, and infrastructure.", + href: "https://infisical.com", + }, + { + name: "Mockoon", + description: "Mockoon is the easiest and quickest way to design and run mock REST APIs.", + href: "https://mockoon.com", + }, + { + name: "Novu", + description: + "The open-source notification infrastructure for developers. Simple components and APIs for managing all communication channels in one place.", + href: "https://novu.co", + }, + { + name: "OpenBB", + description: + "Democratizing investment research through an open source financial ecosystem. The OpenBB Terminal allows everyone to perform investment research, from everywhere.", + href: "https://openbb.co", + }, + { + name: "Sniffnet", + description: + "Sniffnet is a network monitoring tool to help you easily keep track of your Internet traffic.", + href: "https://www.sniffnet.net", + }, + { + name: "Tolgee", + description: "Software localization from A to Z made really easy.", + href: "https://tolgee.io/", + }, + { + name: "Trigger.dev", + description: + "Create long-running Jobs directly in your codebase with features like API integrations, webhooks, scheduling and delays.", + href: "https://trigger.dev", + }, + { + name: "Typebot", + description: + "Typebot gives you powerful blocks to create unique chat experiences. Embed them anywhere on your apps and start collecting results like magic.", + href: "https://typebot.io", + }, + { + name: "Webiny", + description: + "Open-source enterprise-grade serverless CMS. Own your data. Scale effortlessly. Customize everything.", + href: "https://www.webiny.com", + }, + { + name: "Webstudio", + description: "Webstudio is an open source alternative to Webflow", + href: "https://webstudio.is", + }, + ], + }); } // Unknown HTTP Method From a5c33981a0e3a00fd57c8eac8f4aece65edfee83 Mon Sep 17 00:00:00 2001 From: Johannes Date: Wed, 2 Aug 2023 10:29:06 +0200 Subject: [PATCH 3/4] update pricing wording, add OSS friends API --- .../components/home/Features.tsx | 16 ++++++------ .../components/home/GitHubSponsorship.tsx | 2 +- .../components/shared/Footer.tsx | 2 +- .../components/shared/Pricing.tsx | 25 +++++++++++-------- apps/formbricks-com/pages/imprint.mdx | 11 +++++--- apps/formbricks-com/pages/oss-friends.tsx | 4 +-- 6 files changed, 34 insertions(+), 26 deletions(-) diff --git a/apps/formbricks-com/components/home/Features.tsx b/apps/formbricks-com/components/home/Features.tsx index 4ffb2ffa6a..6ef45f9657 100644 --- a/apps/formbricks-com/components/home/Features.tsx +++ b/apps/formbricks-com/components/home/Features.tsx @@ -2,18 +2,18 @@ import { CodeFileIcon, EyeIcon, HandPuzzleIcon } from "@formbricks/ui"; import HeadingCentered from "../shared/HeadingCentered"; const features = [ + { + id: "compliance", + name: "Smoothly Compliant", + description: "Use our GDPR-compliant Cloud or self-host the entire solution.", + icon: EyeIcon, + }, { id: "customizable", name: "Fully Customizable", description: "Full customizability and extendability. Integrate with your stack easily.", icon: HandPuzzleIcon, }, - { - id: "compliance", - name: "Smoothly Compliant", - description: "Self-host the entire product and fly through privacy compliance reviews.", - icon: EyeIcon, - }, { id: "independent", name: "Stay independent", @@ -27,9 +27,9 @@ export const Features: React.FC = () => {
    diff --git a/apps/formbricks-com/components/home/GitHubSponsorship.tsx b/apps/formbricks-com/components/home/GitHubSponsorship.tsx index e59ed548e9..a089c5b7dd 100644 --- a/apps/formbricks-com/components/home/GitHubSponsorship.tsx +++ b/apps/formbricks-com/components/home/GitHubSponsorship.tsx @@ -9,7 +9,7 @@ export const GitHubSponsorship: React.FC = () => { -
    +
    GitHub Sponsors Formbricks badgePrivacy-first Experience Management

    - © 2022. All rights reserved. + Formbricks GmbH © 2022. All rights reserved.
    Imprint | Privacy Policy |{" "} Terms | OSS Friends diff --git a/apps/formbricks-com/components/shared/Pricing.tsx b/apps/formbricks-com/components/shared/Pricing.tsx index db8869bfdd..dacb32dd4b 100644 --- a/apps/formbricks-com/components/shared/Pricing.tsx +++ b/apps/formbricks-com/components/shared/Pricing.tsx @@ -26,39 +26,39 @@ const tiers = [ href: "/docs/self-hosting/deployment", }, { - name: "Free", + name: "Cloud", href: "https://app.formbricks.com/auth/signup", priceMonthly: "$0", paymentRythm: "/month", button: "highlight", discounted: false, highlight: true, - description: "All Pro features included.", + description: "Start with the 'Free forever' plan.", features: [ "Unlimited surveys", - "Unlimited team members", - "Remove branding", - "Granular targeting", "In-product surveys", "Link surveys", + "Remove branding", + "Granular targeting", "30+ templates", "API access", - "Integrations (Slack, PostHog, Zapier)", + "Integrations (Zapier, Make, ...)", + "Unlimited team members", "100 responses per survey", ], - ctaName: "Start for free", + ctaName: "Get started", plausibleGoal: "Pricing_CTA_FreePlan", }, { - name: "Pro", + name: "Cloud Pro", href: "https://app.formbricks.com/auth/signup", priceMonthly: "$99", paymentRythm: "/month", button: "secondary", discounted: false, highlight: false, - description: "All features included. Unlimited usage.", - features: ["Unlimited responses per survey"], + description: "All features, unlimited usage.", + features: ["Everything in 'Cloud'", "Unlimited responses per survey"], ctaName: "Start for free", plausibleGoal: "Pricing_CTA_ProPlan", }, @@ -146,9 +146,12 @@ export default function Pricing() { {tier.ctaName} - {tier.name !== "Self-hosting" && ( + {tier.name == "Cloud Pro" && (

    No Creditcard required.

    )} + {tier.name == "Cloud" && ( +

    Free forever 🤍

    + )}
    ))} diff --git a/apps/formbricks-com/pages/imprint.mdx b/apps/formbricks-com/pages/imprint.mdx index 0557b392a1..ca9b590176 100644 --- a/apps/formbricks-com/pages/imprint.mdx +++ b/apps/formbricks-com/pages/imprint.mdx @@ -17,19 +17,24 @@ E-Mail: hola@formbricks.com ## EU dispute resolution -The European Commission provides a platform for online dispute resolution (OS): https://ec.europa.eu/consumers/odr.\ -You can find our e-mail address in the imprint above.\ -Consumer dispute resolution/universal dispute resolution body\ +The European Commission provides a platform for online dispute resolution (OS): https://ec.europa.eu/consumers/odr + +You can also reach out via the e-mail address in the imprint above. + +### Consumer dispute resolution/universal dispute resolution body + We are not willing or obliged to participate in dispute resolution proceedings before a consumer arbitration board. ## Liability for contents As a service provider, we are responsible for our own content on these pages in accordance with § 7 paragraph 1 TMG under the general laws. According to §§ 8 to 10 TMG, we are not obligated to monitor transmitted or stored information or to investigate circumstances that indicate illegal activity.\ + Obligations to remove or block the use of information under the general laws remain unaffected. However, liability in this regard is only possible from the point in time at which a concrete infringement of the law becomes known. If we become aware of any such infringements, we will remove the relevant content immediately. ## Liability for links Our offer contains links to external websites of third parties, on whose contents we have no influence. Therefore, we cannot assume any liability for these external contents. The respective provider or operator of the sites is always responsible for the content of the linked sites. The linked pages were checked for possible legal violations at the time of linking. Illegal contents were not recognizable at the time of linking.\ + However, a permanent control of the contents of the linked pages is not reasonable without concrete evidence of a violation of the law. If we become aware of any infringements, we will remove such links immediately. ## Copyright diff --git a/apps/formbricks-com/pages/oss-friends.tsx b/apps/formbricks-com/pages/oss-friends.tsx index 5e3d284d6a..9232636bb8 100644 --- a/apps/formbricks-com/pages/oss-friends.tsx +++ b/apps/formbricks-com/pages/oss-friends.tsx @@ -7,9 +7,9 @@ export default function OSSFriendsPage() { const [OSSFriends, setOSSFriends] = useState([]); useEffect(() => { - fetch("https://formbricks.com/api/oss-friends") + fetch("http://localhost:3001/api/oss-friends") .then((response) => response.json()) - .then((data) => setOSSFriends(data)); + .then((data) => setOSSFriends(data.data)); }, []); return ( From 42e6601f13f331a9e37873cb68fdaaededc8fd9a Mon Sep 17 00:00:00 2001 From: Johannes Date: Wed, 2 Aug 2023 10:47:26 +0200 Subject: [PATCH 4/4] update fetch URL --- apps/formbricks-com/pages/oss-friends.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/formbricks-com/pages/oss-friends.tsx b/apps/formbricks-com/pages/oss-friends.tsx index 9232636bb8..80d908a17d 100644 --- a/apps/formbricks-com/pages/oss-friends.tsx +++ b/apps/formbricks-com/pages/oss-friends.tsx @@ -7,7 +7,7 @@ export default function OSSFriendsPage() { const [OSSFriends, setOSSFriends] = useState([]); useEffect(() => { - fetch("http://localhost:3001/api/oss-friends") + fetch("https://formbricks.com/api/oss-friends") .then((response) => response.json()) .then((data) => setOSSFriends(data.data)); }, []);