Skip to content
Dashboard

Containing multi-site management within a single codebase

Sr. Content Engineer

Learn how Wunderman Thompson's enterprise workflow controls all data from one source of truth.

Compose a modern solution

Learn how to future-proof your team's digital transformation.

Grab the Guide

Copy link to headingChoose a component-based framework like Next.js or SvelteKit

So what are the tradeoffs?

Basement.studio recently navigated a large-scale migration to Next.js. Here's where they landed.

Learn More

Copy link to headingApply Atomic Design principles

Copy link to headingIdentify your atoms

Button.js
export default function Button({ children, onClick }) {
return (
<button onClick={onClick}>{children}</button>
)
}

Button.js atom.

Copy link to headingForm molecules

SearchBar.js
import InputField from "../atoms/InputField";
import InputLabel from "../atoms/InputLabel";
import Button from "../atoms/Button";
import { useState } from "react";
export default function SearchBar({ onSearch }) {
const [searchText, setSearchText] = useState("");
const handleSearch = () => {
onSearch(searchText);
};
const handleChange = (event) => {
setSearchText(event.target.value);
};
return (
<div>
<InputLabel htmlFor="search">Search</InputLabel>
<InputField
id="search"
type="text"
value={searchText}
onChange={handleChange}
/>
<Button onClick={handleSearch}>Search</Button>
</div>
);
}

An example molecule, SearchBar.js, which combines the atoms of `InputField`, `InputLabel`, and `Button`.

Copy link to headingBuild organisms

Header.js
import SearchBar from "../molecules/SearchBar";
import Menu from "../molecules/Menu";
import SiteTitle from "../molecules/SiteTitle";
import Flex from "../atoms/Flex";
import Title from "../atoms/Title";
import Logo from "../atoms/Logo";
export default function Header({ onSearch, menuOptions }) {
return (
<header>
<Flex justify="between">
<SiteTitle logo={Logo} title={Title} />
<SearchBar onSearch={onSearch} />
<Menu menuOptions={menuOptions} />
</Flex>
</header>
);
}

An organism that imports various molecules and atoms to construct a complex, reusable component.

Copy link to headingDevelop templates and populate pages

Copy link to headingStreamline data with a headless CMS

Monolithic architecture often requires repetition of labor, but the flexibility of composable allows for data templating that works for all clients.Monolithic architecture often requires repetition of labor, but the flexibility of composable allows for data templating that works for all clients.
Monolithic architecture often requires repetition of labor, but the flexibility of composable allows for data templating that works for all clients.

Copy link to headingAdopt a monorepo workflow

Copy link to headingMake it Turbo

Need some space to experiment?

Check out this Next.js and Turborepo starter template to ease your way into monorepo development.

Deploy

Copy link to headingLet Vercel manage the infrastructure

Native integrations
Preview deployments
Serverless for scale
A global Edge Network

Copy link to headingImprove your customer story

Talk with a migration expert

We can help you find the best workflow for your team's unique needs.

Send a Message

Ready to deploy?