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

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

Link to headingApply Atomic Design principles

Link to headingIdentify your atoms

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

Button.js atom.

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`.

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.

Link to headingDevelop templates and populate pages

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.

Link to headingAdopt a monorepo workflow

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

Link to headingLet Vercel manage the infrastructure

Native integrations
Preview deployments
Serverless for scale
A global Edge Network

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?