pdf-to-markdown

Installation
CLI
npx skills add https://github.com/duc01226/easyplatform --skill pdf-to-markdown

Install this skill with the CLI and start using the SKILL.md workflow in your workspace.

Last updated 4/22/2026

Easy.Platform Framework

.NET 9
Angular 19
Clean Architecture
CQRS

Easy.Platform is a comprehensive framework for building enterprise applications with .NET 9 backend and Angular 19 frontend, featuring Clean Architecture, CQRS, Domain-Driven Design, and event-driven patterns.

Quick Navigation

I am a... Start Here Learn More
New Developer Getting Started Learning Paths
Backend Dev Backend Quickref CLAUDE.md Patterns
Frontend Dev Frontend Quickref CLAUDE.md Patterns
AI Agent CLAUDE.md docs/claude/

What is Easy.Platform?

Easy.Platform provides a complete foundation for enterprise application development:

  • Clean Architecture: Four-layer architecture (Domain, Application, Infrastructure, Presentation) ensuring separation of concerns and testability
  • CQRS Pattern: Command Query Responsibility Segregation with fluent validation and event-driven side effects
  • Event-Driven Architecture: Domain events and RabbitMQ message bus for cross-service communication
  • Multi-Database Support: MongoDB, SQL Server, PostgreSQL with unified repository patterns
  • Angular Integration: PlatformVmStore state management, base components, and reactive forms

The framework is battle-tested in production enterprise applications and provides patterns for common challenges like background jobs, data migrations, authorization, and multi-tenancy.


Quick Start (30 seconds)

# Backend
dotnet run --project src/Backend/PlatformExampleApp.TextSnippet.Api

# Frontend
cd src/Frontend && npm install && nx serve playground-text-snippet

# Infrastructure
docker-compose -f src/platform-example-app.docker-compose.yml -f src/platform-example-app.docker-compose.override.yml up -d

Detailed setup: Getting Started Guide


Documentation

Doc Purpose
Getting Started Prerequisites, setup, commands, troubleshooting
Architecture Overview System design, project structure, diagrams
Backend Quickref Backend decision tree and key patterns
Frontend Quickref Frontend decision tree and key patterns
Learning Paths Developer onboarding by role
CLAUDE.md Complete code patterns, AI agent instructions
Business Features Module documentation, features, APIs

Business Documentation: For detailed business module documentation (requirements, workflows, APIs, test specs), see docs/business-features/ with docs/BUSINESS-FEATURES.md as the master index.


AI-Assisted Team Collaboration

This project includes a complete team collaboration system for AI agents, supporting agile workflows from idea capture to release.

Team Roles & Commands

Role Commands Purpose
Product Owner /team-idea, /team-prioritize Capture ideas, backlog prioritization
Business Analyst /team-refine, /team-story PBI refinement, user story creation
QA Engineer /team-test-spec, /team-test-cases Test specification, test case generation
UX Designer /team-design-spec, /team-figma-extract UI specs, Figma design extraction
QC Specialist /team-quality-gate Pre-dev/QA/release quality gates
Project Manager /team-status, /team-dependency, /team-team-sync Status reports, dependency mapping, meetings

Artifact Management

team-artifacts/
├── ideas/           # Raw ideas (IDEA-YYMMDD-NNN)
├── pbis/            # Product Backlog Items (PBI-YYMMDD-NNN)
├── test-specs/      # Test specifications (TS-MOD-NNN)
├── design-specs/    # UI/UX specifications
├── qc-reports/      # Quality gate reports
└── templates/       # Artifact templates

Full guide: Team Collaboration Guide


Architecture Overview

graph TB
    subgraph "Frontend - Nx Workspace"
        subgraph "Apps"
            PLAYGROUND["playground-text-snippet"]
        end
        subgraph "Libraries"
            PLATFORM_CORE["platform-core"]
            PLATFORM_COMP["platform-components"]
            APPS_DOMAINS["apps-domains"]
        end
        PLAYGROUND --> PLATFORM_CORE
        PLAYGROUND --> APPS_DOMAINS
    end

    subgraph "Backend - .NET 9"
        API["TextSnippet.Api"]
        APP["TextSnippet.Application"]
        DOMAIN["TextSnippet.Domain"]
        PERSIST["TextSnippet.Persistence"]
    end

    subgraph "Infrastructure"
        RABBIT["RabbitMQ"]
        REDIS["Redis"]
        DB["MongoDB/SQL/Postgres"]
    end

    PLAYGROUND --> API
    API --> APP
    APP --> DOMAIN
    APP --> PERSIST
    PERSIST --> DB
    APP --> RABBIT
    APP --> REDIS

Technology Stack

Layer Technologies
Backend .NET 9, ASP.NET Core, CQRS
Frontend Angular 19, TypeScript, RxJS, PlatformVmStore
Data MongoDB, SQL Server, PostgreSQL
Messaging RabbitMQ
Caching Redis
Jobs Hangfire

Full architecture details: Architecture Overview


Project Structure

Backend

src/Platform/                    # Easy.Platform framework
├── Easy.Platform/               # Core (CQRS, validation, repositories)
├── Easy.Platform.AspNetCore/    # ASP.NET Core integration
├── Easy.Platform.MongoDB/       # MongoDB patterns
├── Easy.Platform.RabbitMQ/      # Message bus
└── Easy.Platform.*/             # Other modules

src/Backend/          # Example microservice
├── *.Api/                       # Web API layer
├── *.Application/               # CQRS handlers, jobs, events
├── *.Domain/                    # Entities, domain events
├── *.Infrastructure/            # External concerns (storage, external APIs)
└── *.Persistence*/              # Database implementations

Frontend

src/Frontend/       # Angular 19 Nx workspace
├── apps/
│   └── playground-text-snippet/ # Example app
└── libs/
    ├── platform-core/           # Base classes, utilities
    ├── platform-components/     # Reusable UI components
    ├── apps-domains/            # Business domain code
    ├── apps-domains-components/ # Domain-specific components
    └── apps-shared-components/  # Shared app components

Key Principles

Backend

  1. Repository Pattern: Use IPlatformQueryableRootRepository<TEntity, TKey>
  2. Validation: Use PlatformValidationResult fluent API (never throw)
  3. Side Effects: Use entity event handlers (never in command handlers)
  4. CQRS: Command + Result + Handler in ONE file
  5. DTO Mapping: DTOs own mapping via MapToEntity()

Frontend

  1. Component Hierarchy: AppBaseComponent → Feature Component
  2. State Management: PlatformVmStore for complex state
  3. API Services: Extend PlatformApiService
  4. Subscriptions: Always use untilDestroyed()
  5. CSS Naming: BEM convention (block__element --modifier)

Complete patterns: CLAUDE.md


Development Commands

# Backend
dotnet build src/Easy.Platform.sln
dotnet run --project src/Backend/PlatformExampleApp.TextSnippet.Api
dotnet test [Project].csproj

# Frontend
cd src/Frontend
npm install
nx serve playground-text-snippet
nx build playground-text-snippet
nx test platform-core

Getting Help

  1. Study Examples: src/Backend/ for backend, src/Frontend/apps/playground-text-snippet/ for frontend
  2. Search Codebase: Use grep/glob to find existing patterns
  3. Check Documentation: docs/ directory for guides, CLAUDE.md for patterns
  4. Read Base Classes: Check platform-core source for available APIs

Version Information

  • Platform Version: Easy.Platform 1.0
  • Backend Framework: .NET 9
  • Frontend Framework: Angular 19
  • Last Updated: February 2026

For detailed code patterns and complete examples, see CLAUDE.md and the working examples in src/Backend/.