Skip to content

Latest commit

 

History

1,022 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧩 CustomCADs — Backend

CustomCADs is the backend powering a full-featured platform for discovering, purchasing, and commissioning 3D CAD models.
It’s built as a Modular Monolith following Clean Architecture, DDD, CQRS, and EDA principles — combining structure, flexibility, and scalability in one cohesive system.


🏗️ Architecture & Design

  • Runtime: Latest .NET (currently 9)
  • Architecture: Modular Monolith with per-module Clean Architecture and Shared Kernel
    • Domains adhere to DDD
    • Application layers follow CQRS
    • Cross-module and async flows rely on EDA
    • Sagas orchestrate complex processes (deliveries, payments, rewards, etc.)
  • Cloud:
    • Cloudflare R2 → CADs & images storage
    • AWS → EC2/EB + ECR (backend), RDS (PostgreSQL), ACM + CloudFront (HTTPS/CDN)
    • Namecheap → domain management
  • DevOps:
    • GitHub Actions → CI/CD (build → push → manual deploy)
    • Docker → image packaging and deploys
    • Terraform → full Infrastructure as Code (IaC)
  • Solutions:
    • CustomCADs.sln (Development)
    • CustomCADs.Staging.sln
    • CustomCADs.Production.sln
    • Root also includes GitHub workflows, Terraform configs, Dockerfiles, and Bash automation scripts.

🧰 Core Libraries

Layer Technologies
API FastEndpoints · Microsoft.OpenAPI · Scalar
Infrastructure Polly · Stripe · SignalR · WolverineFx · FluentValidation · FluentEmail · Quartz.NET
Persistence PostgreSQL · EF Core · EFCore.BulkExtensions

🧑‍💻 Developer Utilities

  • Custom Bash scripts for EF Core CLI automation on Linux
  • Optional source generation for Wolverine message handlers
  • Dedicated EF Core migration project for all modules (instant & parallel) and a separate one for Identity

🔐 Authentication & Core Features

  • JWT + Refresh Token auth system with CSRF protection
  • Google SSO via OpenID Connect
  • ASP.NET Core Identity as the underlying foundation
  • Automatic request idempotency via custom middleware & attributes
  • Real-time updates & notifications using SignalR
  • Stripe integration (webhooks + checkout + internal reconciliation)
  • Exchange rates auto-updated every 24h (cached + cron job)

🧭 Roles & Capabilities

👤 Guests

  • Register/Login
  • Explore the Gallery
  • Access current Exchange Rates

💼 Customers

  • Manage current Cart & Items (add/remove/customize)
  • Purchase Cart (persisted as one of many “Purchased Cart”)
  • Request Custom 3D Models (Customs)
  • Track Shipments (for purchased/delivered items or Customs)
  • View Notifications

🧱 Contributors

  • Upload & manage Products (CRUD)
  • Submit Products for Designer validation
  • Sell full rights to Products to Designers
  • Apply for Designer position

🎨 Designers

  • Upload Products directly to Gallery (tagged Professional)
  • Validate or report Contributors’ Products
  • Manage Custom Requests (accept → begin → finish)
  • Purchase rights to Contributors’ Products

🛡️ Admins

  • Read all resources (including Users/Roles)
  • Modify most resources
  • Manage Tags & Categories
  • Handle reports and remove flagged content

📂 Directory Structure

Root layout:

CustomCADs/
├── src/
│   ├── Modules/
│   ├── Shared/
│   ├── Tools/
│   └── Presentation/
├── tests/
│   └── UnitTests/
├── .github/
├── .terraform/
├── .platform/
├── Dockerfile.dev
├── Dockerfile.staging
├── Dockerfile.production
└── README.md

Src layout:

src/
├── Modules/
├── Shared/
│   ├── Domain/
│   ├── Persistence/
│   ├── Application/
│   ├── Infrastructure/
│   └── API/
├── Tools/
│   ├── Migrations/
│   ├── Identity/
│   └── CodeGen/
├── Presentation/
│   ├── GlobalExceptionHandler.cs
│   ├── ProgramExtensions.cs
│   └── Program.cs

Modules layout:

Modules/
├── Accounts/
│   ├── Domain/
│   ├── Persistence/
│   ├── Application/
│   ├── Infrastructure/
│   └── API/
├── Carts/
├── Catalog/
├── Customs/
├── Delivery/
├── Files/
├── Idempotency/
├── Identity/
├── Notifications/
└── Printing/

Tests layout:

UnitTests/
├── Accounts/
│   ├── Data/
│   ├── Domain/
│   ├── Application/
├── Carts/
├── Catalog/
├── Customs/
├── Delivery/
├── Files/
├── Idempotency/
├── Identity/
├── Notifications/
└── Printing/

📞 Contact

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages