Skip to content

A polyglot monorepo showcasing modern app development with Flutter, .NET, and React (via Nx). Includes clean architecture, design patterns, reusable packages, demo apps, and backend APIs. Future work: state management examples, UI animations, and cross-platform integrations.

Notifications You must be signed in to change notification settings

Pablo-gitub/monorepo-showcase

Repository files navigation

Monorepo Showcase

A compact, interview-oriented monorepo that demonstrates how I structure and approach multi-stack development with a focus on clean architecture, testability, and reusability.

This repository starts with a Flutter workspace managed by Melos MELOS.md and is designed to expand with small examples and reusable packages. Additional folders for React/React Native and .NET are planned to illustrate cross-stack organization within a single repository.


Goals

  • Show how I organize codebases for clarity and reuse (packages, separation of concerns).
  • Demonstrate fundamentals: design patterns and state management in Dart/Flutter.
  • Provide a minimal app that consumes reusable packages (e.g., adaptive layout, login facade).
  • Prepare room for future web (React / React Native) and backend (.NET) examples.

Repository Layout


monorepo-showcase/
├─ flutter/
│  ├─ dart\_design\_patterns/           # Small, focused pattern demos (factory, strategy, etc.)
│  ├─ state\_management\_examples/      # Provider, Riverpod, Bloc, Cubit mini-examples
│  ├─ packages/
│  │  ├─ adaptive\_layout\_menu/        # Reusable responsive UI & adaptive scaffold
│  │  └─ dynamic\_login/               # Login facade (HTTP/mock), backend-agnostic
│  └─ apps/
│     └─ simple\_app/                  # Minimal app using the packages above
├─ web/                                # (planned) React examples
├─ mobile/                             # (planned) React Native (Expo) examples
└─ dotnet/                             # (planned) .NET Minimal API (e.g., /auth/login)

Status: Flutter workspace initialized; examples and packages will be added iteratively.


Tech Highlights

  • Flutter + Melos for modularization and local package development.
  • Design Patterns (Dart) to demonstrate reasoning beyond “just code”.
  • State Management side-by-side: Provider, Riverpod, Bloc, Cubit.
  • Login Facade package to decouple UI from backend (HTTP/mock), enabling easy swaps (.NET/Firebase/etc.).

Getting Started (Flutter workspace)

Prerequisites

  • Flutter SDK (3.3+)
  • Dart SDK (3.3+)
  • Melos (global): dart pub global activate melos

Bootstrap

flutter --version
dart --version
dart pub global activate melos
melos bootstrap

Run the sample app (once available)

cd flutter/apps/simple_app
flutter run

Backend note (optional): when the .NET Minimal API is added (POST /auth/login),

  • iOS/macOS: http://localhost:5000
  • Android emulator: http://10.0.2.2:5000
  • Physical device: use your machine’s LAN IP (e.g., http://192.168.1.x:5000)

Principles & Conventions

  • Clean architecture first: clear boundaries, testable code, reusable packages.
  • Separation of concerns: UI, domain, and infrastructure isolated where it matters.
  • Linting & tests: prefer simple, focused unit/widget tests; keep examples small and readable.
  • Docs: each example/package includes a short README with purpose and trade-offs.

Roadmap (short & realistic)

  1. Add Dart design pattern demos.
  2. Add state management examples (Provider, Riverpod, Bloc/Cubit).
  3. Create reusable packages: adaptive_layout_menu, dynamic_login.
  4. Build simple_app consuming those packages.
  5. (Optional) Add .NET Minimal API for /auth/login.
  6. (Optional) Add React / React Native micro-examples.

About

A polyglot monorepo showcasing modern app development with Flutter, .NET, and React (via Nx). Includes clean architecture, design patterns, reusable packages, demo apps, and backend APIs. Future work: state management examples, UI animations, and cross-platform integrations.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published