A comprehensive full-stack school management application built with Angular and .NET Core, featuring real-time exam functionality, user management, and course administration.
πΊ Watch Project Demo - Complete walkthrough of all features and functionality
- Dual Role System: Separate dashboards for Teachers (Admin) and Students
- Secure Login: Encrypted password storage with role-based access control
- Route Guards: Protected routes with automatic redirection based on user roles
- Session Management: Persistent login with localStorage
- Dashboard: Modern, responsive admin dashboard with quick actions
- Department Management: Create and organize academic departments
- Course Management: Set up courses, schedules, and student enrollments
- Student Management: View and manage student records
- Exam Creation: Create exams with customizable duration and pass points
- Question Management: Add multiple-choice questions to exams
- Real-time Exam Control: Start/stop exams with live timer functionality
- Student Dashboard: Personalized dashboard for enrolled courses
- Course Enrollment: View assigned courses and schedules
- Exam Taking: Interactive exam interface with real-time timer
- Results View: View exam results and performance analytics
- Progress Tracking: Monitor academic progress across courses
- Timed Exams: Configurable exam duration with real-time countdown
- Multiple Choice Questions: Support for A, B, C, D, E choice options
- Automatic Grading: Instant score calculation and pass/fail determination
- Answer Tracking: Detailed tracking of student answers and correct responses
- Real-time Updates: Live exam status updates using SignalR
- Department Organization: Hierarchical department structure
- Course Scheduling: Day and time-based course scheduling
- Student-Course Relationships: Many-to-many enrollment system
- Teacher Assignment: Course-teacher relationship management
- Angular 17: Modern TypeScript framework
- PrimeNG 17: Professional UI component library
- PrimeFlex: CSS utility framework
- SignalR Client: Real-time communication
- RxJS: Reactive programming
- Chart.js: Data visualization
- FullCalendar: Calendar integration
- .NET 8.0: Latest .NET framework
- ASP.NET Core Web API: RESTful API development
- Entity Framework Core 6.0: ORM with SQL Server
- AutoMapper: Object-to-object mapping
- SignalR: Real-time bidirectional communication
- Swagger/OpenAPI: API documentation
- SQL Server: Relational database management
- Entity Framework Migrations: Database version control
- Visual Studio: IDE for backend development
- Angular CLI: Command-line interface for Angular
- Git: Version control
- Node.js (v16 or higher)
- .NET 8.0 SDK
- SQL Server (LocalDB or full instance)
- Visual Studio 2022 or VS Code
- Angular CLI:
npm install -g @angular/cli
-
Clone the repository
git clone https://github.com/iremalgul/school-management-system.git cd school-management-system -
Backend Setup
cd backend/SchoolManagement dotnet restore dotnet ef database update dotnet runThe API will be available at
https://localhost:7123 -
Frontend Setup
cd frontend npm install ng serveThe application will be available at
http://localhost:4200
Update the connection string in backend/SchoolManagement/appsettings.json:
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=SchoolManagementDb;Trusted_Connection=true;MultipleActiveResultSets=true"
}
}- Department: Academic departments
- Teacher: Faculty members with admin privileges
- Student: Enrolled students
- Course: Academic courses with scheduling
- Exam: Examinations with duration and pass criteria
- ExamQuestion: Multiple-choice questions
- StudentExam: Exam attempts and grades
- StudentAnswer: Individual question responses
- Department β Courses (One-to-Many)
- Teacher β Courses (One-to-Many)
- Course β Students (Many-to-Many)
- Course β Exams (One-to-Many)
- Exam β Questions (One-to-Many)
- Student β Exam Attempts (One-to-Many)
POST /api/auth/login- User authentication
GET /api/department/getAll- Get all departmentsPOST /api/department/insertDepartment- Create departmentPOST /api/department/updateDepartment- Update departmentPOST /api/department/deleteDepartment- Delete department
GET /api/course/getAll- Get all coursesPOST /api/course/insertCourse- Create coursePOST /api/course/updateCourse- Update coursePOST /api/course/deleteCourse- Delete course
GET /api/exam/getExamsByCourseId- Get course examsPOST /api/exam/insertExam- Create examPOST /api/exam/startExam- Start exam timerPOST /api/exam/submitAnswers- Submit exam answersGET /api/exam/getUserExamResults- Get student results
- SignalR Integration: Live countdown timer during exams
- Automatic Submission: Exams auto-submit when time expires
- Real-time Updates: Instant status updates to all connected clients
- Mobile-First: Optimized for all device sizes
- Modern UI: Clean, professional interface using PrimeNG
- Accessibility: WCAG compliant components
- Password Encryption: Secure password storage
- JWT-like Authentication: Token-based session management
- Role-based Access: Granular permission system
- Modern dashboard with quick action cards
- Department, course, and student management
- Real-time exam monitoring
- Clean exam-taking interface
- Real-time timer display
- Results and progress tracking
- Question creation and editing
- Duration and pass point configuration
- Live exam status monitoring
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some 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.
- Δ°rem AlgΓΌl - Initial work - GitHub
- PrimeNG team for the excellent UI component library
- Microsoft for the .NET ecosystem
- Angular team for the robust frontend framework
If you have any questions or need help with the project, please:
- Open an issue on GitHub
- Contact: irem1705@gmail.com
Built with β€οΈ using Angular, .NET Core, and SignalR