A robust, feature-rich E-Learning platform built with ASP.NET Core, implementing clean architecture principles and modern development practices.
-
Course Management
- Structured course creation and organization
- Module-based content organization
- Lesson management
- Quiz and assessment system
-
User Management
- Secure user authentication using JWT
- Role-based authorization
- Student enrollment tracking
- Progress monitoring
-
Assessment System
- Quiz creation and management
- Multiple question types support
- Student attempt tracking
- Progress analytics
-
Security Features
- JWT-based authentication
- API rate limiting
- CORS protection
- Secure headers configuration
The project follows Clean/Onion Architecture with the following structure:
Server/
├── api/ # API entry point and configuration
├── E-Learning.Presentation/# Controllers and presentation logic
├── Contracts/ # Interfaces and contracts
├── Entities/ # Domain models
├── Service/ # Business logic implementation
├── Repository/ # Data access layer
└── Shared/ # Common utilities
- Backend: ASP.NET Core
- Database: SQL Server
- Authentication: JWT (JSON Web Tokens)
- Documentation: Swagger/OpenAPI
- Containerization: Docker
- API Testing: Postman collections included
- Frontend:
- Next.js 14 with TypeScript
- shadcn/ui components
- Tailwind CSS
- React Query for state management
- React Hook Form for form handling
- Zod for schema validation
E-Learning-Platform/
├── Server/ # Backend API
│ ├── api/ # API entry point and configuration
│ ├── E-Learning.Presentation/
│ ├── Contracts/
│ ├── Entities/
│ ├── Service/
│ ├── Repository/
│ └── Shared/
│
├── client/ # Frontend Application
│ ├── app/ # Next.js app directory
│ ├── components/ # Reusable UI components
│ │ ├── ui/ # shadcn components
│ │ └── custom/ # Custom components
│ ├── lib/ # Utility functions
│ ├── hooks/ # Custom React hooks
│ ├── types/ # TypeScript definitions
│ ├── styles/ # Global styles
│ └── features/ # Feature-based components
│ ├── auth/ # Authentication
│ ├── courses/ # Course management
│ ├── lessons/ # Lesson components
│ └── quiz/ # Quiz components
│
└── postman/ # API documentation
- .NET 6.0 or later
- Docker (optional)
- SQL Server
- Visual Studio/VS Code
- Clone the repository:
git clone [repository-url]- Navigate to the Server directory:
cd Server- Run using Docker:
docker-compose upOr run locally:
dotnet restore
dotnet run --project api- Update the connection string in
appsettings.json - Configure JWT settings in configuration
- Set up CORS policies as needed
API documentation is available through Swagger UI when running the application:
- Local:
https://localhost:[port]/swagger
- JWT authentication for secure API access
- Rate limiting to prevent abuse
- CORS policies configured
- Proper security headers
- Postman collections available in the
/postmandirectory - Unit tests (TBD)
- Integration tests (TBD)
-
Entities
- Course
- Module
- Lesson
- Quiz
- Student
- User
- Enrollment
-
Features
- Course management
- Student enrollment
- Progress tracking
- Quiz assessment
- User authentication
- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Open a Pull Request
[License Type] - See LICENSE.md for details
[Contact Information or Support Instructions]
- Navigate to the client directory:
cd client- Install dependencies:
npm install- Set up shadcn/ui:
npx shadcn-ui@latest init- Start the development server:
npm run dev-
Modern UI Components
- Responsive design
- Dark/Light mode
- Accessible components
- Custom animations
-
Authentication
- JWT-based auth flow
- Protected routes
- Persistent sessions
-
Course Experience
- Interactive lesson viewer
- Progress tracking
- Real-time quiz taking
- Course navigation
-
State Management
- React Query for server state
- Context for global state
- Optimistic updates
-
Performance
- Server-side rendering
- Image optimization
- Code splitting
- Lazy loading
Create a .env.local file in the client directory:
NEXT_PUBLIC_API_URL=http://localhost:5000
NEXT_PUBLIC_AUTH_URL=http://localhost:5000/auth