Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat/temp developers #1718

Draft
wants to merge 85 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
ba53345
developers page, /build -> /resources
brendan-defi Feb 6, 2025
bb7aaa7
add new deps
brendan-defi Feb 6, 2025
227d88a
first components
brendan-defi Feb 6, 2025
9989b72
add hero
brendan-defi Feb 6, 2025
b02d80d
testimonials
brendan-defi Feb 6, 2025
76c3c0f
tools
brendan-defi Feb 6, 2025
09d393c
use cases
brendan-defi Feb 6, 2025
50eb490
why base
brendan-defi Feb 6, 2025
f960c1f
why base svgs
brendan-defi Feb 6, 2025
0eddd4e
top navigation
brendan-defi Feb 6, 2025
d14a44b
fix nits
brendan-defi Feb 6, 2025
7f36532
fix imports
brendan-defi Feb 6, 2025
d162e64
resolved warning
brendan-defi Feb 6, 2025
f2dbd67
resolve style issues
brendan-defi Feb 6, 2025
1b535e4
live demo
brendan-defi Feb 6, 2025
69603f2
testing build
brendan-defi Feb 6, 2025
7b8ea40
moved code highlighter to dynamic import
brendan-defi Feb 6, 2025
f7f8ee8
fixed onboarding button and animation
brendan-defi Feb 6, 2025
a6f5be0
fix border and text colors
brendan-defi Feb 6, 2025
04f2b2a
add scrolling
brendan-defi Feb 6, 2025
453123e
add arrow animation to buttons
brendan-defi Feb 7, 2025
14c54c6
mobile sizing
brendan-defi Feb 7, 2025
1ab719e
reduce boldness to font-medium
brendan-defi Feb 7, 2025
b04674c
mobile live demo
brendan-defi Feb 7, 2025
024cff8
mobile bottom cta
brendan-defi Feb 7, 2025
1793cf0
fixed text alignment
brendan-defi Feb 7, 2025
c1e5de0
override default container mobile padding
brendan-defi Feb 7, 2025
81615e9
hero design updates
brendan-defi Feb 7, 2025
e85ad4e
fix search button padding
brendan-defi Feb 8, 2025
5066ff4
organize dropdown assets
brendan-defi Feb 8, 2025
2edf147
clarify navbar comment
brendan-defi Feb 8, 2025
dfe77ba
fix border colors
brendan-defi Feb 8, 2025
23443fa
mobile text size
brendan-defi Feb 8, 2025
c056c16
change 191919s to dark-palette-backgroundAlternate
brendan-defi Feb 8, 2025
f4b04e4
fix gasless animation
brendan-defi Feb 9, 2025
aeed5ce
mobile nav menu
brendan-defi Feb 9, 2025
c955ebc
update search modal
brendan-defi Feb 9, 2025
bae3e1a
search filter
brendan-defi Feb 10, 2025
9720559
fix social animation
brendan-defi Feb 10, 2025
044ee32
new desktop design
brendan-defi Feb 11, 2025
d30c049
fix spacing
brendan-defi Feb 11, 2025
da72729
bold titles
brendan-defi Feb 11, 2025
d5a6d1d
fix spacing
brendan-defi Feb 11, 2025
db767fa
bold titles
brendan-defi Feb 11, 2025
bfa7a4b
hero padding
brendan-defi Feb 11, 2025
d27cda8
stories page
brendan-defi Feb 11, 2025
7bc3e64
move spacing
brendan-defi Feb 11, 2025
8f614fd
fix imports
brendan-defi Feb 11, 2025
4bf229c
add stories
brendan-defi Feb 11, 2025
a304a4a
fix mobile design
brendan-defi Feb 11, 2025
cc6b96f
fix links
brendan-defi Feb 11, 2025
0ab40be
rename builders
brendan-defi Feb 11, 2025
d7a2221
fix links
brendan-defi Feb 11, 2025
9a86291
add light/dark mode to OCK demos
brendan-defi Feb 11, 2025
7cab299
reverse theme
brendan-defi Feb 11, 2025
4bea4ae
scrolling logos
brendan-defi Feb 11, 2025
b1402c3
handle logos
brendan-defi Feb 11, 2025
e886e69
fix lints
brendan-defi Feb 11, 2025
e5ae94a
fix key prop
brendan-defi Feb 11, 2025
d584dfa
fix types
brendan-defi Feb 11, 2025
2a12f2d
story page
brendan-defi Feb 12, 2025
98df950
bottom ctas
brendan-defi Feb 12, 2025
e6eb8c3
fix lints
brendan-defi Feb 12, 2025
ddb942e
design updates
brendan-defi Feb 13, 2025
3321122
fix spacing
brendan-defi Feb 13, 2025
d7fa823
navbar getstarted button
brendan-defi Feb 13, 2025
fa00ca5
remove unused import
brendan-defi Feb 13, 2025
705442b
reduce icon size
brendan-defi Feb 13, 2025
144b7e1
fix spacing, sizing
brendan-defi Feb 13, 2025
898e8ba
stories updates
brendan-defi Feb 13, 2025
b4a0937
update landing page cta
brendan-defi Feb 13, 2025
127e33e
fix lints
brendan-defi Feb 13, 2025
cbec3c0
refactor demo
brendan-defi Feb 13, 2025
0d338b7
deps updates
brendan-defi Feb 13, 2025
29f949c
ock theme prop, use base
brendan-defi Feb 14, 2025
880ae97
links on logos
brendan-defi Feb 14, 2025
18d6c8c
install
brendan-defi Feb 14, 2025
dd35f85
deps updates
brendan-defi Feb 14, 2025
b52a73f
add ock components
brendan-defi Feb 14, 2025
2e93643
update directory structure
brendan-defi Feb 14, 2025
2fa5b6b
dedupe code snippet
brendan-defi Feb 14, 2025
bc9caf8
dedupe bottom cta
brendan-defi Feb 14, 2025
929ab19
integrate marquee
brendan-defi Feb 14, 2025
1b8e63a
move assets into shared
brendan-defi Feb 14, 2025
290e074
move styles
brendan-defi Feb 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion apps/web/app/(base-org)/(root)/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ export default async function Home() {
<Container>
<Title level={TitleLevel.Title1}>Base is for everyone.</Title>
<div className="mt-4 flex gap-4">
<Link href="/build?utm_source=dotorg&medium=hero">
<Link href="/builders?utm_source=dotorg&medium=hero">
<Button variant={ButtonVariants.Secondary} iconName="baseOrgDiagonalUpArrow">
Start building
</Button>
Expand Down
39 changes: 39 additions & 0 deletions apps/web/app/(base-org)/builders/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import type { Metadata } from 'next';
import AnalyticsProvider from 'apps/web/contexts/Analytics';
import Container from 'apps/web/src/components/base-org/Container';
import { Hero } from 'apps/web/src/components/Builders/Landing/Hero';
import { UseCases } from 'apps/web/src/components/Builders/Landing/UseCases';
import { Customers } from 'apps/web/src/components/Builders/Landing/Customers';
import { Testimonials } from 'apps/web/src/components/Builders/Landing/Testimonials';
import { Tools } from 'apps/web/src/components/Builders/Landing/Tools';
import { WhyBase } from 'apps/web/src/components/Builders/Landing/WhyBase';
import { LiveDemo } from 'apps/web/src/components/Builders/Landing/LiveDemo';
import { BottomCta } from 'apps/web/src/components/Builders/Landing/BottomCta';

export const metadata: Metadata = {
metadataBase: new URL('https://base.org'),
title: `Base | Developers`,
openGraph: {
title: `Base | Developers`,
url: `/developers`,
},
};

export default function Developers() {
return (
<AnalyticsProvider context="developers">
<Container className="!px-[1.5rem] lg:!px-[2rem]">
<main className="mb-32 flex min-h-screen w-full flex-col items-center bg-black pt-20">
<Hero />
<UseCases />
<Customers />
<Testimonials />
<Tools />
<WhyBase />
<LiveDemo />
<BottomCta />
</main>
</Container>
</AnalyticsProvider>
);
}
70 changes: 70 additions & 0 deletions apps/web/app/(base-org)/builders/stories/aly/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
import Container from 'apps/web/src/components/base-org/Container';
import mtsumi from 'apps/web/src/components/Builders/Stories/StoryCards/assets/mtsumi.webp';
import { Hero } from 'apps/web/src/components/Builders/Stories/StoryPages/Hero';
import { QABlock } from 'apps/web/src/components/Builders/Stories/StoryPages/QABlock';
import { Blockquote } from 'apps/web/src/components/Builders/Stories/StoryPages/Blockquote';
import { ReadMore } from 'apps/web/src/components/Builders/Stories/StoryPages/ReadMore';
import { BottomCta } from 'apps/web/src/components/Builders/Stories/BottomCta';

export default function Aly() {
return (
<Container className="!px-[1.5rem] lg:!px-[2rem]">
<main className="mb-32 flex min-h-screen w-full flex-col items-center bg-black pt-20">
<Hero
date="January 11, 2025"
title="Aly Mtsumi of Element Pay"
description="Enabling users to buy stablecoins through m-pesa and spend them."
region="Nairobi, Kenya"
project="Element Pay"
onBaseSince="December 2023"
image={mtsumi}
/>
<QABlock
question="Tell us a little about the app you are building on Base?"
answer="At ElementPay, our goal is simple, bring users on-chain for cheap, fast transactions and
real freedom with their money. No more waiting on banks or paying high transaction fees.
By leveraging stablecoins, we're unlocking participation in a truly global economy
where anyone can send, receive, and manage funds with ease. We're trying to make
crypto accessible and empowering everyone to experience the future of finance."
/>
<Blockquote
quote="It feels like we're building the future together."
color="text-dark-green-60"
/>
<QABlock
question="What's the best part of building on Base?"
answer="The best part of building on Base is how seamless and developer-friendly the ecosystem is.
Base's support for builders and its vision of making on-chain accessible to everyone aligns perfectly
with what we're trying to achieve with Element. It feels like we're building the future together."
/>
<QABlock
question="What do you want to tell builders who are thinking about Base? Why would you convince them to join Base?"
answer="Go for it! Base offers an incredible combination of low fees, scalability, and a strong, supportive community.
It's the perfect foundation to focus on innovation without worrying about the limitations or costs of traditional
chains. Plus, being part of Base means contributing to a vision of bringing more people on-chain and making decentralized
finance truly accessible. If you're building for the future, Base is where you want to be."
/>
<QABlock
question="What challenges have you experienced?"
answer="One of the biggest challenges we've faced is navigating the legal and regulatory landscape, especially when it
comes to scaling. Crypto is still new territory in Kenya, and figuring out how to stay compliant while offering services
like onramps and offramps hasn't been easy. It takes a lot of research, planning, and sometimes even creative problem-solving
to ensure we can expand while staying within the rules."
/>
<QABlock
question="What advice do you have to other builders?"
answer=" Think big! Base is a blank canvas for so much more. Whether it's using blockchain for carbon trading like I've
considered with my iSafari app, letting users sell their photos as NFTs, or building something transformative like a platform
to securely store and access medical records globally, the potential is limitless."
/>
<ReadMore
previousLabel="Back to Stories"
previousHref="/builders/stories"
nextLabel="Ngan Nguyen of Onchain Buster"
nextHref="/builders/stories/ngan"
/>
<BottomCta />
</main>
</Container>
);
}
26 changes: 26 additions & 0 deletions apps/web/app/(base-org)/builders/stories/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import AnalyticsProvider from 'apps/web/contexts/Analytics';
import Container from 'apps/web/src/components/base-org/Container';
import { Hero } from 'apps/web/src/components/Builders/Stories/Hero';
import { StoryCards } from 'apps/web/src/components/Builders/Stories/StoryCards';
// import Image from 'next/image';
// import baseGlobe from 'apps/web/src/components/Builders/Stories/Hero/assets/base_globe.webp';

export default function Stories() {
return (
<AnalyticsProvider context="stories">
{/* <div className="relative pt-20">
<Image
src={baseGlobe}
alt="Base Globe"
className="absolute right-0 top-0 hidden md:block"
/> */}
<Container className="!px-[1.5rem] lg:!px-[2rem]">
<main className="mb-32 flex min-h-screen w-full flex-col items-center bg-black">
<Hero />
<StoryCards />
</main>
</Container>
{/* </div> */}
</AnalyticsProvider>
);
}
22 changes: 18 additions & 4 deletions apps/web/app/CryptoProviders.dynamic.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,20 @@

import { useEffect, useState } from 'react';
import { useErrors } from 'apps/web/contexts/Errors';
import type { CryptoProvidersProps } from './CryptoProviders';

export function DynamicCryptoProviders({ children }: { children: React.ReactNode }) {
const [CryptoProvidersDynamic, setCryptoProvidersDynamic] =
useState<React.ComponentType<{ children: React.ReactNode }>>();
export function DynamicCryptoProviders({
children,
mode = 'light',
theme = 'default',
}: CryptoProvidersProps) {
const [CryptoProvidersDynamic, setCryptoProvidersDynamic] = useState<
React.ComponentType<{
children: React.ReactNode;
mode?: 'light' | 'dark';
theme?: 'default' | 'base' | 'cyberpunk' | 'hacker';
}>
>();
const { logError } = useErrors();

useEffect(() => {
Expand All @@ -18,5 +28,9 @@ export function DynamicCryptoProviders({ children }: { children: React.ReactNode

if (!CryptoProvidersDynamic) return null;

return <CryptoProvidersDynamic>{children}</CryptoProvidersDynamic>;
return (
<CryptoProvidersDynamic mode={mode} theme={theme}>
{children}
</CryptoProvidersDynamic>
);
}
33 changes: 22 additions & 11 deletions apps/web/app/CryptoProviders.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,6 @@

import { AppConfig, OnchainKitProvider } from '@coinbase/onchainkit';
import { connectorsForWallets, RainbowKitProvider } from '@rainbow-me/rainbowkit';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { isDevelopment } from 'apps/web/src/constants';
import { createConfig, http, WagmiProvider } from 'wagmi';
import { base, baseSepolia, mainnet } from 'wagmi/chains';
import {
coinbaseWallet,
metaMaskWallet,
Expand All @@ -14,6 +10,11 @@ import {
uniswapWallet,
walletConnectWallet,
} from '@rainbow-me/rainbowkit/wallets';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { useMemo } from 'react';
import { createConfig, http, WagmiProvider } from 'wagmi';
import { base, baseSepolia, mainnet } from 'wagmi/chains';
import { isDevelopment } from 'apps/web/src/constants';

const connectors = connectorsForWallets(
[
Expand Down Expand Up @@ -51,17 +52,27 @@ const config = createConfig({
});
const queryClient = new QueryClient();

type CryptoProvidersProps = {
export type CryptoProvidersProps = {
children: React.ReactNode;
mode?: 'light' | 'dark';
theme?: 'default' | 'base' | 'cyberpunk' | 'hacker';
};

const onchainKitConfig: AppConfig = {
appearance: {
mode: 'light',
},
};
export default function CryptoProviders({
children,
mode = 'light',
theme = 'default',
}: CryptoProvidersProps) {
const onchainKitConfig: AppConfig = useMemo(
() => ({
appearance: {
mode,
theme,
},
}),
[mode, theme],
);

export default function CryptoProviders({ children }: CryptoProvidersProps) {
return (
<WagmiProvider config={config}>
<QueryClientProvider client={queryClient}>
Expand Down
6 changes: 6 additions & 0 deletions apps/web/next.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ const contentSecurityPolicy = {
`https://${process.env.NEXT_PUBLIC_PINATA_GATEWAY_URL}`,
'https://usdc-claim-git-master-coinbase-vercel.vercel.app',
'https://eth.merkle.io', // new default viem rpc
'https://blue-api.morpho.org/graphql', // morpho
],
'frame-src': ['https://p.datadoghq.com'],
'frame-ancestors': ["'self'", baseXYZDomains],
Expand Down Expand Up @@ -313,6 +314,11 @@ module.exports = extendBaseConfig(
destination: '/names',
permanent: true,
},
{
source: '/build',
destination: '/resources',
permanent: true,
},
];
},
},
Expand Down
3 changes: 3 additions & 0 deletions apps/web/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
"@heroicons/react": "^2.1.3",
"@lottiefiles/dotlottie-react": "^0.8.10",
"@monogrid/gainmap-js": "^3.0.6",
"@number-flow/react": "^0.5.5",
"@radix-ui/react-accordion": "^1.2.0",
"@radix-ui/react-collapsible": "^1.1.0",
"@radix-ui/react-popover": "^1.1.1",
Expand Down Expand Up @@ -73,6 +74,8 @@
"recharts": "^2.12.7",
"satori": "^0.10.14",
"sharp": "^0.33.4",
"shiki": "^2.1.0",
"tailwindcss-animate": "^1.0.7",
"three": "^0.168.0",
"three-stdlib": "^2.33.0",
"twemoji": "^14.0.2",
Expand Down
58 changes: 58 additions & 0 deletions apps/web/src/components/Builders/Landing/BottomCta/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
'use client';

import { ButtonVariants } from 'apps/web/src/components/base-org/Button/types';
import { ButtonWithLinkAndEventLogging } from 'apps/web/src/components/Button/ButtonWithLinkAndEventLogging';
import { useCallback, useState } from 'react';
import { Icon } from 'apps/web/src/components/Icon/Icon';
import { CtaBanner } from 'apps/web/src/components/Builders/Shared/CtaBanner';

export function BottomCta() {
const [hasCopied, setHasCopied] = useState(false);

const handleCopy = useCallback(() => {
void navigator.clipboard.writeText('npm create onchain');
setHasCopied(true);
setTimeout(() => setHasCopied(false), 2000); // Reset after 2 seconds
}, []);

return (
<CtaBanner
title="Together, we're updating the Internet with a new dev platform."
description="Start building with a starter template or see documentation."
sectionClassName="my-24"
cta={
<>
<button
type="button"
className="inline-flex items-center gap-2.5 rounded-xl bg-white px-4 py-3 font-medium text-dark-palette-primaryForeground transition-colors hover:bg-white/90"
onClick={handleCopy}
>
npm create onchain
{hasCopied ? (
<div className="text-green-60">
<Icon name="checkmark" width="20" height="20" color="currentColor" />
</div>
) : (
<Icon name="copy" width="20" height="20" color="currentColor" />
)}
</button>
<ButtonWithLinkAndEventLogging
variant={ButtonVariants.SecondaryOutline}
linkClassNames="text-base font-medium text-white block"
buttonClassNames="flex w-full items-center justify-between px-4 py-3 group !rounded-xl"
target="_blank"
href="https://docs.base.org"
eventName="bottom-cta-documentation"
>
<div className="flex w-40 items-center justify-between">
<span>Documentation</span>
<div className="transition-transform duration-200 group-hover:translate-x-1">
<Icon name="arrowRight" width={20} height={20} color="white" />
</div>
</div>
</ButtonWithLinkAndEventLogging>
</>
}
/>
);
}
Loading
Loading