Skip to content

Latest commit

ย 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ“š ExamFlow - Advanced Exam Management System

ExamFlow Logo

A comprehensive, modern exam management system for educational institutions

.NET Angular TypeScript License

Features โ€ข Demo โ€ข Installation โ€ข Documentation โ€ข Contributing


๐ŸŒŸ Overview

ExamFlow is a cutting-edge, full-stack exam management platform designed to streamline the entire examination lifecycle for educational institutions. From scheduling to result management, ExamFlow provides an intuitive, role-based interface for administrators, faculty, and students.

Why ExamFlow?

  • ๐ŸŽฏ Centralized Management - Single platform for all exam-related operations
  • ๐Ÿ” Role-Based Access - Secure, customized experiences for Admin, Faculty, and Students
  • ๐Ÿ“ฑ Modern UI/UX - Beautiful, responsive design with smooth animations
  • โšก Real-Time Updates - Live exam status and countdowns
  • ๐ŸŒ Branch-Specific Scheduling - Flexible scheduling per department/branch
  • ๐Ÿ“Š Comprehensive Analytics - Track exam series, schedules, and statistics

โœจ Features

๐Ÿ‘จโ€๐Ÿ’ผ Admin Features

  • Exam Series Management

    • Create and manage exam series (Semester, Midterm, Lab exams)
    • Multi-branch support with flexible scheduling
    • Date range configuration
    • Exam type categorization
  • Branch Scheduling

    • Schedule exams per branch independently
    • Subject-wise scheduling
    • Holiday marking
    • Global time settings
    • Reschedule capabilities
  • Dashboard & Analytics

    • Overview of all exam series
    • Statistics: Total, Semester, Midterm, Lab exams
    • Branch-wise scheduling status
    • Visual progress indicators

๐Ÿ‘จโ€๐ŸŽ“ Student Features

  • My Exams Dashboard

    • View personalized exam schedules
    • Branch-specific exam display
    • Real-time exam status (Upcoming/Ongoing/Completed)
    • Countdown timers for upcoming exams
    • Beautiful timeline interface
  • Exam Details

    • Subject information
    • Date, time, and venue details
    • Status tracking
    • Holiday indicators
  • Profile Management

    • Complete profile setup
    • Department and year information
    • Roll number management

๐Ÿ‘จโ€๐Ÿซ Faculty Features

  • Script Assignment (Coming Soon)
  • Evaluation Monitoring (Coming Soon)
  • Result Management (Coming Soon)

๐Ÿ” Security Features

  • JWT Authentication - Secure token-based authentication
  • Role-Based Authorization - Granular access control (Admin/Faculty/Student)
  • Branch-Based Access Control - Students only see their branch data
  • Profile Completion Guard - Ensures students complete profiles before access
  • Server-Side Validation - Comprehensive backend validation

๐Ÿ—๏ธ Architecture

Tech Stack

Backend

  • Framework: .NET 10 Web API
  • Database: Entity Framework Core with SQL Server
  • Authentication: JWT (JSON Web Tokens)
  • Architecture: Clean Architecture with Repository Pattern
  • API Documentation: RESTful API design

Frontend

  • Framework: Angular 18 (Standalone Components)
  • Rendering: Server-Side Rendering (SSR) with Angular Universal
  • Styling: Custom CSS with Bootstrap Icons
  • State Management: RxJS Observables
  • HTTP Client: Angular HttpClient with interceptors

Project Structure

