A full-stack e-commerce platform built with Angular 21 and ASP.NET Core, featuring real-time notifications, role-based dashboards, and a complete shopping experience.
Frontend
- Angular 21 (Standalone Components, Signals, Reactive Forms)
- Bootstrap 5 + ng-bootstrap v20
- Chart.js via ng2-charts
- tsParticles
- Microsoft SignalR Client
Backend
- ASP.NET Core (.NET 10)
- Entity Framework Core + SQL Server
- MediatR (CQRS pattern)
- ASP.NET Identity
- SignalR
- JWT via HttpOnly Cookies
- Google & Facebook OAuth
- Browse and filter products by category, price, rating, and search
- Add to cart (guest and authenticated)
- Wishlist management
- Profile management with avatar upload
- Address management
- Change password
- Become a seller
- Order history
- Newsletter subscription
- Help center with FAQ search
- Contact support form
- Store overview with earnings, orders, and product performance charts
- Product management (create, edit, soft delete)
- Store profile editing with logo upload
- Seller statistics dashboard
- Platform overview with real-time charts
- Customer management (search, filter, ban, restore, delete)
- Seller management (approve, delete)
- Admin account management
- Real-time message inbox via SignalR
- Product management with restore capability
- Banner management (CRUD)
- Category management (CRUD)
- Promo code management
- Newsletter subscribers list
- Email/password registration and login
- Google OAuth
- Facebook OAuth
- Email confirmation flow
- Role-based redirect after login (Admin → Dashboard, Seller → Store, Customer → Home)
ECommerce/
├── ECommerce.API/ # Controllers, Hubs, Middleware
├── ECommerce.Application/ # CQRS Commands, Queries, DTOs, Interfaces
├── ECommerce.Domain/ # Entities, Enums
├── ECommerce.Infrastructure/ # DbContext, Repositories, Services
└── ECommerce.Client/ # Angular 21 Frontend
└── src/app/
├── core/ # Services, Guards, Interceptors, Models
├── features/ # Feature modules (auth, admin, seller, profile, etc.)
├── layouts/ # Layout components (main, auth, admin, seller, profile)
└── shared/ # Shared components, pipes, validators
- .NET 10 SDK
- Node.js 20+
- SQL Server
- Angular CLI 21
# Clone the repository
git clone <repository-url>
cd ECommerce
# Update connection string in appsettings.json
"ConnectionStrings": {
"DefaultConnection": "Server=YOUR_SERVER;Database=VortexDB;Trusted_Connection=True;"
}
# Apply migrations and seed database
dotnet ef database update
# Run the API
dotnet run --project ECommerce.APIThe API will be available at https://localhost:7018
cd ECommerce.Client
# Install dependencies
npm install
# Start the development server
ng serveThe app will be available at http://localhost:4200
The database seeds the following accounts automatically on first run:
| Role | Password | |
|---|---|---|
| Admin | admin@vortex.com | Admin@123 |
| Seller | seller@vortex.com | Seller@123 |
| Customer | customer@vortex.com | Customer@123 |
Note: All seed accounts have email confirmation pre-approved.
| Group | Base Route | Description |
|---|---|---|
| Auth | /api/auth |
Login, register, OAuth, change password |
| Admin | /api/admin |
Full platform management |
| User | /api/user |
Profile management |
| Seller | /api/seller |
Seller dashboard and products |
| Products | /api/products |
Product catalog |
| Cart | /api/cart |
Shopping cart |
| Wishlist | /api/wishlist |
Wishlist management |
| Orders | /api/orders |
Order management |
| Category | /api/category |
Product categories |
| Contact | /api/contact |
Customer support messages |
| Newsletter | /api/newsletter |
Newsletter subscriptions |
| Banner | /api/banner |
Homepage banners |
Vortex uses SignalR for real-time communication:
- Admins automatically join the
Adminsgroup on dashboard load - When a customer submits a contact message, admins receive an instant toast notification
- Unread message badge updates in real-time without page refresh
The backend follows Clean Architecture with CQRS pattern:
- Domain — Entities and business rules
- Application — Use cases via MediatR commands and queries
- Infrastructure — Database, repositories, external services
- API — Controllers, SignalR hubs, middleware
Authentication uses HttpOnly cookies for JWT storage, preventing XSS attacks. All API calls are intercepted to handle 401/403 responses automatically.
Frontend environment (src/environments/environment.ts):
export const environment = {
production: false,
apiUrl: 'https://localhost:7018/api/'
};This project is licensed for educational purposes.