How demi-ayman/bmb-ordering-system works
BMB Ordering is an ASP.NET Core ordering system: customers register or log in, then create, view, or soft-delete their orders; repeated qualifying deletions trigger a temporary ordering ban. Administrators can review customers and orders, including customer-specific order history. The README also documents a same-host browser client and consistent Problem Details errors. Edges are limited to relationships shown in the README or source-index references; unsampled controller, admin, and infrastructure internals are represented at their exact enclosing directories.
Main entry points: DeleteOrderHandler.cs Delete and Ban · Program.cs API Host · Persistence Persistence Contracts · Authentication Register and Login
Components 22
API and Client
- API Host
src/BmbOrdering.Api/Program.cs - Authentication API
src/BmbOrdering.Api/Controllers/AuthenticationController.cs - Orders API
src/BmbOrdering.Api/Controllers/OrdersController.cs - Admin API
src/BmbOrdering.Api/Controllers/AdminCustomersController.cs - Web Client
src/BmbOrdering.Api/wwwroot/js/app.js - Error Handling
src/BmbOrdering.Api/Middleware/ExceptionHandlingMiddleware.cs
Application Use Cases
- Register and Login
src/BmbOrdering.Application/Authentication - Create Order
src/BmbOrdering.Application/Orders/Create/CreateOrderHandler.cs - Order Queries
src/BmbOrdering.Application/Orders - Delete and Ban
src/BmbOrdering.Application/Orders/Delete/DeleteOrderHandler.cs - Admin Queries
src/BmbOrdering.Application/Customers - Persistence Contracts
src/BmbOrdering.Application/Abstractions/Persistence
Ordering Domain
- Customer Rules
src/BmbOrdering.Domain/Customers/Customer.cs - Order Rules
src/BmbOrdering.Domain/Orders/Order.cs - Deletion Audit Event
src/BmbOrdering.Domain/Orders/OrderDeletionEvent.cs
Infrastructure
- Ordering Database
src/BmbOrdering.Infrastructure/Persistence/OrderingDbContext.cs - EF Repositories
src/BmbOrdering.Infrastructure/Persistence/Repositories - Serializable Transaction
src/BmbOrdering.Infrastructure/Persistence/TransactionManager.cs - JWT Tokens
src/BmbOrdering.Infrastructure/Authentication/JwtTokenGenerator.cs - Role Provider
src/BmbOrdering.Infrastructure/Authorization/ConfigurationUserRoleProvider.cs
Other components
- Customer
- Browser User
Connections 32
- Customer → Web Client: uses
README.md - Web Client → API Host: calls
- Browser User → API Host: requests
README.md - API Host → Authentication API: hosts
src/BmbOrdering.Api/Program.cs - API Host → Orders API: hosts
src/BmbOrdering.Api/Program.cs - API Host → Admin API: hosts
src/BmbOrdering.Api/Program.cs - Authentication API → Register and Login: dispatches
src/BmbOrdering.Api/Controllers/AuthenticationController.cs - Orders API → Create Order: dispatches
src/BmbOrdering.Api/Controllers/OrdersController.cs - Orders API → Order Queries: dispatches
src/BmbOrdering.Api/Controllers/OrdersController.cs - Orders API → Delete and Ban: dispatches
src/BmbOrdering.Api/Controllers/OrdersController.cs - Admin API → Admin Queries: dispatches
src/BmbOrdering.Api/Controllers/AdminCustomersController.cs - Register and Login → Persistence Contracts: uses
src/BmbOrdering.Application/Authentication/Register/RegisterCustomerHandler.cs - Register and Login → JWT Tokens: generates token
src/BmbOrdering.Application/Authentication/Login/LoginCustomerHandler.cs - Register and Login → Role Provider: gets roles
src/BmbOrdering.Application/Authentication/Login/LoginCustomerHandler.cs - Register and Login → Customer Rules: registers
src/BmbOrdering.Application/Authentication/Register/RegisterCustomerHandler.cs - Create Order → Persistence Contracts: reads and saves
src/BmbOrdering.Application/Orders/Create/CreateOrderHandler.cs - Create Order → Customer Rules: checks ban
src/BmbOrdering.Application/Orders/Create/CreateOrderHandler.cs - Create Order → Order Rules: creates
src/BmbOrdering.Application/Orders/Create/CreateOrderHandler.cs - Order Queries → Persistence Contracts: queries
src/BmbOrdering.Application/Orders/GetById/GetOrderByIdHandler.cs - Delete and Ban → Persistence Contracts: reads and saves
src/BmbOrdering.Application/Orders/Delete/DeleteOrderHandler.cs - Delete and Ban → Serializable Transaction: runs within
src/BmbOrdering.Application/Orders/Delete/DeleteOrderHandler.cs - Delete and Ban → Order Rules: soft deletes
src/BmbOrdering.Application/Orders/Delete/DeleteOrderHandler.cs - Delete and Ban → Deletion Audit Event: records
src/BmbOrdering.Application/Orders/Delete/DeleteOrderHandler.cs - Delete and Ban → Customer Rules: applies ban
src/BmbOrdering.Application/Orders/Delete/DeleteOrderHandler.cs - Admin Queries → Persistence Contracts: queries
src/BmbOrdering.Application/Customers/GetOrders/GetCustomerOrdersForAdminHandler.cs - EF Repositories → Persistence Contracts: implements
src/BmbOrdering.Infrastructure/Persistence/Repositories/CustomerRepository.cs - EF Repositories → Ordering Database: queries
src/BmbOrdering.Infrastructure/Persistence/Repositories/CustomerRepository.cs - Serializable Transaction → Ordering Database: controls transaction
src/BmbOrdering.Infrastructure/Persistence/TransactionManager.cs - Ordering Database → Customer Rules: persists
src/BmbOrdering.Infrastructure/Persistence/OrderingDbContext.cs - Ordering Database → Order Rules: persists
src/BmbOrdering.Infrastructure/Persistence/OrderingDbContext.cs - Ordering Database → Deletion Audit Event: persists
src/BmbOrdering.Infrastructure/Persistence/OrderingDbContext.cs - API Host → Error Handling: configures
src/BmbOrdering.Api/Program.cs