A comprehensive ERP solution designed for small and medium-sized businesses to streamline operations, manage finances, and drive growth.
- Overview
- Features
- Tech Stack
- Architecture
- Getting Started
- Development
- Deployment
- Team
- Roadmap
- Contributing
- API Documentation
- License
PRISM is a modern, scalable ERP system built to help small and medium-sized businesses manage their entire operation from a single platform. From inventory management to financial reporting, PRISM provides the tools businesses need to operate efficiently and make data-driven decisions.
- π Modern Architecture: Built with .NET 9 and clean architecture principles
- πΌ Business-Focused: Designed specifically for SMB needs
- π Real-Time Insights: Live dashboards and comprehensive reporting
- π Secure: Enterprise-grade security with role-based access control
- π± Responsive: Works seamlessly across desktop and mobile devices
- Multi-branch inventory tracking
- Real-time stock levels and alerts
- Item categorization and SKU management
- Supplier management and relationships
- Complete order lifecycle tracking
- Customer order history
- Dynamic pricing and discounts
- Order status workflows
- Expense tracking and categorization
- Payment processing and reconciliation
- Revenue and profit analytics
- Multi-business financial oversight
- Interactive dashboards
- Custom report generation
- Excel export functionality
- Top-selling items analytics
- Customer insights
- Manage multiple businesses from one account
- Branch-level operations
- Consolidated reporting
- Business-specific configurations
- JWT-based authentication
- Cookie-based session management
- Role-based access control (RBAC)
- Secure password management
- Audit logging
- Framework: .NET 9.0 (ASP.NET Core MVC)
- ORM: Entity Framework Core 9.0
- Database: Microsoft SQL Server (Latest)
- Authentication: ASP.NET Core Identity + JWT
- Architecture: Clean Architecture with Repository & Unit of Work patterns
- UI Framework: Bootstrap 5
- JavaScript: jQuery
- Icons: Font Awesome
- Charts: Chart.js, Recharts
- Data Export: ClosedXML (Excel)
- Hosting: MonsterASP
- CI/CD: GitHub Actions
- Version Control: Git/GitHub
- Container: Docker support
PRISM follows Clean Architecture principles with clear separation of concerns:
PRISM/
βββ Controllers/ # HTTP request handlers
βββ Services/ # Business logic layer
β βββ IServices/ # Service interfaces
β βββ *Service.cs # Service implementations
βββ Repositories/ # Data access layer
β βββ IRepositories/ # Repository interfaces
β βββ Repository.cs # Generic repository
βββ DataAccess/ # Database context & migrations
β βββ IRepositories/ # Unit of Work interface
β βββ UnitOfWork.cs # Unit of Work implementation
βββ Models/ # Domain entities
βββ Dto/ # Data transfer objects
βββ Helpers/ # Utility classes
βββ Views/ # Razor views
- β Repository Pattern: Abstraction over data access
- β Unit of Work Pattern: Transaction management
- β Service Layer Pattern: Business logic separation
- β Dependency Injection: Loose coupling
- β SOLID Principles: Maintainable, extensible code
- .NET 9.0 SDK
- SQL Server 2019+ or SQL Server Express
- Visual Studio 2022 or VS Code
- Git
-
Clone the repository
git clone https://github.com/your-org/prism.git cd prism -
Configure Database Connection
Update
appsettings.json:{ "ConnectionStrings": { "DefaultConnection": "Server=YOUR_SERVER;Database=PRISM_DB;Trusted_Connection=True;MultipleActiveResultSets=True;TrustServerCertificate=True;" } } -
Configure JWT Settings
{ "jwt": { "key": "YOUR_SECRET_KEY_HERE_MIN_32_CHARS", "Issuer": "yourdomain.com", "Audience": "yourdomain.com", "DurationInDays": 30 } } -
Run Migrations
dotnet ef database update
-
Run the Application
dotnet run
-
Access the Application
- Navigate to:
https://localhost:8081 - Or:
http://localhost:8080
- Navigate to:
We follow Git Flow branching model:
main- Production-ready codedevelop- Integration branch for featuresfeature/*- New features (e.g.,feature/order-management)bugfix/*- Bug fixes (e.g.,bugfix/login-issue)hotfix/*- Critical production fixesrelease/*- Release preparation
We use Conventional Commits:
type(scope): subject
body (optional)
footer (optional)
Types:
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting)refactor: Code refactoringtest: Adding or updating testschore: Maintenance tasks
Examples:
feat(orders): add UTC datetime field with edit capability
fix(auth): resolve cookie authentication issue
docs(readme): update installation instructions
refactor(orders): implement repository pattern and clean architecture- C# Naming Conventions: Follow Microsoft C# conventions
- Indentation: 4 spaces
- Line Length: Max 120 characters
- Comments: XML documentation for public APIs
- Async/Await: Use async methods for I/O operations
- Null Safety: Use nullable reference types
# Run all tests
dotnet test
# Run specific test project
dotnet test PRISM.Tests
# With coverage
dotnet test /p:CollectCoverage=true# Add new migration
dotnet ef migrations add MigrationName
# Update database
dotnet ef database update
# Rollback migration
dotnet ef database update PreviousMigrationName
# Remove last migration (if not applied)
dotnet ef migrations removeThe application is automatically deployed via GitHub Actions on push to main.
-
Publish the Application
dotnet publish -c Release -o ./publish
-
Configure Production Settings
Ensure
appsettings.Production.jsonhas correct values:{ "ConnectionStrings": { "DefaultConnection": "Production_Connection_String" }, "jwt": { "key": "Production_JWT_Secret_Key" } } -
Deploy via FTP or Web Deploy
- Upload contents of
./publishfolder - Ensure
web.configis configured - Restart the application pool
- Upload contents of
Set these in your hosting environment:
| Variable | Description | Required |
|---|---|---|
ASPNETCORE_ENVIRONMENT |
Environment name (Production) | β |
ConnectionStrings__DefaultConnection |
Database connection string | β |
jwt__key |
JWT signing key | β |
jwt__Issuer |
JWT issuer | β |
jwt__Audience |
JWT audience | β |
- Beshoy Gamal Waheb - Full-Stack Developer
- Salah Eldin Mohamed - Full-Stack Developer
- Mohamed Bahaa Mohamed - Full-Stack Developer
- Aya Yehya - QA Engineer & Unit Testing Specialist
- Core authentication and authorization
- Multi-business and branch management
- Basic CRUD operations for all entities
- Database design and migrations
- Initial UI/UX implementation
- Order management system
- Inventory tracking
- Customer management
- Supplier management
- Expense tracking
- Payment processing
- Dashboard with real-time metrics
- Report generation and Excel export
- Implement Repository Pattern
- Implement Unit of Work Pattern
- Service Layer extraction
- Clean Architecture refactoring
- Performance optimization
- Transaction management
- Advanced analytics and BI dashboards
- Forecasting and predictive analytics
- Automated inventory replenishment
- Multi-currency support
- Tax calculation and compliance
- Email notifications system
- Document management (invoices, receipts)
- Barcode/QR code scanning
- RESTful API with Swagger documentation
- API rate limiting and versioning
- Webhook support
- Third-party integrations (payment gateways)
- Mobile app API endpoints
- Export/Import functionality (CSV, JSON)
- Two-factor authentication (2FA)
- Advanced audit logging
- Data encryption at rest
- GDPR compliance features
- Backup and disaster recovery
- Security penetration testing
- Comprehensive unit test coverage (80%+)
- Integration tests
- End-to-end testing
- Performance testing and benchmarking
- Load testing
- Automated testing pipeline
- Microservices architecture evaluation
- Containerization with Kubernetes
- Caching layer (Redis)
- Message queue implementation
- Multi-tenant architecture
- White-label capability
- API marketplace
- Multi-language support (i18n)
- Regional date/time formats
- Currency localization
- Right-to-left (RTL) language support
- Regional compliance features
We welcome contributions! Please follow these guidelines:
-
Create a Feature Branch
git checkout -b feature/your-feature-name
-
Make Your Changes
- Write clean, documented code
- Follow our code style guidelines
- Add/update tests as needed
-
Commit Your Changes
git commit -m "feat(module): description of changes" -
Push to Your Branch
git push origin feature/your-feature-name
-
Open a Pull Request
- Use the PR template
- Link related issues
- Request review from team members
- Ensure CI/CD passes
- Required Reviewers: Minimum 1 team member approval
- Review Checklist:
- Code follows style guidelines
- No console.log or debug code
- Tests pass locally
- Documentation updated if needed
- No merge conflicts
- Performance considerations addressed
Use GitHub Issues with appropriate labels:
bug- Something isn't workingenhancement- New feature or requestdocumentation- Documentation improvementsgood first issue- Good for newcomershelp wanted- Extra attention neededpriority-high- Critical issues
All API endpoints require authentication via JWT token.
Login Endpoint:
POST /api/Authentication/Login
Content-Type: application/json
{
"email": "user@example.com",
"password": "your-password"
}Response:
{
"token": "eyJhbGciOiJIUzI1NiIs...",
"refreshToken": "refresh_token_here",
"email": "user@example.com",
"userName": "user@example.com",
"roles": ["Admin"],
"expiresOn": "2025-02-22T10:30:00Z"
}Include the token in request headers:
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...GET /Order- List all ordersGET /Order/Details/{id}- Get order detailsPOST /Order/Create- Create new orderPOST /Order/Edit/{id}- Update orderPOST /Order/Delete/{id}- Delete order (soft delete)
GET /Business- List businessesPOST /Business/Create- Create businessPUT /Business/Edit/{id}- Update businessDELETE /Business/Delete/{id}- Archive business
GET /Items- List itemsPOST /Items/Create- Create itemPUT /Items/Edit/{id}- Update itemDELETE /Items/Delete/{id}- Archive item
Note: Full Swagger/OpenAPI documentation coming in Phase 5
- β JWT token authentication
- β Password hashing with ASP.NET Core Identity
- β HTTPS enforcement
- β SQL injection prevention (parameterized queries)
- β XSS protection
- β CSRF tokens
- β Rate limiting
- β Audit logging
- Built with β€οΈ by the PRISM Team
- Special thanks to all contributors
- Powered by .NET and open-source technologies
Β© 2024-2025 PRISM Team. All rights reserved.