ExamFlow/
โ”œโ”€โ”€ Backend/
โ”‚   โ”œโ”€โ”€ Controllers/           # API Controllers
โ”‚   โ”‚   โ”œโ”€โ”€ AuthController.cs
โ”‚   โ”‚   โ”œโ”€โ”€ ExamsController.cs
โ”‚   โ”‚   โ””โ”€โ”€ StudentProfileController.cs
โ”‚   โ”œโ”€โ”€ Services/              # Business Logic
โ”‚   โ”‚   โ”œโ”€โ”€ Interfaces/
โ”‚   โ”‚   โ””โ”€โ”€ Implementations/
โ”‚   โ”œโ”€โ”€ Models/                # Domain Models
โ”‚   โ”œโ”€โ”€ Entities/              # Database Context
โ”‚   โ”œโ”€โ”€ DTO/                   # Data Transfer Objects
โ”‚   โ””โ”€โ”€ Program.cs             # Application Entry Point
โ”‚
โ”œโ”€โ”€ Frontend/
โ”‚   โ””โ”€โ”€ src/
โ”‚       โ””โ”€โ”€ app/
โ”‚           โ”œโ”€โ”€ admin/         # Admin Module
โ”‚           โ”‚   โ”œโ”€โ”€ manage-exams/
โ”‚           โ”‚   โ”œโ”€โ”€ exam-series-form/
โ”‚           โ”‚   โ”œโ”€โ”€ branch-schedule-list/
โ”‚           โ”‚   โ””โ”€โ”€ branch-exam-scheduler/
โ”‚           โ”œโ”€โ”€ student/       # Student Module
โ”‚           โ”‚   โ”œโ”€โ”€ exams/
โ”‚           โ”‚   โ”œโ”€โ”€ dashboard/
โ”‚           โ”‚   โ””โ”€โ”€ profile/
โ”‚           โ”œโ”€โ”€ faculty/       # Faculty Module
โ”‚           โ”œโ”€โ”€ auth/          # Authentication
โ”‚           โ”œโ”€โ”€ services/      # Shared Services
โ”‚           โ””โ”€โ”€ guards/        # Route Guards
โ”‚
โ””โ”€โ”€ Documentation/             # API & User Documentation

๐Ÿš€ Installation

Prerequisites

Backend Setup

  1. Clone the repository

    git clone https://github.com/Vignesh777777/ExamFlow.git
    cd ExamFlow
  2. Configure Database Connection

    Update appsettings.json with your SQL Server connection string:

    {
      "ConnectionStrings": {
        "DefaultConnection": "Server=localhost;Database=ExamFlowDb;Trusted_Connection=True;TrustServerCertificate=True"
      }
    }
  3. Run Database Migrations

    dotnet ef database update
  4. Run the Backend API

    dotnet run

    The API will be available at http://localhost:5275

Frontend Setup

  1. Navigate to Frontend directory

    cd Frontend
  2. Install Dependencies

    npm install
  3. Configure API Endpoint (if needed)

    Update the API URL in src/app/services/exam.service.ts:

    private apiUrl = 'http://localhost:5275/api/examseries';
  4. Run the Development Server

    npm start

    The application will be available at http://localhost:4200

Initial Setup

  1. Create Admin Account

    Use the registration endpoint or seed data to create an admin user:

    POST /api/auth/register
    {
      "userId": "admin001",
      "fullName": "Admin User",
      "email": "admin@examflow.com",
      "password": "Admin@123",
      "role": "Admin"
    }
  2. Login

    POST /api/auth/login
    {
      "userId": "admin001",
      "password": "Admin@123"
    }

๐Ÿ“– Usage

Admin Workflow

  1. Create Exam Series

    • Navigate to "Manage Exams"
    • Click "Create New Exam Series"
    • Fill in details (Name, Type, Year, Branches, Date Range)
    • Submit
  2. Schedule Exams for Branches

    • Select an exam series
    • Click "Schedule Exams"
    • Choose a branch
    • Set global exam timings
    • Assign subjects to dates
    • Mark holidays
    • Save schedule
  3. View Summary

    • Access comprehensive exam series summary
    • View all scheduled exams across branches
    • Monitor scheduling completion status

Student Workflow

  1. Complete Profile (First-time users)

    • Enter Roll Number
    • Select Department (Branch)
    • Select Year and Section
  2. View Exams

    • Navigate to "My Exams"
    • View all exam series for your branch
    • Click on a series to see detailed timeline
    • Check exam dates, times, and status
    • See countdown for upcoming exams

๐ŸŽจ UI Highlights

