Dart Mono-repo Management for Efficient Code Sharing & Collaboration

Generated by BlueWillow AI

Majid Hajian

mhadaily

Problem

mhadaily

import 'package:flutter/material.dart';
MaterialApp(
   ThemeData(
        name: "Majid Hajian",
        location: "Oslo, Norway",
        description: '''
                Google Developer Expert
        	Passionate Software engineer, 
	        Community Leader, Author and international Speaker
         ''',
        main: "Head of DevRel at Invertase.io",
        homepage: "https://www.majidhajian.com",
        socials: {
          twitter: "https://www.twitter.com/mhadaily",
          github: "https://www.github.com/mhadaily"
        },
        author: {
          Pluralsight: "www.pluralsight.com/authors/majid-hajian",
          Apress: "Progressive Web App with Angular, Book",
          PacktPub: "PWA development",
          Udemy: "PWA development",
        }
        founder: "Softiware As (www.Softiware.com)"
        devDependencies: {
          tea: "Ginger", 
          mac: "10.14+",
        },
        community: {
          FlutterVikings: "Orginizer", 
          FlutterCommunity: "Admin/Lead",
          ...more
        },
        ),
       );

mhadaily

Find me on the internet by

Head of DevRel at Invertase

Majid Hajian

mhadaily

Photo from monorepo.tools

Monorepo ≠ Monolith

?

Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure.

-- Melvin Conway

Advantages 

  • Collaboration
  • Dependencies management
  • Refactoring

Disadvantages 

  • Git operation might be slow 
  • Pipeline issues
  • Versioning 
  • Broken master
  • IDE lag
  • Bazel (by Google)

  • Gradle Build Tool (by Gradle, Inc),

  • Lage (by Microsoft),

  • Nx (by Nrwl),

  • Rush (by Microsoft)

  • Melos (by Invertase)

Transparent remote execution

Code generation

Code sharing

Local task orchestration Fast

Workspace analysis

Distributed task execution

Local task orchestration

Detecting affected projects/packages

Dependency graph visualization

Project constraints and visibility 

monorepo.tools

Consistent Coding

customer 

id

name

interest

Sales

customer 

id

name

email

phone

Models

 

customer 

id

address

availability

Order

Fetch

 

 

Data Layer

 

Services

Open Host Service

API

mhadaily

App1

App2

Backend

A tool for managing Dart projects with multiple packages

DEMO

mhadaily

Find me on the internet by

Head of DevRel at Invertase

Majid Hajian

Slides

slides.com/mhadaily

Simplifying Dart Mono-repo Management for Efficient Code Sharing and Collaboration

By Majid Hajian

Simplifying Dart Mono-repo Management for Efficient Code Sharing and Collaboration

As the popularity of Dart projects with multiple packages (mono-repos) continues to rise, managing code bases in such environments presents unique challenges. Traditional methods of making changes and testing across repositories can become complex and time-consuming. However, Melos, a powerful command-line interface (CLI) tool, solves these problems. Developed for Dart projects, Melos enables seamless management of multiple packages within a single repository while maintaining their independence. It simplifies versioning, changelog generation, publishing, package linking, and execution of simultaneous commands across packages. In this talk, we will explore the features and benefits of Melos, highlighting its role in enhancing code sharing, collaboration, and automating complex tasks in CI/CD environments. Join us to learn how Melos can transform your Dart mono-repo management and streamline your development workflow.

  • 529