<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Suraj Upadhyay</title>
    <description>The latest articles on DEV Community by Suraj Upadhyay (@suraj_at_esence).</description>
    <link>https://dev.to/suraj_at_esence</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3758776%2F0b3096f9-4563-4738-a9e6-527519002a96.jpg</url>
      <title>DEV Community: Suraj Upadhyay</title>
      <link>https://dev.to/suraj_at_esence</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/suraj_at_esence"/>
    <language>en</language>
    <item>
      <title>Scaling Codebases Without Platform Bloat</title>
      <dc:creator>Suraj Upadhyay</dc:creator>
      <pubDate>Wed, 01 Jul 2026 04:19:00 +0000</pubDate>
      <link>https://dev.to/suraj_at_esence/scaling-codebases-without-platform-bloat-1dj8</link>
      <guid>https://dev.to/suraj_at_esence/scaling-codebases-without-platform-bloat-1dj8</guid>
      <description>&lt;p&gt;Redundant compilation lags, bloated CI pipelines and version drift for internal&lt;br&gt;
modules quietly drain developer velocity. And normally, it's too late when the&lt;br&gt;
leadership gets the whiff of it. According to recent studies, the hidden tax on&lt;br&gt;
your team looks exactly like this -&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Direct Time Drain&lt;/strong&gt;: Your engineers waste an average of 25 to 50 minutes&lt;br&gt;
due to compilation lags.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Redundant Build&lt;/strong&gt;: An engineer wastes his valuable time rebuilding&lt;br&gt;
something that already exists and is being used in another team.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Pipeline Blocker&lt;/strong&gt;: Your Frontend Team spends an entire sprint cycle&lt;br&gt;
completely idle, waiting for the Core Platform Team to version-tag and publish&lt;br&gt;
the latest approved button changes.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All these, as bad as they sound, are common occurrences in the majority of&lt;br&gt;
software engineering teams trying their best to ship fast and iterate faster.&lt;br&gt;
The problems that I listed are not inevitable, and can be solved if we just&lt;br&gt;
carefully design our engineering culture and the codebase that it revolves&lt;br&gt;
around from the beginning.&lt;/p&gt;

&lt;p&gt;In today's edition, let's tackle them one-by-one and continue where we left off&lt;br&gt;
last time in our adventure of building&lt;br&gt;
&lt;a href="//./ideal-startup-monorepo-local-workspace"&gt;the ideal monorepo setup&lt;/a&gt; for&lt;br&gt;
startups.&lt;/p&gt;

&lt;p&gt;Assuming that you followed my advice of having a monorepo for all your codebase&lt;br&gt;
needs for your startup, let's hit the road!&lt;/p&gt;
&lt;h2&gt;
  
  
  The Redundant Build: A guide to module re-use
&lt;/h2&gt;

&lt;p&gt;While there's no sure-shot way of knowing what an engineer thinks before&lt;br&gt;
embarking on the painstaking journey of rebuilding the wheel, we can mitigate&lt;br&gt;
the risk through some primary cautions -&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Build a collection of re-usable modules.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Business logic must never be allowed to be repeated.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Engineers should learn about the existing system for their use-case.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Though I know, forcing software engineers to do something they don't approve of&lt;br&gt;
is never a good idea. But Companies and Team Leads should force these elementary&lt;br&gt;
coding principles rigorously via code-reviews and documentation.&lt;/p&gt;
&lt;h3&gt;
  
  
  Building a Collection of Reusable modules
&lt;/h3&gt;

&lt;p&gt;Startups that successfully keep growing, also tend to constantly rebuild many&lt;br&gt;
parts of their system again and again. To give you a few examples -&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;UI Components&lt;/strong&gt;: The same kind of button, the same navigation bar, the same&lt;br&gt;
sidebar nav, etc. are rebuilt across different product lines to keep the look and&lt;br&gt;
feel of the brand consistent. The website may be using the same color scheme as the&lt;br&gt;
product dashboard, and hence the components get duplicated.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Backend Modules&lt;/strong&gt;: If you have more than one backend, chances are that you&lt;br&gt;
are duplicating the authentication, the logging, the middlewares, the utility&lt;br&gt;
modules and many others depending upon your particular use-case.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Due to this, some parts of your website might look and feel different than the&lt;br&gt;
other parts, worst-case it might feel they are built by different companies&lt;br&gt;
altogether. And it's not just about how the UI looks, if you have duplicated&lt;br&gt;
backend code, your team sometimes might end up debugging an edge-case over a&lt;br&gt;
weekend that an engineer didn't think, while rebuilding the authentication&lt;br&gt;
pipeline all over again.&lt;/p&gt;

&lt;p&gt;To best avoid the above duplication, is to use the &lt;code&gt;packages&lt;/code&gt; directory in your&lt;br&gt;
monorepo root judiciously.  That is if you followed the monorepo structure that&lt;br&gt;
I advocated in the &lt;a href="//./ideal-startup-monorepo-local-workspace"&gt;previous edition&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;And if you are already doing that, it's better to keep the reusable modules kept&lt;br&gt;
inside the &lt;code&gt;packages&lt;/code&gt; directory - &lt;em&gt;loosely coupled&lt;/em&gt;, &lt;em&gt;highly parameterised&lt;/em&gt; and&lt;br&gt;
&lt;em&gt;customizable&lt;/em&gt; through environment variables and feature flags.&lt;/p&gt;
&lt;h3&gt;
  
  
  Consistent Business Logic
&lt;/h3&gt;

&lt;p&gt;If there's one thing that you should absolutely avoid, then it has got to be&lt;br&gt;
business logic duplication. Given enough time, codes change, bugs appear and get&lt;br&gt;
fixed, engineers might come and go, but hardcore business logic seldom changes.&lt;/p&gt;

&lt;p&gt;To give you an example, if you are building an accounting system, then your tax&lt;br&gt;
calculation logic must never be repeated. If it does get repeated across your&lt;br&gt;
backends and your frontends, then each update to the tax calculation logic,&lt;br&gt;
debugging sessions and eventual hot-fixing, would need to be made across the&lt;br&gt;
board and be forced to be compatible in each of the environments, causing&lt;br&gt;
huge business consequences&lt;/p&gt;

&lt;p&gt;I would like to recommend keeping a separate privileged module inside your&lt;br&gt;
shared-modules, for such sensitive business logic and have a &lt;code&gt;CODEOWNERS&lt;/code&gt; entry &lt;br&gt;
such that unauthorised engineers (most likely the interns) can never make any&lt;br&gt;
changes to the same.&lt;/p&gt;

&lt;p&gt;An example &lt;code&gt;CODEOWNERS&lt;/code&gt; entry might look something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# .github/CODEOWNERS&lt;/span&gt;
&lt;span class="c"&gt;# Guarding core business logic from unauthorized modifications&lt;/span&gt;

&lt;span class="c"&gt;# Global fallback auditors&lt;/span&gt;
&lt;span class="k"&gt;*&lt;/span&gt; @esence-io/platform-leads

&lt;span class="c"&gt;# Strict guardrails for sensitive domain algorithms&lt;/span&gt;
/packages/domains/billing/tax-calculator.ts       @esence-io/finance-architects
/packages/domains/appointments/compliance.go     @esence-io/medical-directors
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Documentation for Reusable Modules
&lt;/h3&gt;

&lt;p&gt;This might be the only thing that separates an average organization from a&lt;br&gt;
great organization that has some degree of foresight. &lt;/p&gt;

&lt;p&gt;However, in an early-to-mid-stage startup, telling engineers to spend hours&lt;br&gt;
writing long-form documentation on a separate Confluence or Notion workspace is &lt;br&gt;
a fantasy. It creates out-of-date documentation platforms that nobody trusts, &lt;br&gt;
adding to your organizational bloat.&lt;/p&gt;

&lt;p&gt;The frugal, high-velocity alternative is &lt;strong&gt;Git-Adjacent Documentation&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Workspace READMEs&lt;/strong&gt;: Every package inside your &lt;code&gt;/packages/*&lt;/code&gt; directory &lt;br&gt;
must contain a minimalist &lt;code&gt;README.md&lt;/code&gt; explaining its API footprint, schema&lt;br&gt;
rules, and runtime assumptions. If an engineer alters code logic, they update&lt;br&gt;
the text in the exact same git commit string.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Strict Typing&lt;/strong&gt;: Let your compiler act as your documentation &lt;br&gt;
hub. By enforcing explicit input/output interface boundaries on shared&lt;br&gt;
components, your IDE automatically tells the frontend engineer exactly what&lt;br&gt;
parameters a component expects without them ever leaving their workspace&lt;br&gt;
terminal window.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Better Code-Comments&lt;/strong&gt;: Come-on, no one writes good comments.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If code isn't discoverable from inside the repo editor, it doesn't exist.&lt;br&gt;
&lt;strong&gt;Keep it in git&lt;/strong&gt; and the engineers will follow.&lt;/p&gt;
&lt;h2&gt;
  
  
  Trunk-Based Development: Unblocking the pipeline
&lt;/h2&gt;

&lt;p&gt;What if every engineer works on the latest changes produced by every other team?&lt;br&gt;
And what if every team starts taking ownership of the changes they make?&lt;/p&gt;

&lt;p&gt;To answer both the questions in a strong &lt;strong&gt;Yes&lt;/strong&gt;, your engineering team has to&lt;br&gt;
follow the paradigm of "Trunk-Based Development".&lt;/p&gt;

&lt;p&gt;Trunk-Based Development as opposed to module-versioning and importing foreign&lt;br&gt;
modules from registries, means that a monorepo contains everything it needs and&lt;br&gt;
every module it has, is on the latest version. And, cross-module dependencies&lt;br&gt;
just become a question of either importing those modules or their DLLs or&lt;br&gt;
binaries, completely bypassing the network-overhead of fetching latest modules.&lt;/p&gt;

&lt;p&gt;There are no version numbers to increment, no private registries to maintain,&lt;br&gt;
and no upstream breaking changes hidden behind a semver tag. And no wasteful&lt;br&gt;
standup meetings discussing whether a change is breaking enough to bump up the&lt;br&gt;
version entirely.&lt;/p&gt;

&lt;p&gt;Once your company starts following trunk-based development:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;If the Core Platform UI Team changes the button style or its parameters, it's&lt;br&gt;
going to be the Core UI Team's responsibility to change it across the codebase.&lt;br&gt;
Thereby, creating implicit ownership of all the changes that break integration&lt;br&gt;
tests or that make other project's compilers scream.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The cost and complexity of infrastructure behind private module/package&lt;br&gt;
registries instantly become zero and setting up the local environment for the&lt;br&gt;
new joinee just becomes executing the build commands.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If a shared or an inter-team module breaks, no one has to get blocked for&lt;br&gt;
getting fixes and updates.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;All teams to some extent become software/module testers for all the other&lt;br&gt;
teams by becoming a direct consumer with a zero-lag feedback loop.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One easy way to do it for TypeScript workspaces is by simply including workspace&lt;br&gt;
dependencies like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"dependencies"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"@packages/ui"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"workspace:*"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It isn't complicated, unless you start making it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Compilation Lags and Caching Build Artifacts: With Nx
&lt;/h2&gt;

&lt;p&gt;You pay money-tax to the government for earning, and pay time-tax to the&lt;br&gt;
compiler for coding. Startups hire accountants for reducing tax paid to the&lt;br&gt;
government, but seldom pay any attention to the tax paid to the compiler that&lt;br&gt;
slowly leaks their pockets in terms of wasted productive hours of a developer&lt;br&gt;
on a payroll.&lt;/p&gt;

&lt;h2&gt;
  
  
  You can read the full article on my blog - &lt;a href="https://esence.io/blogs/scaling-startup-monorepo-boundaries-caching" rel="noopener noreferrer"&gt;Engineering Insights at Esence.io&lt;/a&gt;
&lt;/h2&gt;

</description>
      <category>softwareengineering</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>startup</category>
    </item>
    <item>
      <title>The Zero-Drift Ideal Monorepo Setup for Startups</title>
      <dc:creator>Suraj Upadhyay</dc:creator>
      <pubDate>Sun, 14 Jun 2026 05:15:25 +0000</pubDate>
      <link>https://dev.to/suraj_at_esence/the-zero-drift-ideal-monorepo-setup-for-startups-3l2g</link>
      <guid>https://dev.to/suraj_at_esence/the-zero-drift-ideal-monorepo-setup-for-startups-3l2g</guid>
      <description>&lt;h2&gt;
  
  
  An Overhead-Free Monorepo Blueprint for High-Velocity Teams
&lt;/h2&gt;

&lt;p&gt;The first design decision for any serious tech startup is to decide how their&lt;br&gt;
codebase is structured, and building a monorepo setup often proves to be&lt;br&gt;
crucial for avoiding cross-project dependency maintenance that can stretch &lt;br&gt;
a small-to-mid sized engineering team which most startups cannot afford in&lt;br&gt;
pre-venture or revenue stages.&lt;/p&gt;
&lt;h2&gt;
  
  
  What does an "ideal" monorepo look like?
&lt;/h2&gt;

&lt;p&gt;While there are multiple ways a developer or a company can structure their&lt;br&gt;
monorepos and it's true that there isn't an ideal setup that fits all case&lt;br&gt;
scenarios, there are universal architectural truths that separate a clean&lt;br&gt;
engineering workspace from a chaotic one&lt;/p&gt;

&lt;p&gt;There are some salient features that every staff engineer or software&lt;br&gt;
architect should aim to achieve with their monorepos:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Reproducible environment&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Domain driven development&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Module and library re-use&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Trunk-based development&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Central build cache registry&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Simpler deployment pipelines&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Package security, visibility and role-based code access&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Most successful monorepos satisfy most or all of the above requirements.&lt;/p&gt;

&lt;p&gt;I have worked with a couple of startups and have seen them all struggling with&lt;br&gt;
getting most of the above requirements right. &lt;br&gt; Even established companies with&lt;br&gt;
100s of engineers, sometimes have to spend hundreds of thousands of dollars,&lt;br&gt;
if not millions, on platform engineers just to manage their codebase and build&lt;br&gt;
pipelines.&lt;/p&gt;

&lt;p&gt;Now, Let's go through each one of the "ideal monorepo" requirements and create&lt;br&gt;
a best in class workspace for the engineering team.&lt;/p&gt;
&lt;h2&gt;
  
  
  Creating a Reproducible Environment
&lt;/h2&gt;

&lt;p&gt;If you are a founder or someone from the tech leadership, there's a possiblity&lt;br&gt;
that you hear this phrase a couple of times in a week - "it works on my machine,&lt;br&gt;
I think something is wrong with the deployment". And most of the times, the&lt;br&gt;
deployment turns out be just fine and it's the developer's local environment&lt;br&gt;
configuration that's been acting up.&lt;/p&gt;

&lt;p&gt;Also, there's a huge possiblity that every new engineer you onboard takes at&lt;br&gt;
least 3 days to settle in and get comfortable with the codebase and all the&lt;br&gt;
tools required to setup a normal working local environment.&lt;/p&gt;

&lt;p&gt;What I have just described above is a classical design flaw from the early days&lt;br&gt;
of a codebase, whether a monorepo or a polyrepo.&lt;/p&gt;

&lt;p&gt;The medicinal anti-dote to this exact most common problem in tech companies is using&lt;br&gt;
sandboxing tools that isolate the development environment and levels down the&lt;br&gt;
playing field for all the engineers.&lt;/p&gt;

&lt;p&gt;We are going to take a look at one of these tools today, that can easify your&lt;br&gt;
life managing a tech team or running a tech company.&lt;/p&gt;
&lt;h3&gt;
  
  
  Devbox - The ideal sandbox for your dev environment
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.jetify.com/devbox" rel="noopener noreferrer"&gt;Devbox&lt;/a&gt; is an open-source, Nix-based package&lt;br&gt;
manager that creates isolated, reproducible development environments without the&lt;br&gt;
resource overhead of local Docker containers. And it is just the right tool to achieve&lt;br&gt;
environment isolation that I have personally used in many of my projects.&lt;/p&gt;

&lt;p&gt;It's not as heavy or expensive as managing docker configurations and forcing&lt;br&gt;
developers to write code in docker native IDEs.&lt;/p&gt;

&lt;p&gt;Let's start with the first steps of our desired setup:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install devbox&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://get.jetify.com/devbox | bash

&lt;span class="c"&gt;# Create directory for your codebase&lt;/span&gt;
&lt;span class="nb"&gt;mkdir &lt;/span&gt;monorepo
&lt;span class="nb"&gt;cd &lt;/span&gt;monorepo

&lt;span class="c"&gt;# Initialise the monorepo with devbox&lt;/span&gt;
devbox init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, let's take a step back and ponder over our requirements from this virtual&lt;br&gt;
environment. Most of the modern mid-level complexity full stack projects need&lt;br&gt;
at least these pieces of tools to work correctly:&lt;/p&gt;

&lt;p&gt;Essential Core Utilities:&lt;br&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Git (Version Control)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Frontend Engineering Layers:&lt;br&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Node.js (V8 Application Runtimes)
&lt;/li&gt;
&lt;li&gt;Bun (High-Performance Local Testing &amp;amp; Package Management)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Systems &amp;amp; Data Processing Services:&lt;br&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go (Highly Scalable Backend Web Servers)
&lt;/li&gt;
&lt;li&gt;Python (Machine Learning Infrastructure &amp;amp; Automation Pipelines)&lt;/li&gt;
&lt;li&gt;CMake/Make (Build tool for C/C++ used for high performance)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The list of the above tools is strictly my own choice and you can chose to go&lt;br&gt;
with your own vibe of toolsets, that you want to be written on the stone for all&lt;br&gt;
your team mates.&lt;/p&gt;

&lt;p&gt;Let's install all of these and peg them against a version number to lock in the&lt;br&gt;
tool of choice for everyone.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Discover the versions of tools with&lt;/span&gt;
devbox search git &lt;span class="nt"&gt;--show-all&lt;/span&gt; &lt;span class="c"&gt;# This gives a list of all available git versions&lt;/span&gt;

&lt;span class="c"&gt;# Now add the desired version of the tool to your local environment&lt;/span&gt;
devbox add git@latest

devbox add node@latest
devbox add bun@latest

devbox add python@latest
devbox add go@latest

&lt;span class="c"&gt;# Add any other tool(s) that your team needs&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, the last step is to officially enter into the virtual environment that we have&lt;br&gt;
created.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Enter into the devbox environment&lt;/span&gt;
monorepo &lt;span class="nv"&gt;$ &lt;/span&gt;devbox shell

&lt;span class="c"&gt;# Just when you execute the above command, your terminal prompt becomes this&lt;/span&gt;
&lt;span class="o"&gt;(&lt;/span&gt;devbox&lt;span class="o"&gt;)&lt;/span&gt; monorepo &lt;span class="nv"&gt;$ &lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, whenever the new intern asks how he should pull the project and start the&lt;br&gt;
contributing you just tell him to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone &amp;lt;your-repository-location&amp;gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; &amp;lt;your-repository&amp;gt;

&lt;span class="c"&gt;# And...&lt;/span&gt;
devbox shell

&lt;span class="c"&gt;# 🤯, he is all setup!!&lt;/span&gt;
&lt;span class="c"&gt;# Now the only thing left is to execute the install scripts&lt;/span&gt;
&lt;span class="c"&gt;# and actually run the projects.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And it just took him 2 minutes to start with the project without the weird&lt;br&gt;
environment issues and it didn't matter if he is on Macbook or Linux or&lt;br&gt;
Windows.&lt;/p&gt;

&lt;h3&gt;
  
  
  Go Task - A central registry for all commands in your project
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://taskfile.dev/" rel="noopener noreferrer"&gt;Go Task&lt;/a&gt; is an open source utility that can map simple&lt;br&gt;
words with complex commands, so that the junior devs never have to ping you in&lt;br&gt;
the middle of the night just to figure out the command that they wrote had a&lt;br&gt;
typo in it.&lt;/p&gt;

&lt;p&gt;You can read the full article on my blog - &lt;a href="https://esence.io/blogs/ideal-startup-monorepo-local-workspace" rel="noopener noreferrer"&gt;Engineering Insights at Esence.io&lt;/a&gt;&lt;/p&gt;

</description>
      <category>monorepo</category>
      <category>devex</category>
      <category>devbox</category>
      <category>nx</category>
    </item>
  </channel>
</rss>
