Why did Hygraph decide to rewrite its marketing website?
Hygraph chose to rewrite its marketing website to address codebase complexity, design inconsistencies, and difficulties in adding new features. The previous site, built with Gatsby and later ported to Next.js and TypeScript, lacked modern schema features and was hard to maintain. The rewrite aimed to create a future-proof, modular website leveraging Hygraph's latest capabilities. (Source)
What were the foundational goals for the new Hygraph website?
The foundational goals were maintainability, scalability, accessibility, and consistency. The design system was planned carefully to ensure the website could adapt to future needs and provide a seamless experience for designers, developers, and content editors. (Source)
How does Hygraph's design system improve website maintainability and scalability?
Hygraph's design system uses modular block components composed of primitives, enabling organized, maintainable structures. This approach boosts productivity and allows for seamless creation and publishing of new pages, making the website scalable and easy to update. (Source)
What styling solution did Hygraph use for its website implementation?
Hygraph used Tailwind CSS for styling, chosen for its maintainability, utility-first approach, and ease of adding responsive styles. Tailwind's extensive customizability allowed the team to align colors, spacing, and typography with design system requirements. (Source)
How does Hygraph use semantic tokens in its design system?
Hygraph creates semantic tokens based on a core palette, providing context and meaning for colors. Semantic tokens clarify usage (e.g., 'bg-primary' for primary surfaces), improving consistency and making it easier for designers and developers to apply styles correctly. (Source)
What tools did Hygraph use to manage design tokens?
Hygraph used Tokens Studio to export token values as JSON files and Style Dictionary to transform tokens into various formats. These tools enabled efficient management and synchronization of design tokens across the project. (Tokens Studio, Style Dictionary)
How does Hygraph handle theming and color modes in its website?
Hygraph uses CSS custom properties for theming, allowing easy switching between light, dark, and high-contrast modes. By defining CSS variables per theme, the team avoids bloated class names and simplifies maintenance. (Source)
What React library did Hygraph use for accessible components?
Hygraph used React Aria, a library of unstyled React components and hooks maintained by Adobe. React Aria provides accessibility features, proper aria attributes, and customizable options, enabling Hygraph to build custom components efficiently. (React Aria)
How does Hygraph's modular block approach benefit content editors?
Hygraph's modular blocks, composed of primitives, allow content editors to build and publish pages independently without needing a designer or developer. This speeds up workflows and empowers editors to manage content efficiently. (Source)
What types of block components are used in the Hygraph website?
Block components include Hero, Callout, LogoCloud, and Navbar. These are built from primitive components and can be customized with various props for different orientations, labels, or media. (Source)
How does Hygraph ensure accessibility in its website components?
Hygraph leverages React Aria for accessibility, which manages aria attributes, state, and interactions. This ensures that all components are accessible and meet industry standards. (React Aria)
What is the role of design thinking in Hygraph's website implementation?
Design thinking is central to Hygraph's modular website approach, encouraging iterative brainstorming and collaboration between designers and engineers. This ensures the website is adaptable, organized, and user-centric. (Source)
How does Hygraph enforce design system consistency in development?
Hygraph enforces consistency by restricting developers to use only the colors, typography, and spacing defined in the design system, avoiding arbitrary class names. This is achieved through Tailwind presets and CSS custom properties. (Source)
How does Hygraph enable quick theme switching on its website?
Hygraph enables quick theme switching by assigning theme-specific classes (e.g., .dark, .high-contrast) to the root HTML element, which updates CSS variables for background and other properties. This approach allows for easy addition of new themes. (Source)
What is the benefit of using CSS custom properties in Hygraph's design system?
CSS custom properties simplify theming, reduce maintenance overhead, and ensure that only approved design tokens are used. This approach streamlines the development process and enhances consistency across the website. (Source)
How does Hygraph's modular setup integrate with its CMS components?
The modular setup integrates seamlessly with Hygraph's CMS components, allowing for easy creation and management of pages using block and primitive components. This supports rapid development and flexible content management. (Source)
What is the impact of Hygraph's design system on productivity?
Hygraph's design system boosts productivity by enabling quick assembly of pages, reducing developer bottlenecks, and empowering content editors to manage content independently. This leads to faster feature development and easier maintenance. (Source)
How can I learn more about Hygraph's website implementation process?
You can read the full series of blog posts detailing Hygraph's website rewrite, design system, and content modeling at How Hygraph uses Hygraph.
Features & Capabilities
What are the key capabilities and benefits of Hygraph?
Hygraph offers a GraphQL-native architecture, content federation, enterprise-grade features (security, compliance, performance), user-friendly tools, scalability, proven ROI, high-performance endpoints, training and support, integration capabilities, and market recognition. These make it ideal for modern content management and digital experience delivery. (Source)
Does Hygraph support high-performance content delivery?
Yes, Hygraph is optimized for low latency and high read-throughput content delivery. Improvements include high-performance endpoints, a read-only cache endpoint with 3-5x latency improvement, and active GraphQL API performance measurement. (Source)
What APIs does Hygraph provide?
Hygraph offers multiple APIs: GraphQL Content API for querying/manipulating content, Management API for project structure, Asset Upload API for uploading assets, and MCP Server API for secure AI assistant communication. (API Reference)
What integrations are available with Hygraph?
Hygraph integrates with DAM systems (Aprimo, AWS S3, Bynder, Cloudinary, Imgix, Mux, Scaleflex Filerobot), hosting platforms (Netlify, Vercel), PIM (Akeneo), commerce solutions (BigCommerce), translation/localization (EasyTranslate), and more. (Marketplace)
Where can I find technical documentation for Hygraph?
Technical documentation is available at Hygraph Documentation, covering API reference, schema components, getting started guides, integrations, and AI features.
Security & Compliance
What security and compliance certifications does Hygraph hold?
Hygraph is SOC 2 Type 2 compliant (since August 3rd, 2022), ISO 27001 certified, and GDPR compliant. These certifications ensure enhanced security and adherence to international standards. (Secure Features)
How does Hygraph ensure data security?
Hygraph uses granular permissions, SSO integrations (OIDC/LDAP/SAML), audit logs, encryption in transit and at rest, regular backups, secure API policies, and SSL certificates for all endpoints. (Secure Features)
What compliance policies does Hygraph follow?
Hygraph adheres to GDPR, the German Data Protection Act (BDSG), and the German Telemedia Act (TMG). It provides processes for reporting security incidents and ensures secure connections for all project endpoints. (Secure Features)
Ease of Use & Implementation
How easy is it to implement Hygraph?
Hygraph can be implemented quickly, even for complex projects. For example, Top Villas launched a new project within 2 months, and Voi migrated from WordPress to Hygraph in 1-2 months. Structured onboarding, starter projects, and extensive documentation support fast adoption. (Source)
What feedback have customers given about Hygraph's ease of use?
Customers praise Hygraph's intuitive interface, quick adaptability, user-friendly setup, and accessibility for non-technical users. Reviews highlight instant front-end updates, clear setup, and granular roles/permissions that streamline workflows. (Source)
What resources are available for onboarding and training?
Hygraph offers structured onboarding, extensive documentation, starter projects, community Slack, webinars, live streams, and how-to videos for hands-on guidance and technical training. (Documentation)
Use Cases & Business Impact
What business impact can customers expect from using Hygraph?
Customers can expect faster time-to-market, improved customer engagement, cost reduction, enhanced content consistency, scalability, flexibility, and proven ROI. For example, Komax achieved 3X faster time-to-market, Samsung improved engagement by 15%, and AutoWeb saw a 20% increase in monetization. (Case Studies)
Who is the target audience for Hygraph?
Hygraph serves developers, content creators, product managers, marketing professionals, enterprises, high-growth companies, and organizations in SaaS, eCommerce, media, healthcare, automotive, and more. (Case Studies)
What industries are represented in Hygraph's case studies?
Hygraph is the first GraphQL-native Headless CMS, offering content federation, enterprise-grade features, user-friendly tools, scalability, and proven ROI. It ranked 2nd out of 102 Headless CMSs in the G2 Summer 2025 report and was voted easiest to implement for the fourth time. (Source)
Why should a customer choose Hygraph over alternatives?
Hygraph's GraphQL-native architecture, content federation, enterprise-grade features, intuitive interface, scalability, and proven ROI set it apart. Case studies show faster time-to-market and improved engagement. Market recognition includes ranking 2nd in G2 Summer 2025 and easiest implementation. (Source)
Throughout my career, I’ve consistently worked on either rewrites or brand-new projects—always by coincidence, never by choice. When I joined the Hygraph marketing team as a Frontend Developer about 2.5 years ago, I thought things might be different. However, after a rebranding project, the inevitable news arrived: we were going to rewrite our marketing website. Just as a side note, this still hasn’t changed. Currently, I’m leading the Baukasten Design System for Hygraph Studio. And yes, you guessed it - it's another rewrite.
In the first part of this article series, Dino Kukic, our Head of Demand Generation, explained the reasons why a rewrite, but to recap and expand on that, our old website was initially built with Gatsby, then at some point it was ported to Next.js and partially TypeScript. The codebase was a bit difficult to manage and there were a lot of inconsistencies with design. Adding new features or even pages was getting more and more difficult. Our schema was designed with a very early version of Hygraph without components and many new great features added throughout the years.
So, we decided to go with a rewrite, to build a more future proof website, utilizing the full potential of Hygraph. With my background in design and past experience, I felt it was the perfect time to build a Design System. This would allow us to design and develop primitive components like buttons, tags, tooltips, dialogs, and form fields, followed by larger reusable blocks that make up the web pages - such as hero sections, logo clouds, testimonials, callouts, and card grids.
This approach would give us a more organized, maintainable structure while boosting productivity when building new features and pages. A modular setup like this would also integrate seamlessly with Hygraph's components. To validate the idea, I built a small proof of concept—a basic design system and website project with a few primitive and block components powered by Hygraph, demonstrating how easily new pages could be created. After presenting it to our VP of marketing and CEO, we got the green light!
So we started with a new design system project. If you haven’t yet read about it, you can read more in this blog post. In this article, I will explain things from a bit more technical aspect.
Our foundational goals were maintainability, scalability, accessibility, and consistency. Anything serious you build, should be based upon a good foundation. Our design system was one of the key foundational elements, so we approached its planning with great care.
Building a design system involves a lot of iterative thinking and brainstorming, requiring close collaboration between designers and engineers. It’s a challenging task—not only are you solving current problems, but you also need to structure it in a way that's adaptable for future needs. Our ultimate goal was to create a modular website built with block components composed of primitives, making the process of designing, building, and publishing new pages seamless.
Styling and theming
There are many different tastes and preferences when it comes to styling. Some prefer writing vanilla CSS while others may want to go with a CSS in JS solution. These are all great options. I think it’s best to pick a solution the team is the most comfortable with. We picked Tailwind CSS as our styling solution.
There are some obvious reasons why we chose Tailwind, such as the ease of maintainability, utility-first approach and how simple it is to add responsive styles. However, one of the main factors that made Tailwind stand out was its extensive customizability. We were able to customize colors, spacing and typography to align perfectly with our design system requirements.
We started with a core palette. This step is explained in more detail in the previous blog post. Then we built our semantic tokens based on the core palette.
In essence, the core palette is the pool of colors you have in your design system. You can use it to build other palettes, typically the semantic palette and the illustration palette on a website project.
You might be wondering, why create a semantic palette and semantic tokens when we already have color tokens defined in the core palette. Simply because core tokens do not convey any meaning. You wouldn’t immediately know the use case for a color token like 'indigo-600,' but when you use a token named 'bg-primary,' it becomes clear that it's meant for surfaces where the primary color should be used.
Semantic tokens provide context and meaning, making it easier for designers and developers to understand when and where to apply specific colors. For example, you can define tokens for 'secondary' colors, or for interaction states like 'hover' and 'pressed.' This approach improves clarity and consistency, allowing the team to focus on intent rather than trying to remember specific color codes.
With our semantic palette in place, integrating these semantic class names into Tailwind CSS was straightforward. While building our design system tokens, we used a very useful plugin called Tokens Studio. It exports all the token values as a JSON file which you can even connect and sync to a GitHub repository. You can use this file to transform your tokens into any format you like. At this point, another amazing library called Style Dictionary would be a great help.
Tokens.json
{
"colors":{
"indigo":{
"600":{
"value":"#5b4cff",
"type":"color"
}
},
"grey":{
"600":{
"value":"#596a95",
"type":"color"
}
}
}
}
Using the JSON output, we first created our CSS custom properties (a.k.a CSS tokens or CSS variables) to be referenced in our custom Tailwind preset. So our tokens.css file looks like this:
tokens.css
:root {
--bg-primary:9176255;
--state-primary-hover:9176255/0.15;
--state-primary-pressed:9176255/0.25;
...
}
Now we could reference these values in our Tailwind preset.
This allowed us to enforce only the colors, typography and spacing class names available in our design system by avoiding any other built in Tailwind class names. So a developer wouldn’t be able to add a color like bg-red-300 out of nowhere.
Another big advantage of using CSS custom properties is the ease of theming. Tailwind CSS lets you add a dark theme using the dark: modifier. This works nicely but you have to go through all the files and add your style overrides and that’s a very tedious task. If you want to add another color theme, you’ll have to follow a similar process and not only your class names in your HTML will be bloated but also it will be a nightmare to maintain.
Instead, you can just create a new set of your CSS variables per theme. Here’s an example. Typically, the background color of your page will be white in a light theme, dark gray in a dark theme, and black in a high-contrast theme. For these scenarios, your CSS variables might be defined as follows:
:root {
/* Light mode: white */
--bg-base:255255255;
/* Dark mode: dark gray */
.dark{
--bg-base:101010;
}
/* High contrast mode: black */
.high-contrast {
--bg-base:000;
}
}
Tailwind CSS would generate the bg-base class name similar to this:
As you can see background-color property points to a CSS variable. Finally you can switch to dark and high contrast themes by assigning .dark and .high-contrast class names respectively to the root element in your page. For example, when you switch to dark theme, the HTML would look like this:
<html class=”dark”>
<body class=”bg-base”>
...
</body>
</html>
Needless to say, switching between themes requires some JavaScript code to assign the necessary class to the html element. Using this technique, you can add practically any number of color themes.
We needed over 40 primitive components, such as buttons, dialogs, and checkboxes—these are the smallest building blocks for any app. By using these, we could then assemble block components, bringing us one step closer to achieving our goal of a modular website.
Given the resources and time constraints, we wanted to use a battle tested underlying React library, which also gives us the accessibility features we needed. React Aria was a clear choice for us. It’s a great library of unstyled React components and hooks, built and maintained by a very professional team at Adobe, Inc. It provided us with great customization options, unlike any other headless component libraries.
React Aria takes all the heavy lifting by assigning proper aria attributes, managing the state and interactions and lets you structure and style your components the way you want. We were able to build some completely custom components using the hooks. If you do not feel comfortable using hooks, React Aria now also has React Aria Components, their headless component library built on top of React Aria.
Blocks are larger components of our website that enable quick page construction during both the design and implementation phases. They are crucial when content editors need to build and publish pages independently, without involving a designer or developer. These blocks are essentially made up of primitive components and include elements like Hero, Callout, LogoCloud, and Navbar. For instance, a Hero component might have an API that looks like this:
<Hero
title="Unlock your content's full potential"
description="The headless CMS powering content for mission-critical applications."
You can add various optional props for changing the orientation, adding a label or triggering a video dialog to have multiple variations of the same component. You should really adopt a design thinking approach in your team to achieve a modular website.
Building a new website on top of a design system is both challenging and rewarding. Our foundational goals helped us create a system that promotes consistency, accessibility, scalability, and modularity. By using Tailwind CSS for styling and theming, and React Aria Components for accessible components, we were able to keep our workflow efficient and clean.
I hope these insights are helpful for your next project. We’ve kept things brief, but many of the topics we touched on in this series could easily be explored in more depth. If you'd like to dive deeper into any specific area, feel free to reach out—we'd love to hear from you.
Blog Author
Özgür Uysal
Staff Engineer, Design System
Share with others
Sign up for our newsletter!
Be the first to know about releases and industry news and insights.