diff --git a/docs/astro.config.mjs b/docs/astro.config.mjs index 876830d..1c6593e 100644 --- a/docs/astro.config.mjs +++ b/docs/astro.config.mjs @@ -4,10 +4,10 @@ import starlightBlog from 'starlight-blog'; // https://astro.build/config export default defineConfig({ + site: 'https://opensaas.sh', integrations: [ starlightBlog({ title: 'The Best Blog Ever', - sidebar: [{}], authors: { vince: { name: 'Vince', @@ -18,9 +18,14 @@ export default defineConfig({ }, }), starlight({ - title: 'Open SaaS Docs', + title: 'Open SaaS', + description: 'Open SaaS is a free, open-source, full-stack SaaS starter kit for React + NodeJS.', + logo: { + src: '/src/assets/logo.png', + alt: 'Open SaaS', + }, editLink: { - baseUrl: 'https://github.com/wasp-lang/open-saas/edit/main', + baseUrl: 'https://github.com/wasp-lang/open-saas/edit/main', }, components: { MarkdownContent: 'starlight-blog/overrides/MarkdownContent.astro', diff --git a/docs/src/assets/houston.webp b/docs/src/assets/houston.webp deleted file mode 100644 index 930c164..0000000 Binary files a/docs/src/assets/houston.webp and /dev/null differ diff --git a/src/client/public/public-logo.png b/docs/src/assets/logo.png similarity index 100% rename from src/client/public/public-logo.png rename to docs/src/assets/logo.png diff --git a/main.wasp b/main.wasp index 752baa8..a9deba2 100644 --- a/main.wasp +++ b/main.wasp @@ -7,8 +7,8 @@ app SaaSTemplate { "", "", "", - "", - "", + "", + "", "", "", "", diff --git a/src/client/landing-page/LandingPage.tsx b/src/client/landing-page/LandingPage.tsx index 72f0a1a..baf93b2 100644 --- a/src/client/landing-page/LandingPage.tsx +++ b/src/client/landing-page/LandingPage.tsx @@ -1,21 +1,23 @@ import { useState } from 'react'; import { Dialog } from '@headlessui/react'; -import { AiFillCheckCircle, AiFillCloseCircle } from 'react-icons/ai'; +import { AiFillCheckCircle, AiFillCloseCircle, AiOutlineLoading } from 'react-icons/ai'; import { HiBars3 } from 'react-icons/hi2'; import { BiLogIn } from 'react-icons/bi'; import { Link } from '@wasp/router'; import logo from '../static/logo.png'; -import daBoi from '../static/magic-app-gen-logo.png'; +import daBoi from '../static/da-boi.png'; +import openSaasBanner from '../static/open-saas-banner-gr.png'; import { features, navigation, tiers, faqs, footerNavigation } from './contentSections'; import useAuth from '@wasp/auth/useAuth'; import DropdownUser from '../components/DropdownUser'; import { useHistory } from 'react-router-dom'; import stripePayment from '@wasp/actions/stripePayment'; -import { STRIPE_CUSTOMER_PORTAL_LINK } from '@wasp/shared/constants'; +import { DOCS_URL, STRIPE_CUSTOMER_PORTAL_LINK } from '@wasp/shared/constants'; import { UserMenuItems } from '../components/UserMenuItems'; export default function LandingPage() { const [mobileMenuOpen, setMobileMenuOpen] = useState(false); + const [isStripePaymentLoading, setIsStripePaymentLoading] = useState(false); const { data: user, isLoading: isUserLoading } = useAuth(); @@ -27,6 +29,7 @@ export default function LandingPage() { return; } try { + setIsStripePaymentLoading(tierId); let stripeResults = await stripePayment(tierId); if (stripeResults?.sessionUrl) { @@ -34,6 +37,8 @@ export default function LandingPage() { } } catch (error: any) { console.error(error?.message ?? 'Something went wrong.'); + } finally { + setIsStripePaymentLoading(false); } } @@ -122,7 +127,7 @@ export default function LandingPage() { ) : ( - + )} @@ -158,30 +163,36 @@ export default function LandingPage() {
-
+

The free SaaS template with superpowers

- Get all the features of a modern SaaS app, in a ready-made template. Built on top of Wasp, the only - full-stack React + NodeJS framework that builds features for you. + An open-source, feature-rich template, engineered with Wasp—the only full-stack React + NodeJS + framework that manages features for you.

App screenshot
@@ -265,42 +276,58 @@ export default function LandingPage() {

Testimonials

-
-
-

“My cats love it!”

-
-
-
Fecony
-
Wasp Expert
-
-
-
+

“I used Wasp to build and sell my AI-augmented SaaS app for marketplace vendors within two - months...!” + months!”

-
- -
Maks
-
Senior Eng @ Red Hat
+
+ + +
+
Maks
+
Senior Eng @ Red Hat
+
-
+
+
+

“My cats love it!”

+
+
+ + +
+
Fecony
+
Wasp Expert
+
+
+
+
+

“I don't even know how to code. I'm just a plushie.”

-
Da Boi
-
Wasp's Unofficial Mascot
+ + +
+
Da Boi
+
Wasp Unofficial Mascot
+
+
-
- -
@@ -385,6 +412,7 @@ export default function LandingPage() { ? 'bg-yellow-500 text-white hover:text-white shadow-sm hover:bg-yellow-400' : 'text-gray-600 ring-1 ring-inset ring-purple-200 hover:ring-purple-400' } + ${isStripePaymentLoading === tier.id ? 'cursor-wait' : null} 'mt-8 block rounded-md py-2 px-3 text-center text-sm font-semibold leading-6 focus-visible:outline focus-visible:outline-2 focus-visible:outline-yellow-400' `} > diff --git a/src/client/landing-page/contentSections.ts b/src/client/landing-page/contentSections.ts index 9544851..6181ef3 100644 --- a/src/client/landing-page/contentSections.ts +++ b/src/client/landing-page/contentSections.ts @@ -44,8 +44,8 @@ export const features = [ icon: '🤖', }, { - name: 'Deploy Anywhere', - description: 'You own all your code, so deploy it wherever you want.', + name: 'Deploy Anywhere. Easily.', + description: 'You own all your code, so deploy it wherever you want. Or take advantage of Wasp\'s one-command, full-stack deploy.', icon: '🚀 ', }, { @@ -95,8 +95,8 @@ export const faqs = [ export const footerNavigation = { app: [ { name: 'Pricing', href: '#pricing' }, - { name: 'Documentation', href: '#' }, // TODO: fill in - { name: 'Blog', href: '#' }, + { name: 'Documentation', href: DOCS_URL }, + { name: 'Blog', href: BLOG_URL }, ], company: [ { name: 'About', href: '#' }, diff --git a/src/client/public/public-banner.png b/src/client/public/public-banner.png new file mode 100644 index 0000000..c7a44ff Binary files /dev/null and b/src/client/public/public-banner.png differ diff --git a/src/client/static/da-boi.png b/src/client/static/da-boi.png new file mode 100644 index 0000000..0f9227e Binary files /dev/null and b/src/client/static/da-boi.png differ diff --git a/src/client/static/magic-app-gen-logo.png b/src/client/static/magic-app-gen-logo.png deleted file mode 100644 index c6c39eb..0000000 Binary files a/src/client/static/magic-app-gen-logo.png and /dev/null differ diff --git a/src/client/static/open-saas-banner-gr.png b/src/client/static/open-saas-banner-gr.png new file mode 100644 index 0000000..c7a44ff Binary files /dev/null and b/src/client/static/open-saas-banner-gr.png differ