Skip to content

kursattoz/HorusEye

Repository files navigation

HorusEye Icon
HorusEye

AI-Powered Exam Proctoring & Monitoring System

Next.js TypeScript Supabase Tailwind CSS


Overview

HorusEye is an AI-driven exam proctoring platform developed as a Senior Project at TED University (TEDU) — Department of Computer Engineering (CENG 491). The system uses real-time camera analysis to detect suspicious behaviors during online exams and provides a comprehensive dashboard for proctors and administrators to review results, manage files, and collect feedback.


Features

🔐 Authentication & Access Control

  • Email/password login with role-based access (admin, supervisor, assistant)
  • Force password change on first login — users cannot access any protected page until they set a new password
  • Password strength validation with real-time indicators
  • Secure logout available even during forced password change flow

📊 Dashboard

  • Real-time stat cards: Files, Comments, Users, Total Exams
  • Suspicious Activity Over Time — interactive area chart showing AI-detected anomalies (head turning, gaze deviation, face lost) per 5-minute exam interval
  • Behavior Risk Profile — radar chart comparing high-risk vs low-risk student cohorts by behavior category

📁 File Management

  • Upload, manage, and publish project/exam documents (admin only)
  • Public document hub accessible from the login page — anyone can browse and preview files
  • PDF viewer with page navigation, download, and external link support

💬 Feedback System

  • Internal feedback: Authenticated users can leave comments on specific files
  • Public feedback: Anyone (e.g. supervisors, instructors) can submit feedback from the login page without an account
    • Name required, 10–1000 character limit
    • HTML/code/SQL injection blocked
    • IP-based rate limiting (5 submissions/hour)
    • Visible only to authenticated users under a separate "Public" tab

👥 Team Management

  • View, activate/deactivate, and manage user accounts (admin only)
  • Role assignment and user profile management

🎨 Appearance & Theming

  • Light / Dark / System theme with smooth View Transition API crossfade
  • Accent color themes: Red (default), Pink, Orange, Blue — per-user, persisted in database
  • Ghost-glide sliding pill toggle animation for theme switching
  • HorusEye SVG favicon and logo throughout the UI, theme/dark-mode aware

Tech Stack

Layer Technology
Framework Next.js 15 (App Router)
Language TypeScript 5
Styling Tailwind CSS v4 + shadcn/ui
Database & Auth Supabase (PostgreSQL + RLS)
Charts Recharts via shadcn/ui chart primitives
Theme next-themes + CSS custom properties (OKLCH)
Icons Lucide React

Project Structure

HorusEye/
├── portal/                     # Next.js web application
│   ├── app/
│   │   ├── (auth)/             # Login, change-password pages
│   │   ├── (protected)/        # Authenticated pages
│   │   │   ├── dashboard/      # Main dashboard
│   │   │   ├── feedback/       # File feedback viewer
│   │   │   ├── files/          # File management (admin)
│   │   │   ├── team/           # Team management (admin)
│   │   │   ├── settings/       # User settings & appearance
│   │   │   └── notifications/
│   │   ├── api/                # API routes
│   │   └── actions/            # Server actions (auth, etc.)
│   ├── components/
│   │   ├── layout/             # AppShell, Sidebar, Topbar
│   │   ├── dashboard/          # Charts, feedback, files, team
│   │   ├── auth/               # Login, change-password forms
│   │   └── settings/           # Appearance, profile tabs
│   └── constants/routes.ts     # Centralized route constants
├── ai-service/                 # AI proctoring backend (Python)
├── PRD/                        # Product Requirements Documents
└── SVG/                        # Brand assets

Getting Started

Prerequisites

Installation

git clone https://github.com/kursatozturk/HorusEye.git
cd HorusEye/portal
npm install

Environment Variables

Create portal/.env.local:

NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_anon_key
SUPABASE_SERVICE_ROLE_KEY=your_service_role_key

Run

cd portal
npm run dev

Open http://localhost:3000.


Routes

Route Access Description
/ Public Home / redirect
/login Public Login page with public document hub
/change-password Auth (forced) First-login password change
/dashboard Admin Stats + analytics charts
/feedback All roles File feedback viewer
/files Admin File management
/team Admin Team management
/settings All roles Profile & appearance settings

Academic Context

Course: CENG 491 — Senior Project I Institution: TED University, Department of Computer Engineering Team: HorusEye Development Team


Built with ❤️ at TED University

About

AI-powered online exam proctoring platform — real-time camera analysis flags suspicious behavior (head-turning, gaze deviation, face-lost) and surfaces it on a proctor dashboard for review. TEDU Computer Engineering senior project. Built with Next.js, TypeScript & Supabase.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors