SlideShare a Scribd company logo
Understanding
monorepos
@PhilipJFulcher
@bencabanes nx.dev • nrwl.io powered by
Hi 👋

I’m Benjamin Cabanes
🇨🇦 · 🐬
Javascript Architect @ Nrwl

Nx Core Team
@bencabanes
@PhilipJFulcher
@bencabanes powered by
Hi 👋

I’m Philip Fulcher
🇺🇸 · 🐬
Nx Core Team Member
@philipjfulcher
@PhilipJFulcher
@bencabanes powered by
Why do companies
use monorepos?
@PhilipJFulcher
@bencabanes powered by
SHORT
ANSWER?
@PhilipJFulcher
@bencabanes powered by
Why do companies use
monorepos?
• Manage complexity
• Organization-wide best
practices
• Maximizing shared code
• Consistency & predictability in
code
• Discoverability and
communication
• Foster collaboration
@PhilipJFulcher
@bencabanes powered by
LONG
ANSWER?
@PhilipJFulcher
@bencabanes powered by
Let’s talk about
monorepos…
@PhilipJFulcher
@bencabanes powered by
What is a
monorepo?
@PhilipJFulcher
@bencabanes powered by
A monorepo is a single repository
containing multiple distinct projects,
with well-de
fi
ned relationships.
@PhilipJFulcher
@bencabanes powered by
A monorepo is a single repository
containing multiple distinct projects,
with well-de
fi
ned relationships.
@PhilipJFulcher
@bencabanes powered by
A monorepo is a single repository
containing multiple distinct projects,
with well-de
fi
ned relationships.
@PhilipJFulcher
@bencabanes powered by
@PhilipJFulcher
@bencabanes powered by
You projects in the
same place
• High level view of projects
• Allows collaboration
• Removes assumptions
• Project discoverability
• Code reuse
• Architecture discoverability
@PhilipJFulcher
@bencabanes powered by
@PhilipJFulcher
@bencabanes powered by
✋ Monolith ≠ Monorepo ✋
@PhilipJFulcher
@bencabanes powered by
Monolith & Monorepo are different concepts

A monorepo is about code organization
A monolith is about code linking and particular type of deployment
@PhilipJFulcher
@bencabanes powered by
@PhilipJFulcher
@bencabanes powered by
A monorepo is a single repository
containing multiple distinct projects,
with well-de
fi
ned relationships.
@PhilipJFulcher
@bencabanes powered by
Well-de
fi
ned relationships are
used by tooling to provide
automation & assistance
@PhilipJFulcher
@bencabanes powered by
00
V1
Date
Presentation Subtitle
Presentation Title
@PhilipJFulcher
@bencabanes powered by
Cross-project changes
Architecture awareness
Relationships
are key
Performance with
smart commands
Project graph
Projects discoverability & always
up to date visual representation
Test/build only affected code
Identify relations & contracts
Smart code generation
Adds a smart layer to
project relationships
@PhilipJFulcher
@bencabanes powered by
Smarter tooling
Better DX
Collaboration & Productivity increase
@PhilipJFulcher
@bencabanes powered by
Wait. So what’s wrong
with my polyrepo setup? 🤔
@PhilipJFulcher
@bencabanes powered by
Well, nothing is really
*wrong*. It’s just…
@PhilipJFulcher
@bencabanes powered by
Polyrepos have a high
cost of maintenance.
@PhilipJFulcher
@bencabanes powered by
Polyrepos are dif
fi
cult
to scale.
@PhilipJFulcher
@bencabanes powered by
A common situation
with polyrepos
Let’s share
some code!
@PhilipJFulcher
@bencabanes powered by
Sharing code with
polyrepos
4/ Write the shareable code
5/ CI & CD checks
6/ Deploy & publish to registry
1/ Create repository, setting
permissions, team management
2/ Setup CI & CD (waiting from
IT team)
3/ Setup tooling for build, serve,
lint …
@PhilipJFulcher
@bencabanes powered by
- Write the shared code
Sharing code with
monorepos
- Test consuming projects
directly from where you are.
All changes are done in a single PR
Consumers are all tested (high con
fi
dence)

No externals, faster merge and release
- Use existing code, tooling
@PhilipJFulcher
@bencabanes powered by
Sharing code with
polyrepos
- depends on published artefacts
- Changes, PRs, Code reviews, CI/
CD runs times “n” for each repo
- Takes time to complete and
start using the shared code.
@PhilipJFulcher
@bencabanes powered by
Sharing code with
polyrepos
A: v1.0
B: v1.0 C: v1.0
D: v1.0
A: v1.0
B: v1.0 C: v1.1
B: v1.0 C: v1.1
A: v1.0
B: v1.0 C: v1.1
D: v1.0 D: v1.1
😨
😎 😱
💎The Diam
on
d Dependency Problem 💎
@PhilipJFulcher
@bencabanes powered by
Polyrepos creates silos &
makes collaboration
harder.
@PhilipJFulcher
@bencabanes powered by
It is easy to do the wrong
things when working in
silos.
@PhilipJFulcher
@bencabanes powered by
Polyrepos and monoliths
are pretty common.
@PhilipJFulcher
@bencabanes powered by
@PhilipJFulcher
@bencabanes powered by
The industry has moved to the
polyrepo to get team autonomy.
@PhilipJFulcher
@bencabanes powered by
Autonomy by isolation
harms collaboration.
@PhilipJFulcher
@bencabanes powered by
What about
monorepos then?
@PhilipJFulcher
@bencabanes powered by
Monorepos do
relationships analysis
@PhilipJFulcher
@bencabanes powered by
One version of everything
03
Atomic commit across projects
02
No overhead to create new projects
01
Developer mobility
05
Consistent tooling
04
Monorepos
bene
fi
ts
@PhilipJFulcher
@bencabanes powered by
I can’t use a monorepo.
I do micro frontends. 😏
@PhilipJFulcher
@bencabanes powered by
Again, a common
misconception.
@PhilipJFulcher
@bencabanes powered by
No more assumptions,
all the code is here,
easier to debug with monorepos
@PhilipJFulcher
@bencabanes powered by
A monorepo makes micro-
frontends easier & manageable
@PhilipJFulcher
@bencabanes powered by
If everyone has access to
everything. Then it’s
unmanageable. Right? 😱
@PhilipJFulcher
@bencabanes powered by
Again, a common
misconception.
@PhilipJFulcher
@bencabanes powered by
Polyrepo
code ownership?
No high level overview
No structure
Everyone can depend on everything
Permissions per repository
@PhilipJFulcher
@bencabanes powered by
Monorepo

code ownership
High level overview
Visible structure & enforced by tooling
Clear hierarchy and dependencies
Granular access:
- constraints per import
- constraints per folder
- constraints per project
- custom constraints with tooling
@PhilipJFulcher
@bencabanes powered by
Relationships are key to
monorepos
@PhilipJFulcher
@bencabanes powered by
00
V1
Date
Presentation Subtitle
Presentation Title
Why is Nx the right
tool for your
Monorepo?
@PhilipJFulcher
@bencabanes powered by
Not just code
colocation
@PhilipJFulcher
@bencabanes powered by
Projects
@PhilipJFulcher
@bencabanes powered by
Knowledge Base

feat-knowledge-base
Live Chat

feat-live-chat
Support Tickets
feat-support-tickets
New Ticket
feat-new-ticket
Libraries
Customer Service App
App
@PhilipJFulcher
@bencabanes powered by
- Name
- Path Alias
- Well-de
fi
ned API
Each project
has
@PhilipJFulcher
@bencabanes powered by
cart-ui-components
@PhilipJFulcher
@bencabanes powered by
@myorg/cart/ui-components
@PhilipJFulcher
@bencabanes powered by
@PhilipJFulcher
@bencabanes powered by
Well-De
fi
ned
Relationships
@PhilipJFulcher
@bencabanes powered by
Tags
@PhilipJFulcher
@bencabanes powered by
Module
Boundaries
@PhilipJFulcher
@bencabanes powered by
Microfrontends 😎
@PhilipJFulcher
@bencabanes powered by
Superpowered
Micro Frontends with
Monorepos
@PhilipJFulcher
@bencabanes powered by
Speeding up day-to-
day development
@PhilipJFulcher
@bencabanes powered by
Targets
@PhilipJFulcher
@bencabanes powered by
Testing
@PhilipJFulcher
@bencabanes powered by
Affected Commands
- affected:test
- affected:build
- affected:e2e
@PhilipJFulcher
@bencabanes powered by
Never run the same target
twice.
@PhilipJFulcher
@bencabanes powered by
Nx Cloud
@PhilipJFulcher
@bencabanes powered by
Into the (Nx) Clouds
@PhilipJFulcher
@bencabanes powered by
Atomic Changes
@PhilipJFulcher
@bencabanes powered by
Project
Graph
@PhilipJFulcher
@bencabanes powered by
Affected Commands
- affected:test
- affected:build
- affected:e2e
@PhilipJFulcher
@bencabanes powered by
Experimentation
@PhilipJFulcher
@bencabanes powered by
Generators
@PhilipJFulcher
@bencabanes powered by
Workspace Generators
@PhilipJFulcher
@bencabanes powered by
Keys take away on
monorepos
@PhilipJFulcher
@bencabanes powered by
Monorepos are not just about
code colocation
@PhilipJFulcher
@bencabanes powered by
Well-de
fi
ned relationships between
isolated units of code are essential
@PhilipJFulcher
@bencabanes powered by
Good tools & automation are needed for
a monorepo to scale with the
organization
@PhilipJFulcher
@bencabanes powered by
nx.dev
monorepo.tools
@PhilipJFulcher
@bencabanes powered by

More Related Content

PPTX
Micro frontend
PDF
Netflix Global Cloud Architecture
DOCX
Ntcc report final report shubham
PDF
Micro Frontends
PDF
Practical Microservice Architecture (edition 2022).pdf
PPTX
Mono Repo
PDF
Using patterns and pattern languages to make better architectural decisions
PDF
Microservices Architectures: Become a Unicorn like Netflix, Twitter and Hailo
Micro frontend
Netflix Global Cloud Architecture
Ntcc report final report shubham
Micro Frontends
Practical Microservice Architecture (edition 2022).pdf
Mono Repo
Using patterns and pattern languages to make better architectural decisions
Microservices Architectures: Become a Unicorn like Netflix, Twitter and Hailo

What's hot (20)

PPTX
Advantages and disadvantages of a monorepo
PDF
Monorepo at Pinterest
PDF
GitOps with ArgoCD
PDF
Introducing GitLab (June 2018)
PPTX
Master the Monorepo
ODP
Devops Devops Devops
PDF
What is Jenkins | Jenkins Tutorial for Beginners | Edureka
PDF
Introduction to CICD
PDF
Introduction to Git
PDF
CI/CD (DevOps) 101
PDF
Introduction to docker
PDF
"DevOps > CI+CD "
PPTX
Jenkins CI
PDF
CD using ArgoCD(KnolX).pdf
PDF
Docker 101: Introduction to Docker
PPTX
Microservices
PPTX
Git branching strategies
PPTX
Introduction to jenkins
PDF
Introducing GitLab (September 2018)
PDF
Jenkins
Advantages and disadvantages of a monorepo
Monorepo at Pinterest
GitOps with ArgoCD
Introducing GitLab (June 2018)
Master the Monorepo
Devops Devops Devops
What is Jenkins | Jenkins Tutorial for Beginners | Edureka
Introduction to CICD
Introduction to Git
CI/CD (DevOps) 101
Introduction to docker
"DevOps > CI+CD "
Jenkins CI
CD using ArgoCD(KnolX).pdf
Docker 101: Introduction to Docker
Microservices
Git branching strategies
Introduction to jenkins
Introducing GitLab (September 2018)
Jenkins
Ad

Similar to Understanding Monorepos (20)

PDF
Moving to a DevOps mode - easy, hard or just plain terrifying? - Daniel Bryan...
PDF
JAX London 2014 "Moving to DevOps Mode: easy, hard or just plain terrifying?"
PDF
I broke what? Taking over maintenance on existing (well loved) projects, by B...
PDF
I broke what?!??!? Taking over maintenance on well loved projects
PDF
The Latest in DevOps: Elite Performance, Productivity, and Scaling - Google
PDF
DevOps: The Right Abstraction Level
PDF
Move Fast in the Age of Uncertainty
PPTX
GeeCON 2015 DevOps and the dark side
PDF
From hello world to goodbye code
PDF
Vimeo and Open Source (SMPTE Forum 2015)
PDF
FEC2017-Introduction-to-programming
PPTX
DevOps & the Dark Side 10 ways to convince your team DevOps is a force for good
PPTX
2022 DOI SKILup Days_Google Uses Monorepo, and I Don't - Here's Why.pptx
PDF
TiConf NYC - Documenting Your Titanium Applications
PDF
Documenting apps ti confnyc
PDF
Rip DevOps (Feb 2019)
PDF
OSDC 2019 | Terraform best practices with examples and arguments by Anton Bab...
PPTX
OSCONF Jaipur - A Hitchhiker's Tour to Containerizing a Java application
PDF
Continuous delivery of embedded systems embedded meetup
PDF
JUC Europe 2015: Continuous Integration and Distribution in the Cloud with DE...
Moving to a DevOps mode - easy, hard or just plain terrifying? - Daniel Bryan...
JAX London 2014 "Moving to DevOps Mode: easy, hard or just plain terrifying?"
I broke what? Taking over maintenance on existing (well loved) projects, by B...
I broke what?!??!? Taking over maintenance on well loved projects
The Latest in DevOps: Elite Performance, Productivity, and Scaling - Google
DevOps: The Right Abstraction Level
Move Fast in the Age of Uncertainty
GeeCON 2015 DevOps and the dark side
From hello world to goodbye code
Vimeo and Open Source (SMPTE Forum 2015)
FEC2017-Introduction-to-programming
DevOps & the Dark Side 10 ways to convince your team DevOps is a force for good
2022 DOI SKILup Days_Google Uses Monorepo, and I Don't - Here's Why.pptx
TiConf NYC - Documenting Your Titanium Applications
Documenting apps ti confnyc
Rip DevOps (Feb 2019)
OSDC 2019 | Terraform best practices with examples and arguments by Anton Bab...
OSCONF Jaipur - A Hitchhiker's Tour to Containerizing a Java application
Continuous delivery of embedded systems embedded meetup
JUC Europe 2015: Continuous Integration and Distribution in the Cloud with DE...
Ad

Recently uploaded (20)

PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
KodekX | Application Modernization Development
PDF
Electronic commerce courselecture one. Pdf
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
Cloud computing and distributed systems.
PDF
Machine learning based COVID-19 study performance prediction
PPT
Teaching material agriculture food technology
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PPTX
Big Data Technologies - Introduction.pptx
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Approach and Philosophy of On baking technology
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
“AI and Expert System Decision Support & Business Intelligence Systems”
KodekX | Application Modernization Development
Electronic commerce courselecture one. Pdf
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Spectral efficient network and resource selection model in 5G networks
Cloud computing and distributed systems.
Machine learning based COVID-19 study performance prediction
Teaching material agriculture food technology
NewMind AI Weekly Chronicles - August'25 Week I
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Mobile App Security Testing_ A Comprehensive Guide.pdf
Big Data Technologies - Introduction.pptx
Encapsulation_ Review paper, used for researhc scholars
Network Security Unit 5.pdf for BCA BBA.
Approach and Philosophy of On baking technology
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Understanding_Digital_Forensics_Presentation.pptx
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025

Understanding Monorepos