Overview

K-Vault is a modern web application designed to help KAIST students access and manage course resources, including past exams, lecture slides, textbooks, and assignments. The platform features role-based access control, secure file storage, and an intuitive user interface.

Features

  • 🔐 KAIST Email Authentication - Secure login with @kaist.ac.kr email validation
  • 📚 Course Resource Management - Browse and filter resources by course, semester, and type
  • 📄 File Upload/Download - Support for large files with chunked uploads (up to 50MB per chunk)
  • 👥 Role-Based Access - Student and Admin roles with appropriate permissions
  • 🔍 Advanced Search - Search across resources, courses, departments, and professors
  • 📁 Course Catalog - Hierarchical view of courses and resources (Google Drive-style)
  • 🎨 Modern UI - Responsive design with dark mode support
  • ⚡ Real-Time Progress - Upload and download progress tracking

Tech Stack

  • Frontend: Next.js 14 (App Router), TypeScript, TailwindCSS, shadcn/ui
  • Backend: Supabase (PostgreSQL, Authentication, Storage)
  • State Management: React Query
  • Hosting: Vercel (Frontend), Supabase Cloud (Backend)

Security

  • Row Level Security (RLS) enabled on all database tables
  • KAIST email validation on authentication
  • Signed URLs for secure file downloads (1-hour expiration)
  • Role-based access control (Student/Admin)
  • Private storage bucket with authenticated access only

File Upload Limits

  • Single upload: 40MB (safety margin for Supabase's 50MB limit)
  • Chunked uploads: Files larger than 40MB are automatically split into 40MB chunks
  • Storage: Managed by Supabase (1GB on free tier)

Contributing

Contributions are welcome! Please feel free to submit a Pull Request in the repository.