Skip to content

Commit 4b60097

Browse files
juristrFrozenPandaz
authored andcommitted
feat(nx-dev): add downloadable resources page and React book blog post
(cherry picked from commit 160b4cc)
1 parent b31f22b commit 4b60097

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+878
-2
lines changed

astro-docs/src/components/layout/Header.astro

Lines changed: 74 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,75 @@ const currentVersion = versions.find((v) => v.current);
262262
>Discord</span
263263
>
264264
</a>
265+
<a
266+
href={`${nxDevUrl}/resources-library?filterBy=book`}
267+
class="flex items-center gap-3 px-2 py-2 rounded-md no-underline hover:bg-slate-50 transition-colors dark:hover:bg-slate-800/60"
268+
>
269+
<svg
270+
class="w-5 h-5 text-slate-400 dark:text-slate-500"
271+
xmlns="http://www.w3.org/2000/svg"
272+
fill="none"
273+
viewBox="0 0 24 24"
274+
stroke-width="1.5"
275+
stroke="currentColor"
276+
>
277+
<path
278+
stroke-linecap="round"
279+
stroke-linejoin="round"
280+
d="M12 6.042A8.967 8.967 0 0 0 6 3.75c-1.052 0-2.062.18-3 .512v14.25A8.987 8.987 0 0 1 6 18c2.305 0 4.408.867 6 2.292m0-14.25a8.966 8.966 0 0 1 6-2.292c1.052 0 2.062.18 3 .512v14.25A8.987 8.987 0 0 0 18 18a8.967 8.967 0 0 0-6 2.292m0-14.25v14.25"
281+
></path>
282+
</svg>
283+
<span
284+
class="text-sm font-medium text-slate-900 dark:text-slate-200"
285+
>Books</span
286+
>
287+
</a>
288+
<a
289+
href={`${nxDevUrl}/resources-library?filterBy=case-study`}
290+
class="flex items-center gap-3 px-2 py-2 rounded-md no-underline hover:bg-slate-50 transition-colors dark:hover:bg-slate-800/60"
291+
>
292+
<svg
293+
class="w-5 h-5 text-slate-400 dark:text-slate-500"
294+
xmlns="http://www.w3.org/2000/svg"
295+
fill="none"
296+
viewBox="0 0 24 24"
297+
stroke-width="1.5"
298+
stroke="currentColor"
299+
>
300+
<path
301+
stroke-linecap="round"
302+
stroke-linejoin="round"
303+
d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m2.25 0H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z"
304+
></path>
305+
</svg>
306+
<span
307+
class="text-sm font-medium text-slate-900 dark:text-slate-200"
308+
>Case Studies</span
309+
>
310+
</a>
311+
<a
312+
href={`${nxDevUrl}/resources-library?filterBy=whitepaper`}
313+
class="flex items-center gap-3 px-2 py-2 rounded-md no-underline hover:bg-slate-50 transition-colors dark:hover:bg-slate-800/60"
314+
>
315+
<svg
316+
class="w-5 h-5 text-slate-400 dark:text-slate-500"
317+
xmlns="http://www.w3.org/2000/svg"
318+
fill="none"
319+
viewBox="0 0 24 24"
320+
stroke-width="1.5"
321+
stroke="currentColor"
322+
>
323+
<path
324+
stroke-linecap="round"
325+
stroke-linejoin="round"
326+
d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z"
327+
></path>
328+
</svg>
329+
<span
330+
class="text-sm font-medium text-slate-900 dark:text-slate-200"
331+
>Whitepapers</span
332+
>
333+
</a>
265334
</div>
266335
<!-- Right Column -->
267336
<div class="space-y-4">
@@ -445,7 +514,11 @@ const currentVersion = versions.find((v) => v.current);
445514
const tryNxCloudBtn = document.getElementById('header-try-nx-cloud-btn');
446515

447516
docsHomeLink?.addEventListener('click', () => {
448-
sendCustomEvent('documentation-click', 'header-navigation', 'documentation-header');
517+
sendCustomEvent(
518+
'documentation-click',
519+
'header-navigation',
520+
'documentation-header'
521+
);
449522
});
450523

451524
contactBtn?.addEventListener('click', () => {

astro-docs/src/content/docs/getting-started/nx-cloud.mdoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ description: Get started with using Nx Cloud and improve your PRs time to green.
44
filter: 'type:Features'
55
---
66

7-
{% youtube src="https://youtu.be/4VI-q943J3o" title="Fast CI for monorepos" width="100%" /%}
7+
{% youtube src="https://www.youtube.com/watch?v=cDBihpB3SbI" title="Nx and Nx Cloud" width="100%" /%}
88

99
CI is challenging and it's **not your fault**. It's a fundamental issue with how the current, traditional CI execution model works. Nx Cloud adopts a new **task-based** CI model which allows you to overcome slowness and unreliability of the current VM-based CI model.
1010
_(Dive deeper into the [task based CI execution model](https://nx.dev/blog/reliable-ci-a-new-execution-model-fixing-both-flakiness-and-slowness))_
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
---
2+
title: 'Book - React for Enterprise: Timeless Architecture for Enterprise Apps'
3+
slug: react-enterprise-book
4+
authors: ['Juri Strumpflohner']
5+
tags: [nx, react, enterprise, architecture]
6+
cover_image: /blog/images/articles/hero-enterprise-react-brainly.avif
7+
description: 'Learn how to bring order, automation, and long-term velocity to large React codebases with the new React Enterprise book by Przemysław Nowak from Brainly, written in collaboration with Nx.'
8+
---
9+
10+
When React first appeared, it was presented as a lightweight UI library, not just another opinionated frontend framework. This flexibility and freedom of choice appealed to many. Since then, a lot has changed, but several important questions remain. How should you structure a large React codebase? Where should business logic reside? How can you maintain consistency across numerous teams without slowing them down?
11+
12+
[Brainly](https://brainly.com/) is one of the world's largest educational platforms and has faced these exact challenges when scaling their React codebase. This new book - _React for Enterprise: Timeless Architecture for Enterprise Apps_ by Przemysław Nowak (Principal Engineer at Brainly), created in collaboration with Juri Strumpflohner (Nx) - distills their real-world lessons into battle-tested architectural patterns built on top of Nx.
13+
14+
## Why Architecture Matters
15+
16+
As React applications grow, the challenges shift from "how to build a component" to "how to maintain consistency across hundreds of components built by different teams." Without clear architectural guidelines:
17+
18+
- Business logic scatters across components, hooks, and utility files
19+
- Dependencies between modules become tangled and unpredictable
20+
- Code review focuses on style rather than structural integrity
21+
- Onboarding new developers takes weeks instead of days
22+
23+
The React Enterprise book shows how to solve these problems with a combination of architectural patterns and automated enforcement. By codifying your standards into Nx generators and boundary rules, your architecture becomes self-sustaining.
24+
25+
The patterns in this book are built on Przemysław Nowak's work with [Brainly Gene](https://github.com/brainly/gene), an enterprise React framework that has scaled to support multiple product teams, millions of users, and continuous deployment cycles. Combined with Nx's proven capabilities in monorepo management and developer tooling, you get a comprehensive guide for React teams tired of architectural drift and ready to turn chaos into velocity.
26+
27+
## What You'll Learn
28+
29+
The book outlines a practical, tool-supported approach to scaling React in real organizations:
30+
31+
- **Architectural layers** that separate concerns and prevent technical debt
32+
- **Module boundaries** that enforce dependencies and keep codebases maintainable
33+
- **Nx tooling** to automate standards, generate consistent code, and maintain architecture over time
34+
- **Real-world patterns** from production systems serving millions of users
35+
- **CI/CD integration** that validates your architecture on every commit
36+
37+
## Who This Book Is For
38+
39+
This book is for engineers in large organizations navigating complex architectures built by multiple teams, and for teams managing long-lived React products that need to stay maintainable as they scale. It's equally valuable for greenfield projects: starting with the right foundations now means avoiding architectural rework later.
40+
41+
Tech leads, principal engineers, and architects actively shaping React standards across their organization will find practical guidance for building internal frameworks and aligning teams without slowing them down. But individual developers will benefit too, gaining insight into how architectural decisions impact daily work and why certain patterns emerge in large-scale systems.
42+
43+
Whether you're maintaining legacy code, cleaning up technical debt, or building a new product from scratch, this book provides a principled, tool-supported approach to React at scale.
44+
45+
---
46+
47+
👉 [Download the free React Enterprise book (PDF)](https://bit.ly/3J3cern)
48+
49+
---
50+
51+
Learn more:
52+
53+
- 🧠 [Nx Docs](/docs)
54+
- 👩‍💻 [Nx on CI](/docs/getting-started/nx-cloud)
55+
- ⬇️ [Other books and resources](/resources-library)
56+
- 💬 [Nx Official Discord Server](https://go.nx.dev/community)
57+
- 📹 [Nx Youtube Channel](https://www.youtube.com/@nxdevtools)
21.6 KB
Binary file not shown.
177 KB
Loading

nx-dev/nx-dev/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
"@nx/nx-dev-ui-sponsor-card": "workspace:*",
3737
"@nx/nx-dev-ui-fence": "workspace:*",
3838
"@nx/nx-dev-ui-blog": "workspace:*",
39+
"@nx/nx-dev-ui-resources": "workspace:*",
3940
"@nx/nx-dev-ui-ai-landing-page": "workspace:*",
4041
"@nx/nx-dev-ui-brands": "workspace:*",
4142
"@nx/nx-dev-ui-cloud": "workspace:*",
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import { DefaultLayout } from '@nx/nx-dev-ui-common';
2+
import type { ReactElement } from 'react';
3+
import { NextSeo } from 'next-seo';
4+
import { ResourceContainer } from '@nx/nx-dev-ui-resources';
5+
import { Resource } from '@nx/nx-dev-ui-resources';
6+
7+
export async function getStaticProps() {
8+
const fs = require('fs');
9+
const path = require('path');
10+
11+
const resourcesPath = path.join(process.cwd(), 'public/data/resources.json');
12+
const resourcesData = fs.readFileSync(resourcesPath, 'utf8');
13+
const resources: Resource[] = JSON.parse(resourcesData);
14+
15+
return {
16+
props: {
17+
resources,
18+
},
19+
};
20+
}
21+
22+
interface ResourcesPageProps {
23+
resources: Resource[];
24+
}
25+
26+
export function ResourcesPage({ resources }: ResourcesPageProps): ReactElement {
27+
return (
28+
<>
29+
<NextSeo
30+
title="Resources Library - Nx"
31+
description="Download whitepapers, books, case studies, and cheatsheets to learn more about Nx and modern development practices."
32+
openGraph={{
33+
url: 'https://nx.dev/resources-library',
34+
title: 'Resources Library - Nx',
35+
description:
36+
'Download whitepapers, books, case studies, and cheatsheets to learn more about Nx and modern development practices.',
37+
images: [
38+
{
39+
url: 'https://nx.dev/socials/nx-media.png',
40+
width: 800,
41+
height: 421,
42+
alt: 'Nx: Smart Repos · Fast Builds',
43+
type: 'image/jpeg',
44+
},
45+
],
46+
siteName: 'Nx',
47+
type: 'website',
48+
}}
49+
canonical="https://nx.dev/resources-library"
50+
/>
51+
<DefaultLayout hideBackground={false}>
52+
<ResourceContainer resources={resources} />
53+
</DefaultLayout>
54+
</>
55+
);
56+
}
57+
58+
export default ResourcesPage;
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
[
2+
{
3+
"id": "angular-enterprise-patterns",
4+
"title": "Enterprise Monorepo Angular Patterns",
5+
"description": "The official Angular enterprise book from the Nx team. Learn proven patterns and best practices for building enterprise-grade Angular applications in a monorepo.",
6+
"category": "book",
7+
"coverImage": "/images/resources/book-angular-enterprise.avif",
8+
"downloadUrl": "https://go.nx.dev/angular-patterns-ebook",
9+
"publishDate": "2024-01-01"
10+
},
11+
{
12+
"id": "react-enterprise-architecture",
13+
"title": "React for Enterprise: Timeless Architecture for Enterprise Apps",
14+
"description": "Community resource: Learn timeless architecture patterns for building scalable React applications. By Przemyslaw Nowak (Brainly) in collaboration with the Nx Core Team.",
15+
"category": "book",
16+
"coverImage": "/images/resources/book-react-enterprise-nowak.avif",
17+
"downloadUrl": "https://bit.ly/3J3cern",
18+
"publishDate": "2025-10-23"
19+
},
20+
{
21+
"id": "financial-institution-case-study",
22+
"title": "Financial Institution Case Study",
23+
"description": "$28B Fortune 500 financial institution reduces CI times by 79% with Nx Cloud.",
24+
"category": "case-study",
25+
"coverImage": "/images/resources/case-study-financial-institution.avif",
26+
"downloadUrl": "https://go.nx.dev/financial-case-study",
27+
"publishDate": "2024-11-26"
28+
},
29+
{
30+
"id": "banking-case-study",
31+
"title": "Banking Case Study",
32+
"description": "$7B European bank cuts CI times by 62% and boosts team productivity.",
33+
"category": "case-study",
34+
"coverImage": "/images/resources/case-study-bank-eu.avif",
35+
"downloadUrl": "https://go.nx.dev/banking-case-study",
36+
"publishDate": "2024-11-26"
37+
},
38+
{
39+
"id": "fast-ci-whitepaper",
40+
"title": "Fast CI Whitepaper",
41+
"description": "Learn how to optimize your CI pipeline for speed and efficiency with Nx Cloud.",
42+
"category": "whitepaper",
43+
"coverImage": "/images/resources/whitepaper-fast-ci.avif",
44+
"downloadUrl": "https://bit.ly/4oeIjvK",
45+
"publishDate": "2024-01-01"
46+
},
47+
{
48+
"id": "nx-enterprise-pov",
49+
"title": "Nx Enterprise Proof Of Value",
50+
"description": "Discover how Nx Enterprise transforms development workflows and accelerates delivery at scale with a hands-on proof of value.",
51+
"category": "whitepaper",
52+
"coverImage": "/images/resources/whitepaper-nx-enterprise-pov.avif",
53+
"downloadUrl": "https://bit.ly/43y7xfW",
54+
"publishDate": "2024-01-01"
55+
},
56+
{
57+
"id": "mini-angular-cheatsheet-2025",
58+
"title": "Mini Angular Cheatsheet",
59+
"description": "Quick reference guide for Angular development with essential commands and patterns.",
60+
"category": "cheatsheet",
61+
"coverImage": "/images/resources/cheatsheet-angular.avif",
62+
"downloadUrl": "https://bit.ly/4oEaZ0Y",
63+
"publishDate": "2025-01-01"
64+
},
65+
{
66+
"id": "mini-react-cheatsheet-2025",
67+
"title": "Mini React Cheatsheet",
68+
"description": "Quick reference guide for React development with essential commands and patterns.",
69+
"category": "cheatsheet",
70+
"coverImage": "/images/resources/cheatsheet-react.avif",
71+
"downloadUrl": "https://bit.ly/4qrv6B6",
72+
"publishDate": "2025-01-01"
73+
},
74+
{
75+
"id": "nx-cloud-one-pager-2025",
76+
"title": "Nx Cloud One-Pager",
77+
"description": "A concise overview of Nx Cloud features and benefits for CI/CD optimization.",
78+
"category": "cheatsheet",
79+
"coverImage": "/images/resources/cheatsheet-nx-cloud.avif",
80+
"downloadUrl": "https://bit.ly/47Cq6SG",
81+
"publishDate": "2025-01-01"
82+
},
83+
{
84+
"id": "module-federation-quick-start",
85+
"title": "Module Federation Quick Start Guide",
86+
"description": "Get started with Module Federation for building micro-frontends with Nx.",
87+
"category": "cheatsheet",
88+
"coverImage": "/images/resources/cheatsheet-module-federation.avif",
89+
"downloadUrl": "https://bit.ly/49jkrlM",
90+
"publishDate": "2024-01-01"
91+
},
92+
{
93+
"id": "nx-enterprise-overview-2025",
94+
"title": "Nx Enterprise Overview",
95+
"description": "A concise overview of Nx Enterprise features and benefits.",
96+
"category": "whitepaper",
97+
"coverImage": "/images/resources/whitepaper-nx-enterprise-overview.avif",
98+
"downloadUrl": "https://bit.ly/43y5mJi",
99+
"publishDate": "2025-01-01"
100+
}
101+
]
Lines changed: 7 additions & 0 deletions
Loading
Lines changed: 7 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)