A modern, enterprise-grade Learning Management System built with .NET 8, Blazor Server, and SQL Server.
- Course Management: Create, edit, and organize courses with sections and lessons
- User Authentication: JWT-based API authentication with Google OAuth integration
- Payment Processing: Stripe integration for course purchases
- Enterprise Monitoring: Comprehensive logging and performance monitoring
- Real-time Features: SignalR integration for live updates
- Responsive Design: Modern UI with Blazor Server components
- .NET 8.0 - Core framework
- Blazor Server - Interactive web UI
- ASP.NET Core Web API - RESTful API
- Entity Framework Core 8 - Data access layer
- SQL Server - Primary database
- Redis - Caching and session storage
- Docker - Containerization
- nginx - Reverse proxy and load balancer
- Docker and Docker Compose
- .NET 8.0 SDK (for development)
- SQL Server (or use Docker container)
- Clone the repository
- Copy environment configuration:
cp .env.example .env
- Start all services:
docker-compose up -d
- Access the application:
- Web Application: http://localhost:7003
- API: http://localhost:7001
- nginx (Production): http://localhost
-
Build the solution:
dotnet build
-
Set up the database:
cd src/InsightLearn.Api dotnet ef database update --project ../InsightLearn.Infrastructure -
Run the API:
cd src/InsightLearn.Api dotnet run -
Run the Web application:
cd src/InsightLearn.Web dotnet run
├── src/
│ ├── InsightLearn.Core/ # Domain entities and interfaces
│ ├── InsightLearn.Application/ # Business logic and services
│ ├── InsightLearn.Infrastructure/ # Data access and external services
│ ├── InsightLearn.Api/ # REST API controllers
│ └── InsightLearn.Web/ # Blazor Server application
├── docker-compose.yml # Docker services configuration
├── nginx.conf # nginx configuration
└── README.md # This file
Key configuration options in .env:
DB_CONNECTION_STRING- SQL Server connection stringREDIS_CONNECTION_STRING- Redis connection stringJWT_SECRET_KEY- JWT signing keyGOOGLE_CLIENT_ID- Google OAuth client IDGOOGLE_CLIENT_SECRET- Google OAuth client secret
Create new migration:
cd src/InsightLearn.Infrastructure
dotnet ef migrations add MigrationName --startup-project ../InsightLearn.ApiApply migrations:
cd src/InsightLearn.Api
dotnet ef database update --project ../InsightLearn.InfrastructureRun all tests:
dotnet testRun with coverage:
dotnet test --collect:"XPlat Code Coverage"- JWT-based authentication for API endpoints
- Role-based authorization (Administrator, Instructor, Student, Moderator)
- Google OAuth integration for external authentication
- HTTPS enforcement in production
- Comprehensive input validation and SQL injection prevention
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
For support and questions, please open an issue in the GitHub repository.