Skip to content
View ericksonlopezf's full-sized avatar

Organizations

@jeiyel

Block or report ericksonlopezf

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please donโ€™t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this userโ€™s behavior. Learn more about reporting abuse.

Report abuse
ericksonlopezf/README.md

๐Ÿ‡บ๐Ÿ‡ธ English | ๐Ÿ‡ช๐Ÿ‡ธ Espaรฑol

Hi, I'm Erickson Lopez ๐Ÿ‘‹

Software Engineer & Architect

Engineering Ecosystem Header Graphic

Typing SVG


.NET Angular PostgreSQL TypeScript Docker GitHub Actions
License LinkedIn Twitter


๐Ÿ“‘ Table of Contents


๐Ÿš€ Welcome to the Ecosystem

Note

Welcome to my engineering playground and technical reference library. I'm Erickson Lopez. This space goes beyond a traditional portfolio. It's a living ecosystem where architectural concepts meet production-ready code.

Each repository here exists because it solves a concrete problem that surfaces in enterprise software engineering. Together they form an interconnected ecosystem where:

  • ๐Ÿ“ฆ Libraries (dotnet-shared-kernel, dapper-extensions-pg) provide reusable abstractions.
  • ๐Ÿ—๏ธ Reference implementations (dotnet-enterprise-api, angular-enterprise-app) demonstrate how these libraries compose into robust applications.
  • ๐Ÿ”ฌ Labs (postgresql-lab) provide reproducible benchmarks with measured EXPLAIN ANALYZE outputโ€”not just theory.
  • ๐Ÿงช Testing patterns (testing-patterns-dotnet) explore the spectrum from unit to architecture testing.
  • ๐Ÿ“– Documentation (engineering-handbook) records every architectural decision with direct links to the code that implements it.

Tip

The Goal: You should be able to navigate seamlessly from an architectural decision (ADR) โ†’ to the pattern that implements it โ†’ to the benchmark that validates it.



๐Ÿ—‚๏ธ Repository Matrix

Here is the current layout of the ecosystem. Every project is actively maintained and backed by continuous integration.

Repository Type Language Status CI Description
dotnet-shared-kernel ๐Ÿ“ฆ Library C# / .NET 10 Stable CI BaseEntity, Result<T>, ValueObject, Specification.
dapper-extensions-pg ๐Ÿ“ฆ Library C# / .NET 10 Stable CI UNNEST bulk ops, keyset pagination, advanced type handlers.
testing-patterns-dotnet ๐Ÿ“š Reference C# / .NET 10 Stable CI 5 chapters: Unit โ†’ Integration โ†’ Mutation โ†’ Architecture testing.
dotnet-enterprise-api ๐Ÿ—๏ธ Template C# / .NET 10 Stable CI Clean Architecture + CQRS + JWT + Minimal APIs.
angular-enterprise-app ๐Ÿ—๏ธ Template TypeScript Stable CI Angular 22 + Signals + Tailwind 4 โ€” Dashboard, CRUD, Auth.
postgresql-lab ๐Ÿ”ฌ Lab SQL Stable CI 10 labs, 2.2M rows, real EXPLAIN ANALYZE benchmarks.
engineering-handbook ๐Ÿ“– Docs Markdown Active โ€” ADRs, design principles, and operational runbooks.


๐Ÿ—บ๏ธ Architecture Map

The ecosystem is designed to be highly cohesive. This dependency map shows how the pieces interact.

graph TB
    subgraph docs["๐Ÿ“– Documentation"]
        EH["engineering-handbook<br/><i>ADRs ยท Principles ยท Runbooks</i>"]
    end

    subgraph libs["๐Ÿ“ฆ Libraries (NuGet)"]
        SK["dotnet-shared-kernel<br/><i>Result&lt;T&gt; ยท BaseEntity ยท Specification</i>"]
        DE["dapper-extensions-pg<br/><i>UNNEST ยท Pagination ยท TypeHandlers</i>"]
    end

    subgraph apps["๐Ÿ—๏ธ Applications"]
        API["dotnet-enterprise-api<br/><i>Clean Architecture ยท CQRS ยท JWT</i>"]
        SPA["angular-enterprise-app<br/><i>Angular 22 ยท Signals ยท Tailwind 4</i>"]
    end

    subgraph data["๐Ÿ”ฌ Data & Testing"]
        PG["postgresql-lab<br/><i>10 labs ยท EXPLAIN ANALYZE</i>"]
        TP["testing-patterns-dotnet<br/><i>Unit โ†’ Mutation โ†’ Architecture</i>"]
    end

    SK -->|NuGet dependency| API
    DE -->|NuGet dependency| API
    SPA -->|HTTP / JWT| API
    API -->|SQL| PG
    TP -.->|patterns applied in| API
    EH -.->|documents decisions in| API
    EH -.->|documents decisions in| SPA
    PG -.->|benchmarks inform| DE

    classDef lib fill:#1f3a5f,stroke:#58a6ff,color:#fff,rx:5px,ry:5px
    classDef app fill:#1a3a2a,stroke:#2ea043,color:#fff,rx:5px,ry:5px
    classDef data fill:#3a2a1a,stroke:#d29922,color:#fff,rx:5px,ry:5px
    classDef doc fill:#2a1a3a,stroke:#a371f7,color:#fff,rx:5px,ry:5px

    class SK,DE lib
    class API,SPA app
    class PG,TP data
    class EH doc
