import React, { useState, Suspense, useEffect, useLayoutEffect } from "react"; import { Fade, Flex, Heading, Box, chakra, Stack, Link, Center, useMediaQuery, Grid, Text, GridItem, SimpleGrid, Image as ChakraImage, HStack, VStack, } from "@chakra-ui/react"; import useUser from "../src/core/hooks/useUser"; import useRouter from "../src/core/hooks/useRouter"; import { AWS_ASSETS_PATH, DEFAULT_METATAGS } from "../src/core/constants"; import TrustedBadge from "../src/components/TrustedBadge"; import RouteButton from "../src/components/RouteButton"; import MilestoneBox from "../src/components/MilestoneBox"; import mixpanel from "mixpanel-browser"; import { MIXPANEL_EVENTS } from "../src/core/providers/AnalyticsProvider/constants"; const HEADING_PROPS = { fontWeight: "700", fontSize: ["4xl", "5xl", "5xl", "5xl", "6xl", "7xl"], }; const assets = { background720: `${AWS_ASSETS_PATH}/background720.png`, background1920: `${AWS_ASSETS_PATH}/background720.png`, background2880: `${AWS_ASSETS_PATH}/background720.png`, background3840: `${AWS_ASSETS_PATH}/background720.png`, cryptoTraders: `${AWS_ASSETS_PATH}/crypto+traders.png`, cointelegraph: `${AWS_ASSETS_PATH}/featured_by/Cointelegraph_logo.png`, forte: `${AWS_ASSETS_PATH}/featured_by/forte_logo.png`, educativesessions: `${AWS_ASSETS_PATH}/featured_by/educative_logo.png`, cryptoinsiders: `${AWS_ASSETS_PATH}/featured_by/crypto_insiders.png`, cryptoslate: `${AWS_ASSETS_PATH}/featured_by/cs-media-logo-light.png`, cgcConference: `${AWS_ASSETS_PATH}/featured_by/cgc_conference_2022_logo.jpg`, lender: `${AWS_ASSETS_PATH}/lender.png`, DAO: `${AWS_ASSETS_PATH}/DAO .png`, NFT: `${AWS_ASSETS_PATH}/NFT.png`, bc101: `${AWS_ASSETS_PATH}/featured_by/blockchain101_logo.png`, laguna: `${AWS_ASSETS_PATH}/featured_by/laguna_logo.svg`, game7io: `${AWS_ASSETS_PATH}/featured_by/game7io_logo.png`, orangedao: `${AWS_ASSETS_PATH}/featured_by/orangedao_logo.png`, meetup: `${AWS_ASSETS_PATH}/featured_by/meetup_logo.png`, }; const Feature = ({ image, altText, heading, description }) => { return ( {heading} {description} ); }; const Homepage = () => { const [background, setBackground] = useState("background720"); const [backgroundLoaded720, setBackgroundLoaded720] = useState(false); const [backgroundLoaded1920, setBackgroundLoaded1920] = useState(false); const [backgroundLoaded2880, setBackgroundLoaded2880] = useState(false); const [backgroundLoaded3840, setBackgroundLoaded3840] = useState(false); const router = useRouter(); const { isInit } = useUser(); const [ isLargerThan720px, isLargerThan1920px, isLargerThan2880px, isLargerThan3840px, ] = useMediaQuery([ "(min-width: 720px)", "(min-width: 1920px)", "(min-width: 2880px)", "(min-width: 3840px)", ]); useEffect(() => { assets["background720"] = `${AWS_ASSETS_PATH}/background720.png`; assets["background1920"] = `${AWS_ASSETS_PATH}/background1920.png`; assets["background2880"] = `${AWS_ASSETS_PATH}/background2880.png`; assets["background3840"] = `${AWS_ASSETS_PATH}/background3840.png`; }, []); useLayoutEffect(() => { if (backgroundLoaded3840) { setBackground("background3840"); } else if (backgroundLoaded2880) { setBackground("background2880"); } else if (backgroundLoaded1920) { setBackground("background1920"); } else { setBackground("background720"); } }, [ isLargerThan720px, isLargerThan1920px, isLargerThan2880px, isLargerThan3840px, backgroundLoaded720, backgroundLoaded1920, backgroundLoaded2880, backgroundLoaded3840, ]); useEffect(() => { if ( router.nextRouter.asPath !== "/" && router.nextRouter.asPath.slice(0, 2) !== "/?" && router.nextRouter.asPath.slice(0, 2) !== "/#" && router.nextRouter.asPath.slice(0, 11) !== "/index.html" ) { console.warn("redirect attempt.."); if (typeof window !== "undefined") { console.warn("window present:", window.location.pathname); router.replace(router.nextRouter.asPath, router.nextRouter.asPath, { shallow: false, }); } } }, [isInit, router]); useLayoutEffect(() => { const imageLoader720 = new Image(); imageLoader720.src = `${AWS_ASSETS_PATH}/background720.png`; imageLoader720.onload = () => { setBackgroundLoaded720(true); }; }, []); useLayoutEffect(() => { const imageLoader1920 = new Image(); imageLoader1920.src = `${AWS_ASSETS_PATH}/background1920.png`; imageLoader1920.onload = () => { setBackgroundLoaded1920(true); }; }, []); useLayoutEffect(() => { const imageLoader2880 = new Image(); imageLoader2880.src = `${AWS_ASSETS_PATH}/background2880.png`; imageLoader2880.onload = () => { setBackgroundLoaded2880(true); }; }, []); useLayoutEffect(() => { const imageLoader3840 = new Image(); imageLoader3840.src = `${AWS_ASSETS_PATH}/background3840.png`; imageLoader3840.onload = () => { setBackgroundLoaded3840(true); }; }, []); const JoinDiscordButton = () => { return ( { if (mixpanel.get_distinct_id()) { mixpanel.track(`${MIXPANEL_EVENTS.BUTTON_CLICKED}`, { full_url: router.nextRouter.asPath, buttonName: `Join our Discord`, page: `landing`, section: `bottom-line`, }); } }} href={"/discordleed"} isExternal > Join our Discord ); }; return ( Build a Sustainable Game Economy in only a few clicks Moonstream Engine empowers web3 game designers to grow healthy economies. Moonstream smart contracts and APIs allow you to integrate our game mechanics with zero effort. Major Milestones And growing... Trusted by{" "} Features Lootboxes, crafting recipes, deck building, you name it!

With Moonstream Engine you can deploy on-chain mechanics with one click.

Read our Use Cases or explore the features to know more.
{ if (mixpanel.get_distinct_id()) { mixpanel.track( `${MIXPANEL_EVENTS.BUTTON_CLICKED}`, { full_url: router.nextRouter.asPath, buttonName: `Explore the Use Cases`, page: `landing`, section: `Dive into Engine Features`, } ); } }} href="https://docs.google.com/document/d/1mjfF8SgRrAZvtCVVxB2qNSUcbbmrH6dTEYSMfHKdEgc/preview" isExternal > Explore the Use Cases
Our Workflow Step 1: So you decided to build a healthy economy on the blockchain. You are on the right path, traveler! Step 2: Join our Discord {" "} to get in touch with the team (@zomglings). Tell us about your game and schedule a call if needed. Step 3: Pick game mechanics that you'd like to deploy. Moonstream Engine provides you with back-end tools to put them on the blockchain.

You're at the end of your development journey now, traveler. Time to watch your game economy grow!
Featured by{" "}
{`Contact us on Discord to discuss your project and keep up with the latest updates on Moonstream Engine.`}
); }; export async function getStaticProps() { const assetPreload = Object.keys(assets).map((key) => { return { rel: "preload", href: assets[key], as: "image", }; }); const preconnects = [{ rel: "preconnect", href: "https://s3.amazonaws.com" }]; const preloads = assetPreload.concat(preconnects); return { props: { metaTags: DEFAULT_METATAGS, preloads }, }; } export default Homepage;