An enterprise-grade inventory management solution built with ASP.NET Core, featuring Clean Architecture principles and Domain-Driven Design patterns.
DevSkill Inventory is a comprehensive inventory management system designed for businesses to efficiently manage their products, sales, customers, and financial transactions. Built with modern .NET technologies and cloud-native architecture, this application ensures scalability, security, and maintainability.
- ποΈ Clean Architecture: Separation of concerns for better maintainability
- π Enterprise Security: Role-based and claim-based access control
- βοΈ Cloud-Ready: AWS S3 and SQS integration
- π Real-Time Insights: Comprehensive reporting and analytics
- π³ Container-First: Docker support for easy deployment
- Features
- Architecture
- Technology Stack
- Getting Started
- Installation
- Configuration
- Core Modules
- Docker Deployment
- Testing
- Contributing
- License
- Contact
- Complete CRUD operations for products
- Category-based product organization
- Stock level tracking with low-stock alerts
- Dual pricing support (MRP, wholesale)
- Image upload with automatic resizing (AWS S3)
- Multi-type sales transactions (MRP, wholesale)
- Payment status tracking
- Customer balance management
- Account transfers (Cash, Bank, Mobile)
- Comprehensive sales reporting
- Customer database with purchase history
- Balance tracking
- Customer-specific pricing
- Relationship management
- Hybrid authentication (role + claim-based)
- Fine-grained permission system
- Employee management
- Department and unit management
- Secure password policies with ASP.NET Core Identity
- Background job processing for image resizing
- AWS SQS message queuing
- Email notifications
- Real-time dashboard
- Audit logging with Serilog
This project implements Clean Architecture with Domain-Driven Design (DDD) principles, ensuring a clear separation of concerns and high testability.
DevSkill.Inventory/
βββ DevSkill.Inventory.Domain/ # Core business logic & entities
β βββ Entities/ # Domain models
β βββ Interfaces/ # Repository & service contracts
β βββ DTOs/ # Data transfer objects
β
βββ DevSkill.Inventory.Application/ # Use cases & business logic
β βββ Features/ # CQRS commands & queries
β βββ Services/ # Application services
β βββ Mappings/ # AutoMapper profiles
β
βββ DevSkill.Inventory.Infrastructure/ # External concerns
β βββ Data/ # EF Core & repositories
β βββ Identity/ # Authentication & authorization
β βββ Services/ # External service implementations
β
βββ DevSkill.Inventory.Web/ # Presentation layer
β βββ Controllers/ # MVC controllers
β βββ Views/ # Razor views
β βββ wwwroot/ # Static files
β
βββ DevSkill.Inventory.Worker/ # Background processing
βββ Jobs/ # Scheduled tasks
| Pattern | Implementation | Benefits |
|---|---|---|
| ποΈ Repository | Data access abstraction | Testability, persistence ignorance |
| π Unit of Work | Transaction management | Data consistency, atomic operations |
| β‘ CQRS | MediatR implementation | Scalability, separation of concerns |
| π Dependency Injection | Autofac container | Loose coupling, maintainability |
- Framework: ASP.NET Core MVC (.NET 9)
- ORM: Entity Framework Core
- Database: Microsoft SQL Server (with stored procedures)
- Authentication: ASP.NET Core Identity (extended)
- Patterns: CQRS via MediatR
- UI Framework: AdminLTE
- Templating: Razor Pages
- Styling: Bootstrap 5 + Custom CSS
- JavaScript: Modern ES6+
- Storage: Amazon S3 (image storage)
- Messaging: Amazon SQS (async processing)
- Containerization: Docker & Docker Compose
- Logging: Serilog
- DI Container: Autofac
- Object Mapping: AutoMapper
- Testing: NUnit, Moq, Shouldly
- Code Coverage: Coverlet
Before you begin, ensure you have the following installed:
- β .NET 9 SDK
- β SQL Server 2019+ or Docker
- β Visual Studio 2022 or VS Code
- β
EF Core CLI Tools:
dotnet tool install --global dotnet-ef
- πͺ£ AWS Account with S3 bucket
- π¨ AWS SQS Queue configured
- π AWS IAM credentials
-
Clone the repository
git clone https://github.com/your-username/DevSkill.Inventory.git cd DevSkill.Inventory -
Restore dependencies
dotnet restore
-
Update database connection
Edit
DevSkill.Inventory.Web/appsettings.json:{ "ConnectionStrings": { "DefaultConnection": "Server=localhost;Database=InventoryDB;Trusted_Connection=true;" } } -
Apply database migrations
cd DevSkill.Inventory.Web dotnet ef database update -
Run the application
dotnet run
Access at:
https://localhost:5001orhttp://localhost:5000
-
Clone and navigate
git clone https://github.com/your-username/DevSkill.Inventory.git cd DevSkill.Inventory -
Configure environment variables
Create
.envfile:DB_CONNECTION=Server=sql-server;Database=InventoryDB;User=sa;Password=YourStrong@Passw0rd AWS_REGION=us-east-1 AWS_ACCESS_KEY=your_access_key AWS_SECRET_KEY=your_secret_key AWS_S3_BUCKET=your-bucket-name AWS_SQS_URL=your-sqs-url
-
Launch with Docker Compose
docker-compose up --build -d
Access at:
http://localhost:8000
For full functionality with image storage and background processing:
{
"AWS": {
"Profile": "your-profile",
"Region": "us-east-1",
"BucketName": "your-inventory-bucket",
"SqsUrl": "https://sqs.us-east-1.amazonaws.com/your-account/your-queue",
"UrlExpiryMinutes": 15
}
}After first run:
- Email:
[email protected] - Password:
123456
Manages financial accounts and transaction types:
- Cash accounts
- Bank accounts
- Mobile banking accounts
- Balance transfers
Product categorization system:
- Hierarchical categories
- Category-based filtering
- Bulk category operations
Customer relationship management:
- Customer profiles
- Purchase history
- Balance tracking
- Customer analytics
Core inventory functionality:
- Product CRUD operations
- Stock management
- Pricing (MRP & wholesale)
- Image management
- Low-stock alerts
Sales transaction processing:
- Order creation
- Payment tracking
- Sales reports
- Invoice generation
Identity and access management:
- User authentication
- Role management
- Claim-based permissions
- Employee assignments
The project includes a complete Docker setup with multi-service orchestration.
services:
- web: ASP.NET Core web application
- worker: Background processing service
- sql-server: Microsoft SQL Server database# Build and start all services
docker-compose up --build -d
# View logs
docker-compose logs -f
# Stop services
docker-compose down
# Stop and remove volumes (β οΈ deletes data)
docker-compose down -vRun the comprehensive test suite:
# Run all tests
dotnet test
# Run tests with coverage
dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=opencover
# Run specific test project
dotnet test DevSkill.Inventory.Tests- Unit Tests: Domain and application logic
- Integration Tests: Database and external services
- E2E Tests: Complete user workflows
We welcome contributions! Please follow these guidelines:
- Fork the repository
- Create a feature branch
git checkout -b feature/AmazingFeature
- Commit your changes
git commit -m 'Add some AmazingFeature' - Push to the branch
git push origin feature/AmazingFeature
- Open a Pull Request
- Follow C# coding conventions
- Write unit tests for new features
- Update documentation as needed
- Ensure all tests pass before submitting
This project is licensed under the MIT License - see the LICENSE file for details.
Nazmul
- πΌ LinkedIn: https://linkedin.com/in/md-nazmulhasan
- π GitHub: https://github.com/na2mul
- π§ Email: [email protected]
- Clean Architecture principles by Robert C. Martin
- Domain-Driven Design by Eric Evans
- ASP.NET Core community
- All contributors who have helped this project
β If this project helped you, please consider giving it a star!
Made with β€οΈ using ASP.NET Core