A modern, full-featured accounting management system similar to Sage 200, built with ASP.NET Core Web API and Blazor.
- Build Instructions - Complete guide for building on all platforms (NEW)
- Blazor Web App Guide - Complete guide for the web application
- React Native Contractor App Guide - Mobile app for contractors
- Mobile App Guide - Complete guide for the MAUI mobile fulfillment app
- MAUI Implementation - Technical details of the MAUI implementation
- Screenshots Guide - How to capture and contribute screenshots
- Implementation Summary - Technical implementation details
- Multiple Bank Accounts Management - Track multiple bank accounts with balance monitoring
- Product Catalog - Comprehensive product management with stock control and reorder levels
- Sales Order Processing - Create and manage sales orders with customer information
- Sales Invoice Generation - Generate invoices from sales orders with tax calculations
- Quotes Management - Create and manage customer quotes with conversion to orders (NEW)
- Work Orders Management - Track work orders with tasks and site visit sign-offs (NEW)
- Bill of Materials (BOM) - Create and manage BOMs with component tracking
- BOM to Sales Order Linking - Link BOMs to sales order items for component requirement tracking
- Contractor Mobile App - React Native app for offline-first sales orders, quotes, and work orders (NEW)
AccountsPOC/
├── src/
│ ├── AccountsPOC.Domain/ # Domain entities
│ ├── AccountsPOC.Application/ # Application logic layer
│ ├── AccountsPOC.Infrastructure/ # Data access with EF Core
│ ├── AccountsPOC.WebAPI/ # RESTful API (.NET 10)
│ └── AccountsPOC.BlazorApp/ # Blazor Web App UI (.NET 10)
└── ContractorApp/ # React Native mobile app (NEW)
- .NET 10 - Latest .NET framework
- ASP.NET Core Web API - RESTful backend services
- Blazor Web App - Modern, interactive UI with server-side rendering
- React Native with Expo - Cross-platform mobile app for contractors (NEW)
- Entity Framework Core - ORM with SQLite database
- Bootstrap 5 - Modern, responsive UI framework
- Clean Architecture - Separation of concerns and maintainability
- BankAccount - Multiple bank accounts with balance tracking
- Product - Product catalog with pricing and stock levels
- SalesOrder - Customer orders with items
- SalesOrderItem - Line items on sales orders (links to products and BOMs)
- SalesInvoice - Invoices generated from orders
- BillOfMaterial - BOMs for products
- BOMComponent - Components that make up a BOM
- Products can have multiple BOMs
- Sales Orders contain multiple Sales Order Items
- Sales Order Items can link to a BOM
- Sales Invoices are linked to Sales Orders
- BOMs contain multiple BOM Components
See BUILD_INSTRUCTIONS.md for detailed platform-specific build and deployment instructions.
- .NET 10 SDK
- Node.js (v18+) for React Native app
- Any modern IDE (Visual Studio 2022, VS Code, Rider)
- Start the Web API:
cd src/AccountsPOC.WebAPI
dotnet runThe API will start at http://localhost:5001
- Start the Blazor App:
cd src/AccountsPOC.BlazorApp
dotnet runThe Blazor app will start at http://localhost:5193
- Start the React Native Contractor App:
cd ContractorApp
npm install
npm startAccess via Expo Go app or web browser at http://localhost:19006
For detailed instructions on building for iOS, Android, Windows, and Linux, see BUILD_INSTRUCTIONS.md.
dotnet build AccountsPOC.slnGET /api/BankAccounts- List all bank accountsGET /api/BankAccounts/{id}- Get specific bank accountPOST /api/BankAccounts- Create new bank accountPUT /api/BankAccounts/{id}- Update bank accountDELETE /api/BankAccounts/{id}- Delete bank account
GET /api/Products- List all productsGET /api/Products/{id}- Get specific productPOST /api/Products- Create new productPUT /api/Products/{id}- Update productDELETE /api/Products/{id}- Delete product
GET /api/SalesOrders- List all sales orders with itemsGET /api/SalesOrders/{id}- Get specific sales orderPOST /api/SalesOrders- Create new sales orderPUT /api/SalesOrders/{id}- Update sales orderDELETE /api/SalesOrders/{id}- Delete sales order
GET /api/SalesInvoices- List all sales invoicesGET /api/SalesInvoices/{id}- Get specific sales invoicePOST /api/SalesInvoices- Create new sales invoicePUT /api/SalesInvoices/{id}- Update sales invoiceDELETE /api/SalesInvoices/{id}- Delete sales invoice
GET /api/BillOfMaterials- List all BOMs with componentsGET /api/BillOfMaterials/{id}- Get specific BOMPOST /api/BillOfMaterials- Create new BOMPUT /api/BillOfMaterials/{id}- Update BOMDELETE /api/BillOfMaterials/{id}- Delete BOM
The application features a modern, responsive UI with comprehensive interfaces for both web and mobile platforms.
Screenshots of the web interface are available in the docs/screenshots/blazor/ directory, featuring:
- Home Dashboard - Overview of the system with quick access to all features
- Bank Accounts - Manage multiple bank accounts with balance tracking
- Products - Product catalog management with stock control
- Sales Orders - Create and manage customer orders
- Sales Invoices - Generate and track invoices
- Bill of Materials - Create and manage BOMs with component linking
- Management Dashboard - Analytics and reporting
- Payment Processing - Invoice payment management
- Price Lists - Customer-specific pricing
Screenshots of the mobile fulfillment app are available in the docs/screenshots/mobile/ directory, featuring:
- Driver Dashboard - Quick access to warehouse and delivery operations
- Stock Check - Barcode scanning and inventory lookup
- Pick Lists - Order fulfillment and picking operations
- Delivery Routes - GPS-enabled route management
- Parcel Scanning - Package tracking and organization
- Stock Counts - Inventory counting with variance tracking
- Offline Sync - Real-time synchronization status
For detailed information about capturing and contributing screenshots, see the Screenshots Guide.
Contains all domain entities with business logic:
- Entities are in
AccountsPOC.Domain/Entities/ - No dependencies on other layers
Contains application services and interfaces:
- References Domain layer only
- Defines interfaces for infrastructure
Implements data access:
ApplicationDbContext- EF Core DbContext- Database configurations
- References Domain and Application layers
RESTful API implementation:
- Controllers for each entity
- CORS configuration for Blazor app
- References Application and Infrastructure layers
Modern web UI:
- Interactive server-side components
- Pages for each feature area
- HTTP client for API communication
The application uses SQLite for simplicity and portability. The database file AccountsPOC.db is created automatically in the Web API project directory on first run.
For production use, you can easily switch to SQL Server by:
- Updating the connection string in
appsettings.json - Changing
UseSqlite()toUseSqlServer()inProgram.cs
The application implements:
- Input validation through Entity Framework
- CORS policy to restrict API access
- Proper data types with precision for monetary values
- Unique indexes on key fields (account numbers, product codes, etc.)
No critical security vulnerabilities detected.
Potential areas for expansion:
- User authentication and authorization
- Multi-tenant support
- Advanced reporting and analytics
- Payment processing integration
- Inventory management
- Purchase orders
- General ledger integration
- Excel import/export
- PDF invoice generation
This is a proof-of-concept application for demonstration purposes.