π‘ Summary
Easy.Platform is a framework for building enterprise applications using .NET 9 and Angular 19 with a focus on Clean Architecture and CQRS.
π― Target Audience
π€ AI Roast: βPowerful, but the setup might scare off the impatient.β
Risk: Medium. Review: shell/CLI command execution; outbound network access (SSRF, data egress); filesystem read/write scope and path traversal; dependency pinning and supply-chain risk. Run with least privilege and audit before enabling in production.
Easy.Platform Framework
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 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/withdocs/BUSINESS-FEATURES.mdas 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
- Repository Pattern: Use
IPlatformQueryableRootRepository<TEntity, TKey> - Validation: Use
PlatformValidationResultfluent API (never throw) - Side Effects: Use entity event handlers (never in command handlers)
- CQRS: Command + Result + Handler in ONE file
- DTO Mapping: DTOs own mapping via
MapToEntity()
Frontend
- Component Hierarchy:
AppBaseComponentβ Feature Component - State Management:
PlatformVmStorefor complex state - API Services: Extend
PlatformApiService - Subscriptions: Always use
untilDestroyed() - CSS Naming: BEM convention (
block__element --modifier)
Complete patterns: CLAUDE.md
Development Commands
# Backend dotnet build EasyPlatform.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
- Study Examples:
src/PlatformExampleAppfor backend,playground-text-snippetfor frontend - Search Codebase: Use grep/glob to find existing patterns
- Check Documentation:
docs/directory for guides,CLAUDE.mdfor patterns - 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: January 2025
For detailed code patterns and complete examples, see CLAUDE.md and the working examples in src/PlatformExampleApp.
Pros
- Comprehensive framework for enterprise applications
- Supports multiple databases and messaging systems
- Follows best practices like Clean Architecture and CQRS
Cons
- Steep learning curve for new developers
- Complexity may be overkill for small projects
- Limited community support compared to more established frameworks
Related Skills
java-architect
AβPowerful, but the setup might scare off the impatient.β
spring-boot-engineer
AβPowerful, but the setup might scare off the impatient.β
dotnet-core-expert
AβPowerful, but the setup might scare off the impatient.β
Disclaimer: This content is sourced from GitHub open source projects for display and rating purposes only.
Copyright belongs to the original author duc01226.
