A full-stack e-commerce application built with Angular and ASP.NET Core, featuring a modern, responsive design and comprehensive e-commerce functionality.
- Product Catalog: Browse products with filtering, sorting, and pagination
- Shopping Cart: Add/remove items with persistent cart functionality using Redis
- User Authentication: Registration and login with JWT tokens
- Order Management: Complete order processing and order history
- Payment Integration: Stripe payment processing
- Responsive Design: Mobile-first design with Bootstrap
- Admin Features: Product and order management
- Real-time Updates: Modern SPA with Angular
- ASP.NET Core 8.0 - Web API framework
- Entity Framework Core - ORM for data access
- SQLite - Database for development
- Redis - Caching and session storage
- AutoMapper - Object mapping
- Stripe - Payment processing
- JWT - Authentication and authorization
- Swagger - API documentation
- Angular 16 - Frontend framework
- TypeScript - Programming language
- Bootstrap 5 - CSS framework
- NgBootstrap - Angular Bootstrap components
- Font Awesome - Icons
- RxJS - Reactive programming
- Clean Architecture - Separation of concerns
- Repository Pattern - Data access abstraction
- Unit of Work Pattern - Transaction management
- Dependency Injection - Loose coupling
- .NET 8.0 SDK
- Node.js (v18+)
- Angular CLI
- Redis (for caching)
git clone https://github.com/klajdm/skinet.git
cd skinetNavigate to the API directory:
cd APIRestore NuGet packages:
dotnet restoreUpdate the database:
dotnet ef database updateRun the API:
dotnet runThe API will be available at https://localhost:5001
Navigate to the client directory:
cd clientInstall npm packages:
npm installStart the Angular development server:
ng serveThe application will be available at https://localhost:4200
Make sure Redis is running on your machine. The application expects Redis to be available at localhost:6379.
skinet/
βββ API/ # ASP.NET Core Web API
β βββ Controllers/ # API controllers
β βββ Dtos/ # Data transfer objects
β βββ Extensions/ # Service extensions
β βββ Helpers/ # Utility classes
β βββ Middleware/ # Custom middleware
βββ Core/ # Domain layer
β βββ Entities/ # Domain entities
β βββ Interfaces/ # Repository interfaces
β βββ Specifications/ # Query specifications
βββ Infrastructure/ # Data access layer
β βββ Data/ # EF Core repositories
β βββ Identity/ # Identity implementation
β βββ Services/ # Business services
βββ client/ # Angular frontend
βββ src/
βββ app/ # Angular components and services
Update appsettings.json in the API project:
{
"ConnectionStrings": {
"DefaultConnection": "Data source=skinet.db",
"IdentityConnection": "Data source=identity.db",
"Redis": "localhost"
},
"Token": {
"Key": "your-super-secret-key-here",
"Issuer": "https://localhost:5001"
},
"StripeSettings": {
"PublishableKey": "your-stripe-publishable-key",
"SecretKey": "your-stripe-secret-key"
}
}Update environment files in client/src/environments/:
export const environment = {
production: false,
apiUrl: 'https://localhost:5001/api/',
stripePublishableKey: 'your-stripe-publishable-key'
};cd API
dotnet testcd client
ng testBuild and run with Docker Compose:
docker-compose up --buildContributions are welcome! Please see our Contributing Guidelines for details.
Please see our Security Policy for reporting security vulnerabilities.
This project is licensed under the MIT License - see the LICENSE file for details.
Klajdi Murataj
- GitHub: @klajdm
- Angular team for the excellent framework
- Microsoft for ASP.NET Core
- All the open-source contributors whose packages make this project possible
- Mobile app development
- Advanced analytics dashboard
- Multi-vendor support
- Internationalization
- Enhanced search functionality
- Wishlist feature
- Product reviews and ratings
β Star this repo if you find it helpful!