How do I start building a learning platform with Next.js 13 and Hygraph?
Begin by creating a Next.js 13 project using the App Router. You can clone the Hygraph learning platform schema to get started quickly. Follow the interactive setup prompts and configure your project as described in the tutorial. For details, see the full guide.
What are the requirements for integrating Hygraph with Next.js 13?
You need a basic understanding of React and Next.js. The integration uses the App Router, Tailwind CSS, and Hygraph's Content API. You can clone the Hygraph project schema for a quick start. See the requirements section for details.
How do I set up API access for my Hygraph project?
Navigate to your Hygraph project's settings, click on API Access, and set the public content API to its default. Copy the Content API endpoint URL and add it to your Next.js project's .env.local file as HYGRAPH_ENDPOINT.
How long does it take to implement Hygraph for a new project?
Implementation time varies by project complexity. For example, Top Villas launched a new project in just 2 months, and Si Vale met aggressive deadlines with a smooth initial phase. Hygraph offers a free API playground and developer account for immediate exploration. See case study.
Is there a structured onboarding process for Hygraph?
Yes, Hygraph provides a structured onboarding process including introduction calls, account provisioning, business and technical kickoffs, content schema planning, and access to training resources like webinars and documentation. Learn more.
Technical Features & Capabilities
What APIs does Hygraph offer for developers?
Hygraph provides multiple APIs: Content API (read/write), High Performance Content API (low latency, high throughput), MCP Server API (AI assistant integration), Asset Upload API, and Management API. See the API Reference for details.
How do I render rich text content from Hygraph in a Next.js app?
Use the @graphcms/rich-text-react-renderer package to convert Hygraph's rich text JSON objects to HTML in your React components. Pass the body JSON and references to the RichText component for easy rendering.
Can I create dynamic routes for courses and lessons using Hygraph data?
Yes, you can use Next.js 13's App Router to create dynamic routes for courses and lessons. Fetch course and lesson data from Hygraph using GraphQL queries and display them in your app's dynamic pages.
What technical documentation is available for Hygraph?
Hygraph offers extensive documentation covering API reference, schema components, references, webhooks, and AI integrations. Access all resources at Hygraph Documentation.
Does Hygraph support integration with other platforms?
Yes, Hygraph integrates with Digital Asset Management systems (Aprimo, AWS S3, Bynder, Cloudinary, Imgix, Mux, Scaleflex Filerobot), Adminix, Plasmic, and supports custom integrations via SDK and APIs. Explore the Marketplace for pre-built apps.
What performance optimizations does Hygraph offer?
Hygraph features high-performance endpoints for low latency and high read-throughput, actively measures GraphQL API performance, and provides best practices for optimization. See the performance blog and GraphQL Report 2024.
Pricing & Plans
What pricing plans does Hygraph offer?
Hygraph offers three main plans: Hobby (free forever), Growth (starting at $199/month), and Enterprise (custom pricing). Each plan includes different limits and features tailored to individual, small business, and enterprise needs. See pricing details.
What features are included in the Hobby plan?
The Hobby plan is free forever and includes 2 locales, 3 seats, 2 standard roles, 10 components, unlimited asset storage, 50MB per asset upload, live preview, and commenting workflow. Sign up here.
What does the Growth plan cost and include?
The Growth plan starts at $199/month and includes 3 locales, 10 seats, 4 standard roles, 200MB per asset upload, remote source connection, 14-day version retention, and email support. Get started.
What features are available in the Enterprise plan?
The Enterprise plan offers custom limits, scheduled publishing, dedicated infrastructure, global CDN, security controls, SSO, multitenancy, backup recovery, custom workflows, and dedicated support. Try for 30 days or request a demo.
Security & Compliance
What security certifications does Hygraph have?
Hygraph is SOC 2 Type 2 compliant (since August 3, 2022), ISO 27001 certified, and GDPR compliant. These certifications ensure robust security and data protection. Learn more.
How does Hygraph ensure data security and compliance?
Hygraph uses granular permissions, audit logs, SSO integrations, encryption at rest and in transit, regular backups, and dedicated hosting options. Customers can report security incidents via a dedicated process. See details.
Yes, Hygraph integrates multiple data sources without duplication, ensuring consistent and efficient content delivery across channels. This is a key differentiator for global teams. Learn more.
How does Hygraph help with localization and asset management?
Hygraph provides advanced localization features and integrates with leading asset management platforms, making it ideal for global brands managing content in multiple languages and regions.
Is Hygraph easy to use for non-technical users?
Yes, Hygraph's intuitive editor UI and custom app integration allow non-technical users to manage content independently, reducing bottlenecks and improving workflow. Real-time changes are visible on the frontend. See feedback.
Use Cases & Industries
What industries use Hygraph?
Hygraph is used in SaaS, marketplace, education technology, media and publication, healthcare, consumer goods, automotive, technology, fintech, travel, food and beverage, eCommerce, agency, online gaming, events, government, consumer electronics, engineering, and construction. See case studies.
Who is the target audience for Hygraph?
Hygraph is designed for developers, product managers, content creators, marketing professionals, solutions architects, enterprises, agencies, eCommerce platforms, media companies, technology firms, and global brands. Learn more.
Can you share some customer success stories with Hygraph?
Notable customers include Samsung (scalable API-first app), Dr. Oetker (MACH architecture), Komax (3x faster time to market), AutoWeb (20% monetization increase), BioCentury (accelerated publishing), Voi (multilingual scaling), HolidayCheck (reduced bottlenecks), and Lindex Group (global content delivery). See all stories.
What business impact can customers expect from using Hygraph?
Customers report improved operational efficiency, accelerated speed-to-market, cost efficiency, enhanced scalability, and better customer engagement. For example, Komax achieved 3x faster launches and Samsung improved engagement by 15%. See impact.
How does Hygraph differentiate itself in solving these pain points?
Hygraph stands out with its GraphQL-native architecture, content federation, user-friendly interface, cost efficiency, robust APIs, Smart Edge Cache, and advanced localization and asset management. These features enable faster updates, easier integration, and global scalability. Learn more.
What feedback have customers given about Hygraph's ease of use?
Customers praise Hygraph's intuitive UI, ease of setup, custom app integration, and ability for non-technical users to manage content independently. Some users note that complex projects may require more technical expertise. See feedback.
Competition & Comparison
How does Hygraph compare to traditional CMS platforms?
Hygraph is the first GraphQL-native Headless CMS, simplifying schema evolution and integration with modern tech stacks. Unlike traditional CMSs that rely on REST APIs, Hygraph offers content federation, user-friendly tools, and enterprise-grade features for scalability and global delivery. See comparison.
Why choose Hygraph over alternatives like Sanity, Prismic, or Contentful?
Hygraph differentiates itself with GraphQL-native architecture, content federation, Smart Edge Cache, and proven ROI (e.g., Komax 3x faster launches, Samsung 15% engagement increase). It ranked 2nd out of 102 Headless CMSs in the G2 Summer 2025 report for ease of implementation. See ranking.
What makes Hygraph the easiest to implement among headless CMSs?
Hygraph has been voted the easiest to implement headless CMS four times, according to G2 reports. Its intuitive UI, free developer account, and structured onboarding make it accessible for both technical and non-technical users. See report.
Support & Resources
What support resources are available for Hygraph users?
Hygraph offers webinars, live streams, how-to videos, extensive documentation, and a community Slack channel for quick assistance. Access documentation or join Slack.
Creating a learning platform with Next.js 13 app router
Based on the schema and content model we created in the previous part of this series, we will produce a Next.js site using Hygraph data.
Written by Bryan
on May 11, 2023
A content model is nothing until it has content and a frontend. In the last part of this series, we explored a basic schema and content model for a learning platform with Hygraph. In this article, we’ll take that schema and produce a Next.js site using data from Hygraph.
This project uses Next.js 13 and the new App router. This will give us the most flexibility to extend the project in future installments using React Server Components to handle authentication and interactivity. A basic understanding of React and Next.js will help you through this article. If you didn't follow through the content model article, you can clone the Hygraph project here to get started with this article.
To start, we need to initialize a new Next.js 13 project. Open up your terminal and navigate to where you want your project, then run the following command:
npx create-next-app learning-platform
The interactive setup will ask you questions to configure your project. Initialize with the following answers:
Typescript: No
ESLint: Yes
Tailwind CSS: Yes
src/ directory: No
App Router: Yes
Import alias: No
Once the options are chosen, the CLI will install all the necessary pieces to run your Next.js site.
We’re not entirely done with our setup yet, however. We need to adjust the default Tailwind styling that Next.js gives us from the installation.
Update the global CSS rules in app/globals.css to remove the extra styling and leave the file with the following Tailwind imports:
@tailwind base;
@tailwind components;
@tailwind utilities;
That’s all the initial setup we need for the Next.js project, but let’s set up our Hygraph project as well. We’ll start with the learning platform schema created in the first article in this series. To make it accessible to our Next.js project,mustd to open permissions on the Content API.
To do this, navigate to your project’s settings and click on API Access. To start, let’s set the public content API to its default. This will give us access to all the content in our models to read into our project. From this same screen, grab the Content API endpoint URL.
Create a new file in the root of your project named .env.local and add the variable HYGRAPH_ENDPOINT. This will be where we add the endpoint we copied from Hygraph.
HYGRAPH_ENDPOINT=YOUR-URL-HERE
From here, we can run the site and implement the frontend.
After the first article in this series, you should have a little content added to your Hygraph project. We’ll use that content to populate the homepage with a list of courses.
In Next.js 13’s App router structure, the homepage file is page.jsx directly in the app directory. The default file comes with a lot of Next.js promotional material; let’s eliminate all that and add a structure for displaying the courses.
This will add the h1 to the page and give us space to import our courses.
From here, we need a function to fetch the courses. In the new App setup, we don’t need to worry about setting up static paths or props; we need to create a function to fetch the data and then call that function inside our component. In the following code, we set up getCourses to fetch all courses from Hygraph with the data we need to populate the list. In this case, also note the query includes getting the modules for a course. This is so we can check if any module is locked in the data. While we won’t lock them in this demo, we’ll display a lock symbol next to each title with this.
Dynamic routes function slightly differently in the app directory, but the start is similar. We need a new directory for our dynamic route. Add a courses directory to the app directory.
We’ll add our dynamic route inside this directory, but not as a file as we would in the pages directory. Instead, we’ll add it as a directory. This would allow us to take advantage of all the file-based templates we might want. Name this directory [slug] and add a page.jsx inside it. This file is the template for each course page.
Then we’ll get the end of our URL as the slug variable in our template and can use it from there. To start, let’s get a basic template set up.
<h1className="text-3xl font-bold">Course title here for {params.slug}</h1>
</main>
</div>
);
}
This contains a sidebar for the course’s navigation and a main area for the content of this page. Right now, we’re not dynamically pulling data, though. Let’s fix that by using the slug from our parameters and passing that to a query to Hygraph.
We’ll create a new async function in the page file to fetch a course by the slug. We’ll get all the data we need to display: title, content, modules, and lessons from the relational fields attached to the model. The relational data will be used to build our course navigation.
Once that’s saved, we should now have the title displayed on the course page.
Our next task is to get the rich text content for the course.
Converting a Rich Text AST object to HTML with Hygraph’s RTE React component
The rich text from Hygraph can come through as a JSON object. This can be fully customized for our frontend via the Rich Text React Renderer. To use this, we need to install it first.
npm install @graphcms/rich-text-react-renderer
This will give us access to the easiest way to render rich text in a React application.
To use it, we need to pass the body JSON object to the component along with the references for the embeds in the rich text (in this case, assets and potentially references to lessons).
Start by importing the RichText component at the top of the file.
This is now ready to use in our content body. Before displaying the component, we also need to check if courseData.body exists, since it’s not a required field. If the data didn’t exist, the page would error instead of displaying.
Once those changes are in, we have the body for the course displayed, including any images you may have added.
Now, let’s work on the course navigation.
Setting up the course navigation with modules and lessons
Since this will be on multiple pages, let’s abstract the navigation to its own component. Start by creating a new components directory inside the app directory. This will house our shared components.
Create a Navigation.jsx file with HTML from the course page.
Once that data is passed to our component, we can build out the navigation by looping through the module and lesson data. We can even check if the module is locked and add the lock icon as we did on the homepage.
Now we have a full course page complete with navigation. Note in the code that we’re also checking for a matching lessonId. We haven’t passed that in yet, but this will be how we deal with active states in the navigation in the next section.
The navigation links are all broken, though. That’s because we haven’t created those dynamic routes yet.
Nesting lesson dynamic routes in the Next.js app router
To create the lesson routes, we want to nest them under the course. To nest the route in Next.js, the new directory should live under /app/courses/[slug] to nest this route under the appropriate course route. In this case, we'll name that directory lessons and put an [id] directory inside. This [id] directory is where we'll put the new page.jsx file that will create our page. This will pass an ID to our parameters allowing us to query Hygraph to fetch the appropriate lesson data.
This query is a bit more complicated. Not only do we need to get the lesson with a matching ID, but we also need deeper information about the course and module to build the navigation properly.
So far in this series, we’ve created a content model for our learning platform and we’ve implemented the simple frontend in Next.js.
From here, put some more content in Hygraph, explore how it affects the frontend, and work on any styling you’d like to update.
In the next post in the series, we’ll work on locking the locked lessons and integrating with an authentication platform to check whether a user can access the content.
Blog Author
Bryan Robinson
Head of Developer Relations
Bryan is Hygraph's Head of Developer Relations. He has a strong passion for developer education and experience as well as decoupled architectures, frontend development, and clean design.
Share with others
Sign up for our newsletter!
Be the first to know about releases and industry news and insights.