Skip to content

YardPro

YardPro is a comprehensive vehicle dismantling yard management system for automotive recyclers and breakers. It handles the complete workflow from vehicle intake through VIN decoding, part cataloging, inventory management, sales, invoicing, part interchange matching, label printing, and multi-channel marketplace integration (eBay + Facebook).

Solution Architecture

KeDevO.YardPro/
├── Domain/            # Core domain model (23 entities, 10 interchange, 20 enums, 5 VOs)
├── Contracts/         # Shared DTOs (50+ DTOs for API communication)
├── Infrastructure/    # EF Core persistence, repositories, security, storage
├── Application/       # AutoMapper profiles, license & vehicle services
├── Integration/       # External API clients (eBay REST, Facebook Graph v21.0)
├── API/               # ASP.NET Core Web API (20 controllers, 177+ endpoints)
├── Web/               # Blazor Server (18 pages, 7 admin tabs, 4 vehicle detail tabs)
└── PasswordHashSalt/  # Console utility for credential seeding

Clean Architecture layers: Domain → Infrastructure → Application → API / Web

Features

Vehicle Management

  • VIN decoding via NHTSA API
  • Full vehicle lifecycle tracking
  • Vehicle catalog import from CSV

Parts Inventory

  • Part cataloging with condition, pricing, status lifecycle
  • Part interchange engine
  • Batch label printing with QR codes

Customer Management

  • Customer CRUD with typed classification (Retail, Wholesale, Transporter, etc.)
  • Invoice and payment tracking

eBay Integration

  • OAuth authentication
  • Listing creation from templates
  • Order sync and fulfillment
  • Category mapping

Facebook Integration

  • Page posting
  • Engagement tracking
  • Multi-destination support

Label Printing

  • Customizable label templates
  • QR code generation
  • Part info + vehicle info on labels

Tech Stack

Layer Technology Version
Runtime .NET 10.0
API ASP.NET Core Web API 10.0
Frontend Blazor Server (Interactive Server) 10.0
Database SQLite via EF Core
ORM Entity Framework Core 10.0.2
Auth JWT Bearer (HMAC SHA-256)
Mapping AutoMapper 16.0.0
API Docs Swagger / OpenAPI 10.1.1
CSV Import CsvHelper 33.1.0
QR Codes QRCoder 1.7.0
eBay eBay REST APIs (Inventory, Fulfillment, Taxonomy)
Facebook Facebook Graph API v21.0
VIN Decode NHTSA vPIC API Free / Public

Worker Roles

Role Level Description
God 0 System owner — full access to all companies and features
SuperAdmin 1 Platform administrator — cross-company management
Admin 2 Company administrator — company-scoped management
Manager 3 Yard manager — yard operations oversight
Dismantler 4 Dismantles vehicles, catalogs parts
Packer 5 Packages parts for shipping
Accountant 6 Financial operations and invoicing
SalesWorker 7 Handles sales and customers
YardWorker 8 General yard operations
Viewer 9 Read-only access

Domain Model

Core Entities (23)

Entity Description
Company Multi-tenant business root
YardLocation Physical yard (optimistic concurrency via RowVersion)
Worker Employee with multi-role HashSet\<WorkerRole>
Vehicle Full vehicle record with VIN-decoded specifications
Part Inventory part with condition, pricing, status lifecycle
Customer Buyer/supplier with ContactInfo + Address value objects
Invoice Sales invoice with InvoiceLine and Payment collections
MediaAsset Polymorphic media (image/video) for vehicles and parts
StorageLocation Self-referencing hierarchical storage zones
RoleLicense Per-yard role seat caps
VehicleMake / VehicleModel Make/model catalog
VehicleCatalogEntry Pre-populated vehicle specifications
LabelTemplate Part label templates with layout config
LogEntry Structured audit log entries

eBay Entities (5)

EbayAccount, EbayListing, EbayListingTemplate, EbayOrder, PartCategoryEbayMapping

Facebook Entities (3)

FacebookAccount, FacebookDestination, FacebookPostLog

API Endpoints (177+)

The API exposes 20 controllers:

Controller Route Endpoints Key Operations
Auth api/auth 1 JWT login
Vehicles api/vehicle 9 CRUD, VIN lookup, search, filtering
Parts api/parts 12 CRUD, reserve/sell, search, stats
Customers api/customer 8 CRUD, invoices, vehicles per customer
Invoices api/invoices 6 CRUD, payments
Media api/media 4 Upload (1GB), download, reorder
Labels api/labels 7 Label data, QR, scan lookup, templates
eBay api/ebay 30+ Auth, listings, orders, templates, categories
Facebook api/facebook 10+ Accounts, posts, destinations
Storage Locations api/storagelocations 5 CRUD

Web Pages (18)

Route Page Description
/ Home Dashboard with VIN/registration lookup
/login Login Animated login page
/vehicles Vehicles Searchable inventory with filters
/vehicles/{id} Vehicle Details Tabbed: Overview, Parts, Media, Facebook
/parts Parts Full parts inventory with stats
/parts/{id} Part Details Part detail with media, interchange
/customers Customers Customer management with filtering
/invoices/{id} Invoice Detail Printable invoice with branding
/ebay eBay Listings, templates, orders, sync
/interchange Interchange Part interchange database
/logs Logs System logs (God/SuperAdmin)
/admin Admin Dynamic admin tabs (7 tabs, role-gated)

Authentication Flow

  1. User submits credentials to POST /api/auth/login
  2. API validates password (HMACSHA512) and returns JWT token with claims:
    • sub (email), workerId, CompanyId, role, username, companyName
  3. Web stores token in ProtectedSessionStorage (encrypted, tab-scoped)
  4. AuthMessageHandler attaches Authorization: Bearer <token> to all API requests
  5. On 401 response, user redirected to /login
  6. Token lifetime: 1 hour

Deployment

Service Server Domain Port
yardpro-api VPS2 api.yardpro.uk 5000
yardpro-web VPS2 yardpro.uk 5001
catalog VPS2 catalog.yardpro.uk 5002