A polished marketplace experience built with Angular on the client and ASP.NET Core on the server. This project is designed for production-style workflows, secure authentication, and strong role-based operations.
- Responsive Angular frontend for browsing art supplies, placing orders, submitting feedback, and managing profiles.
- Robust ASP.NET Core backend with JWT authentication, ASP.NET Identity, role-based authorization, email verification, and password reset.
- SQL Server persistence using Entity Framework Core.
- Admin operations for inventory, orders, and feedback moderation.
- Production-ready concerns like rate limiting, CORS, logging, and API documentation.
| Area | Feature |
|---|---|
| Authentication | Login, registration, email verification, JWT-based auth |
| Authorization | Role-based guards for User and Admin |
| Catalog | Browse art supplies, search, and place orders |
| Orders | Create orders, view history, admin order management |
| Feedback | Submit feedback, admin review and moderation |
| Security | Rate limiting, token validation, strong password rules |
| API | Swagger documentation, REST controllers |
| Real-time | SignalR hub for tracking and notifications |
angularapp/— frontend application built with Angular and client-side routing.dotnetapp/— backend API, identity handling, database access, email service, and SignalR.dotnetapp/Controllers— REST endpoints for auth, art supplies, orders, feedback, and users.dotnetapp/Services— business logic and data orchestration.dotnetapp/Data/ApplicationDbContext.cs— EF Core context for SQL Server.
- Navigate to the backend folder:
cd dotnetapp - Validate or override configuration values in
appsettings.json:ConnectionStrings:DefaultConnectionFrontendUrlJwt:Key,Jwt:Issuer,Jwt:AudienceEmailSMTP configuration for verification and notifications
- Restore dependencies and run the API:
dotnet restore dotnet run
- Open Swagger for API exploration:
https://localhost:5001/swagger
Tip: For local Angular development, set
FrontendUrltohttp://localhost:4200.
- Change into the frontend folder:
cd angularapp - Install dependencies:
npm install
- Start the Angular app:
ng serve --open
- The application will run at:
http://localhost:4200
If
package.jsonis missing, restore or recreate the Angular project manifest before installing dependencies.
- Launch the backend.
- Launch the frontend.
- Visit the frontend URL and authenticate.
- Use the app as either:
- User: browse supplies, place orders, submit feedback
- Admin: manage inventory and review orders/feedback
/login/register/verify-email/forgot-password/art-supplies/place-order/:id/my-orders/add-feedback/manage-art-supplies/admin-orders/admin-feedback
- The Angular app uses route guards for access control and an HTTP interceptor for JWT token injection.
- The backend enforces strict password policy and email confirmation via Identity.
- SignalR is configured at
/artstore-trackingfor real-time tracking. - Swagger is enabled in development to simplify API validation.
- Rate limiting is configured using
AspNetCoreRateLimitto protect endpoints.
/angularapp # Angular UI
/dotnetapp # ASP.NET Core API
- This repository is intended as an academic demo or team showcase.
- Keep secrets and SMTP credentials out of source control when moving to production.
- Update environment values before running locally.
For educational and demonstration purposes.