A web-based Customer Relationship Management (CRM) and Enterprise Resource Planning (ERP) system designed specifically for console repair shops to streamline customer management, ticket pipelines, dynamic invoicing, and inventory operations. Built with ASP.NET Core and Entity Framework Core.
- Create, edit, and manage customer profiles with contact information
- Track customers devices with detailed ticket system
- Generate, create, and manage invoices with payment tracking
- Maintain inventory of items
- Manage services, service rates and service-related transactions
- Configurable shop-level settings and preferences
- Secure login with cookie-based authentication
ConsoleCRM/
├── Models/ # Data models (Customer, Ticket, Invoice, ...)
├── Pages/ # Razor Pages (UI layer)
│ ├── admin/ # Admin settings
│ ├── Authentication/ # Log in/out pages
│ ├── customers/ # Customer management pages
│ ├── inventory/ # Inventory management pages
│ ├── invoices/ # Invoice management pages
│ ├── pos/ # Point of Sale system for quick retail transactions
│ ├── Shared/ # SVGs/validation JS'es
│ ├── tickets/ # Repair ticket pages
│ └── tracking/ # Repair ticket tracking page for customers
├── Data/ # Database context and initializer
├── Migrations/ # Entity Framework migrations
├── wwwroot/ # Static files (Images, Fonts, JS, CSS, Uploads, ...)
├── Program.cs # Application startup configuration
└── appsettings.json # Configuration file
- Customer: Stores customer information (name, surname, phone number)
- Ticket: Repair tickets linked to customers
- TicketPhoto: Photo attachments for tickets
- Invoice: Invoice records with associated items
- InvoiceItem: Line items within invoices
- Device: Devices tracked per customer
- ServiceRate: Service pricing information
- User: User accounts for CRM system
- Platform: Console platform configuration data
- Inventory: Inventory management
- ShopSetting: Shop-wide configuration settings
- .NET 8 SDK
- Microsoft.EntityFrameworkCore
- Npgsql.EntityFrameworkCore.PostgreSQL
- Magick.NET-Q8-AnyCPU
- Visual Studio Code or Visual Studio 2022
git clone https://github.com/rreha/consolecrm
cd consolecrmExport your PostgreSQL connection string with credentials:
export ConnectionStrings__DefaultConnection="Host=YOUR_IP_HERE;Port=YOUR_PORT_HERE;Database=ConsoleCRM;Username=YOUR_USERNAME_HERE;Password=YOUR_PASSWORD_HERE"cd ConsoleCRM
dotnet restoredotnet ef database updatedotnet run- Navigate to
/loginto access the login page
- Overview of active repairs, stocks and recent activity
- Quick action command center for fast navigation
- Visual charting of repair trends and platform statistics
- Fast checkout system for walk-in retail sales without needing to create a customer profile or repair ticket
- QR code scanner integration for rapid item entry
- Manual item lookup with real-time stock validation
- Dynamic cart preview with automatic tax calculation and grand totals
- Automatically deducts sold items from inventory and instantly generates a paid receipt
- Open new support requests with photo attachments
- View ticket status and details
- Dynamic QR code generation with one click thermal label printing
- Use ticket photo functionality for visual documentation
- Mark tickets as resolved
- Generate invoices for customers
- Break down invoice totals by service/product
- Monitor invoice payment status
- Access comprehensive invoice information
- Track parts, SKUs, and stock levels across different hardware platforms
- Dynamic QR code generation with one-click thermal label printing
- Color-coded stock status indicators (Low Stock and Out of Stock warnings)
- Advanced search by SKU, part name, or platform with built-in pagination
- Track both wholesale cost and retail pricing for Point of Sale (POS) integration
- Chart.js integration for visual data representation
- Add new customers with name, surname, and phone number
- Update existing customer information
- See all support tickets for a customer
- A dedicated page allowing clients to securely check the real-time repair status and progress of their devices
- Configure shop-wide settings and preferences
- International phone number masking with libphonenumber-js