Loading


๐Ÿ› ๏ธ Technology Landscape

Rather than listing every tool, here are the core technologies and patterns that define this ecosystem's architecture, performance, and security.

๐Ÿ—๏ธ Core Architecture & Patterns

  • Backend Framework: .NET 10 (C# 13) โ€” Clean Architecture, Domain-Driven Design (Rich Domain Models).
  • Frontend Framework: Angular 22 (TypeScript) โ€” Modular, Standalone Components, Signals, Tailwind CSS 4.
  • Design Patterns: Result Pattern (error handling), CQRS (MediatR), Specification, Outbox Pattern.

๐Ÿ’พ Data & High Performance

  • Database: PostgreSQL 17 โ€” Advanced usage of JSONB, Full-Text Search (GIN), Keyset Pagination (0.31ms at page 25k).
  • Data Access: Dapper (Micro-ORM) โ€” Zero magic, explicit queries. Uses UNNEST arrays for 125k rows/sec insert throughput.
  • Caching & Messaging: Redis for distributed caching; RabbitMQ / Kafka for event-driven flows.

๐Ÿ›ก๏ธ Enterprise Security & Quality

  • Cryptography: BCrypt for hashing; DPAPI, AES, and Shamir Secret Sharing for advanced secret management.
  • DevSecOps Pipeline: GitHub Actions integrated with SonarQube, CodeQL, Trivy, and Gitleaks for automated auditing.
  • Testing Mastery: xUnit, AutoFixture, Bogus for unit/integration; Testcontainers for I/O; Stryker.NET for mutation testing.

โ˜๏ธ Cloud, Infra & Observability

  • Infrastructure as Code: Docker, Terraform, with a roadmap towards Kubernetes orchestration.
  • Observability: OpenTelemetry distributed tracing and structured logging for production readiness.


๐Ÿง  Engineering Principles

Important

The philosophy driving this ecosystem is Simplicity over cleverness and Measure, don't guess.

Design Goals

  • ๐ŸŽฏ Explicit over implicit: We use Result<T> instead of throwing exceptions for business logic. We write raw SQL instead of relying on opaque ORM generation.
  • ๐Ÿงฉ Composition over inheritance: The shared kernel provides lean abstractions consumed by the Enterprise API without deep inheritance chains.
  • ๐Ÿ“Š Measure, don't guess: Every performance claim is backed by postgresql-lab benchmarks (e.g., proving UNNEST's 125k rows/sec throughput).
  • ๐Ÿ“ Document the 'Why': The engineering-handbook houses Architecture Decision Records (ADRs) to explain reasoning, not just outcomes.
  • ๐Ÿงช Test behavior, not implementation: Unit tests verify strict domain rules; integration tests verify API contracts.

Key Architecture Decisions (ADRs)

ADR Decision Tangible Evidence
ADR-001 Result<T> over exceptions for business failures 0 catch blocks in enterprise-api
ADR-002 Dapper over Entity Framework Core 15x faster bulk insert throughput
ADR-003 Angular Signals over NgRx 60% less boilerplate, 0 KB bundle cost
ADR-004 Keyset pagination over OFFSET 0.31ms constant time at page 25k
ADR-005 FluentValidation in MediatR pipeline Handlers never receive invalid input


๐Ÿ“ Repository Standards

Consistency is key across the ecosystem. Every repository strictly adheres to these baselines.

Structural Standard

Every repo features a standard layout: src/, tests/ (Unit/Integration), docs/, a comprehensive README.md, .github/workflows/ci.yml, and an .editorconfig.

Governance

Every repository includes the full OSS governance suite: LICENSE, CONTRIBUTING.md, CODE_OF_CONDUCT.md, SECURITY.md, CHANGELOG.md, issue templates, PR template, and Dependabot.

Quality & Performance

  • Builds: TreatWarningsAsErrors = true across all .NET projects.
  • Coverage: 100% test coverage target for domain invariants.
  • CI/CD: Trunk-based development where main is always deployable. .NET repos share a reusable workflow for build & test, reducing CI duplication.
  • Performance: Sub-millisecond pagination, < 5ms FTS query times, and highly optimized Angular lazy-loading bundles (< 1.5 MB initial load).


๐Ÿงญ Recommended Reading Order

If you're exploring the ecosystem for the first time, I recommend this path to see how the pieces fit together:

  1. ๐Ÿ“– Clean Architecture Principles โ€” Understand the core layers and dependency rules.
  2. ๐Ÿ“ฆ dotnet-shared-kernel โ€” Review the foundational Result<T>, BaseEntity, and ValueObject types.
  3. ๐Ÿ“ฆ dapper-extensions-pg โ€” Explore the high-performance PostgreSQL extensions (UNNEST, Keyset).
  4. ๐Ÿ”ฌ postgresql-lab โ€” See the raw SQL benchmarks that validate the data access decisions.
  5. ๐Ÿ—๏ธ dotnet-enterprise-api โ€” Discover how the kernel and data access compose into a Clean Architecture API.
  6. ๐Ÿ—๏ธ angular-enterprise-app โ€” Check out the modern Angular 22 Signals implementation consuming the API.
  7. ๐Ÿ“š testing-patterns-dotnet โ€” Dive deep into the testing strategies keeping the code robust.


๐Ÿ”ฎ Current Initiatives & Roadmap

The ecosystem is built to scale to 20+ repositories without losing cohesion.

Current Phase: Consolidation

  • Publish dotnet-shared-kernel and dapper-extensions-pg to NuGet.org
  • Enhance integration test coverage in dotnet-enterprise-api with Testcontainers
  • Add CODE_OF_CONDUCT.md (Contributor Covenant v2.1) to all repositories
  • Implement reusable GitHub Actions workflows across .NET repositories
  • Add code coverage reporting to angular-enterprise-app CI
  • Deploy Stryker mutation reports to GitHub Pages (testing-patterns-dotnet)
  • Introduce E2E tests (Playwright) to angular-enterprise-app

Future Vision

  • ๐Ÿ“ก Observability: OpenTelemetry distributed tracing across the API and PostgreSQL.
  • ๐Ÿ“ฌ Event-Driven Architecture: Outbox pattern and message broker integration.
  • ๐Ÿข Multi-Tenant Patterns: Schema-per-tenant architecture relying on the shared kernel.
  • ๐Ÿšข Deployment Recipes: Progression from Docker Compose to full Kubernetes manifests.


๐Ÿค Contributing

While this ecosystem serves primarily as a personal reference architecture and engineering playground, constructive discussions, suggestions, and feedback are always welcome. Feel free to open an Issue in the relevant repository if you spot a bug or want to discuss a specific architectural pattern.



๐Ÿ“„ License

This ecosystem and its repositories are open-sourced software licensed under the MIT License. You are free to use these architectural patterns and reference implementations in your own projects.



Engineering Ecosystem Footer Graphic

engineering-handbook ยท Designed & built with care by Erickson Lopez.

Popular repositories Loading

  1. guia-entrevistas-de-programacion guia-entrevistas-de-programacion Public

    Forked from DevCaress/guia-entrevistas-de-programacion

  2. CLINICAL-FRONT-YT CLINICAL-FRONT-YT Public

    Forked from AdrianMValencia/CLINICAL-FRONT-YT

    FRONTEND PARA SISTEMA DE LABORATORIO CLINICO

    TypeScript

  3. DapperUnitOfWork DapperUnitOfWork Public

    Forked from timschreiber/DapperUnitOfWork

    Unit of Work and Repository Example for Dapper

    C#

  4. ericksonlopezf ericksonlopezf Public

    Software Engineer | .NET 10 | Clean Architecture | DDD | PostgreSQL | Angular 21 | Building scalable and maintainable software solutions.

  5. angular-enterprise-app angular-enterprise-app Public

    Enterprise-grade SPA template built with Angular 22, Signals, and Tailwind CSS 4.

    TypeScript

  6. dapper-extensions-pg dapper-extensions-pg Public

    High-performance Dapper extensions for PostgreSQL featuring UNNEST bulk operations.

    C#