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.
- 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
- 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
- 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
- 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
- View, activate/deactivate, and manage user accounts (admin only)
- Role assignment and user profile management
- 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
| 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 |
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
- Node.js 18+
- A Supabase project
git clone https://github.com/kursatozturk/HorusEye.git
cd HorusEye/portal
npm installCreate 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_keycd portal
npm run devOpen http://localhost:3000.
| 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 |
Course: CENG 491 — Senior Project I Institution: TED University, Department of Computer Engineering Team: HorusEye Development Team