Modern Design Features

  • Gradient-Based Theme - Purple to violet gradients (#667eea โ†’ #764ba2)
  • Card-Based Layouts - Elevated cards with soft shadows
  • Timeline Interface - Visual timeline for exam schedules
  • Status Indicators - Color-coded badges (Upcoming/Ongoing/Completed)
  • Smooth Animations - fadeInUp, pulse, and glow effects
  • Responsive Design - Mobile-first approach
  • Glassmorphism Effects - Modern backdrop blur on badges

Components Showcase

  • Manage Exams: Grid of exam series cards with statistics
  • Exam Scheduler: Interactive table with subject dropdowns and holiday toggles
  • Student Exams: Beautiful timeline with status markers
  • Branch Schedule List: Card-based branch overview with progress indicators

๐Ÿ”Œ API Documentation

Authentication Endpoints

Method Endpoint Description Auth Required
POST /api/auth/register Register new user โŒ
POST /api/auth/login User login โŒ

Exam Series Endpoints (Admin)

Method Endpoint Description Auth Required
POST /api/examseries Create exam series โœ… Admin
GET /api/examseries Get all exam series โœ… Admin
GET /api/examseries/{id} Get exam series by ID โœ… Admin
GET /api/examseries/{id}/branches Get branch statuses โœ… Admin
GET /api/examseries/{id}/branches/{branch}/dates Get available dates โœ… Admin
POST /api/examseries/{id}/branches/{branch}/schedule Schedule exams โœ… Admin
GET /api/examseries/{id}/summary Get exam summary โœ… Admin

Student Endpoints

Method Endpoint Description Auth Required
GET /api/examseries/student/{branch} Get student exam series โœ… Student
GET /api/examseries/{id}/student/{branch}/exams Get student exams โœ… Student

Public Endpoints

Method Endpoint Description Auth Required
GET /api/examseries/branches Get all branches โŒ
GET /api/examseries/branches/{branch}/subjects Get branch subjects โœ… Admin

๐Ÿ“Š Database Schema

Core Entities

ExamSeries

  • Id (Guid)
  • Name (string)
  • ExamType (enum: Semester, Midterm, InternalLab, ExternalLab)
  • Year (int)
  • Branches (List)
  • StartDate (DateOnly)
  • EndDate (DateOnly)
  • CreatedBy (string)
  • CreatedAt (DateTime)

Exam

  • Id (Guid)
  • ExamSeriesId (Guid)
  • Subject (string)
  • ExamDate (DateOnly)
  • StartTime (TimeOnly)
  • EndTime (TimeOnly)
  • Branch (string)
  • Year (int)
  • IsHoliday (bool)

User

  • Id (int)
  • UserId (string)
  • FullName (string)
  • Email (string)
  • PasswordHash (string)
  • Role (string: Admin/Faculty/Student)
  • IsActive (bool)

StudentProfile

  • Id (int)
  • StudentId (int)
  • RollNumber (string)
  • Department (string)
  • Year (string)
  • Section (string)

๐Ÿ› ๏ธ Development

Running in Development Mode

Backend (Hot Reload):

dotnet watch run

Frontend (Live Reload):

npm start
# or
ng serve --open

Building for Production

Backend:

dotnet publish -c Release -o ./publish

Frontend:

npm run build
# Output in: dist/frontend/browser

Running Tests

Backend:

dotnet test

Frontend:

npm run test

๐ŸŽฏ Roadmap

Phase 1 - Exam Management โœ… (Completed)

  • User authentication and authorization
  • Admin exam series creation
  • Branch-wise exam scheduling
  • Student exam viewing
  • Profile management
  • Real-time status updates

Phase 2 - Enhanced Features ๐Ÿšง (In Progress)

  • Hall ticket generation
  • Seating arrangement system
  • Exam notification system
  • Calendar integration
  • PDF export functionality

Phase 3 - Faculty Features ๐Ÿ“‹ (Planned)

  • Script assignment workflow
  • Evaluation tracking
  • Result entry interface
  • Analytics dashboard

Phase 4 - Advanced Features ๐Ÿ”ฎ (Future)

  • Mobile application (React Native)
  • AI-powered exam scheduling
  • Automated conflict detection
  • Multi-language support
  • Advanced reporting and analytics
  • Integration with LMS platforms

๐Ÿค Contributing

We welcome contributions! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch
    git checkout -b feature/amazing-feature
  3. Commit your changes
    git commit -m 'Add some amazing feature'
  4. Push to the branch
    git push origin feature/amazing-feature
  5. Open a Pull Request

Coding Standards

  • Follow C# coding conventions for backend
  • Use Angular style guide for frontend
  • Write meaningful commit messages
  • Add comments for complex logic
  • Update documentation for new features

๐Ÿ“ License

This project is licensed under the MIT License - see the LICENSE file for details.


๐Ÿ‘ฅ Authors


๐Ÿ™ Acknowledgments

  • Angular team for the amazing framework
  • Microsoft for .NET and Entity Framework
  • Bootstrap Icons for the icon library
  • The open-source community for inspiration

๐Ÿ“ž Support

For support, email support@examflow.com or open an issue in the GitHub repository.


๐Ÿ“ธ Screenshots

Admin Dashboard

Admin Dashboard

Exam Scheduler

Exam Scheduler

Student Exams View

Student Exams


๐Ÿ”— Links


Made with โค๏ธ for Educational Institutions

โญ Star this repo if you find it helpful!

Report Bug โ€ข Request Feature โ€ข Documentation

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages